This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git

commit dabc951cd24e13f10966c76603829eae60d7e415
Author: Willem Jiang <jiangni...@huawei.com>
AuthorDate: Thu May 10 16:51:42 2018 +0800

    SCB-571 Decouple OmegaContext in omega-transport-resttemplate
---
 .../omega/transport/resttemplate/RestTemplateConfig.java   |  3 ++-
 .../TransactionClientHttpRequestInterceptor.java           |  3 ++-
 .../resttemplate/TransactionHandlerInterceptor.java        | 14 ++++++++------
 .../saga/omega/transport/resttemplate/WebConfig.java       | 12 +++++++++++-
 4 files changed, 23 insertions(+), 9 deletions(-)

diff --git 
a/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java
 
b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java
index e9aac31..98bf70b 100644
--- 
a/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java
+++ 
b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java
@@ -20,6 +20,7 @@ package 
org.apache.servicecomb.saga.omega.transport.resttemplate;
 
 import java.util.List;
 
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.client.ClientHttpRequestInterceptor;
@@ -31,7 +32,7 @@ import org.apache.servicecomb.saga.omega.context.OmegaContext;
 public class RestTemplateConfig {
 
   @Bean
-  public RestTemplate restTemplate(OmegaContext context) {
+  public RestTemplate restTemplate(@Autowired(required=false) OmegaContext 
context) {
     RestTemplate template = new RestTemplate();
     List<ClientHttpRequestInterceptor> interceptors = 
template.getInterceptors();
     interceptors.add(new TransactionClientHttpRequestInterceptor(context));
diff --git 
a/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java
 
b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java
index 88ea564..958be54 100644
--- 
a/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java
+++ 
b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java
@@ -27,6 +27,7 @@ import java.lang.invoke.MethodHandles;
 import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpRequest;
 import org.springframework.http.client.ClientHttpRequestExecution;
 import org.springframework.http.client.ClientHttpRequestInterceptor;
@@ -44,7 +45,7 @@ class TransactionClientHttpRequestInterceptor implements 
ClientHttpRequestInterc
   public ClientHttpResponse intercept(HttpRequest request, byte[] body,
       ClientHttpRequestExecution execution) throws IOException {
 
-    if (omegaContext.globalTxId() != null) {
+    if (omegaContext!= null && omegaContext.globalTxId() != null) {
       request.getHeaders().add(GLOBAL_TX_ID_KEY, omegaContext.globalTxId());
       request.getHeaders().add(LOCAL_TX_ID_KEY, omegaContext.localTxId());
 
diff --git 
a/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java
 
b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java
index 9b003f8..50b8a0e 100644
--- 
a/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java
+++ 
b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java
@@ -46,12 +46,14 @@ class TransactionHandlerInterceptor implements 
HandlerInterceptor {
 
   @Override
   public boolean preHandle(HttpServletRequest request, HttpServletResponse 
response, Object handler) {
-    String globalTxId = request.getHeader(GLOBAL_TX_ID_KEY);
-    if (globalTxId == null) {
-      LOG.debug("no such header: {}", GLOBAL_TX_ID_KEY);
-    } else {
-      omegaContext.setGlobalTxId(globalTxId);
-      omegaContext.setLocalTxId(request.getHeader(LOCAL_TX_ID_KEY));
+    if (omegaContext != null) {
+      String globalTxId = request.getHeader(GLOBAL_TX_ID_KEY);
+      if (globalTxId == null) {
+        LOG.debug("no such header: {}", GLOBAL_TX_ID_KEY);
+      } else {
+        omegaContext.setGlobalTxId(globalTxId);
+        omegaContext.setLocalTxId(request.getHeader(LOCAL_TX_ID_KEY));
+      }
     }
     return true;
   }
diff --git 
a/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/WebConfig.java
 
b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/WebConfig.java
index 255d20b..3218d47 100644
--- 
a/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/WebConfig.java
+++ 
b/omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/saga/omega/transport/resttemplate/WebConfig.java
@@ -20,7 +20,11 @@
 
 package org.apache.servicecomb.saga.omega.transport.resttemplate;
 
+import java.lang.invoke.MethodHandles;
+
 import org.apache.servicecomb.saga.omega.context.OmegaContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@@ -33,13 +37,19 @@ public class WebConfig extends WebMvcConfigurerAdapter {
 
   private final OmegaContext omegaContext;
 
+  private static final Logger LOG = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+
   @Autowired
-  public WebConfig(OmegaContext omegaContext) {
+  public WebConfig(@Autowired(required=false) OmegaContext omegaContext) {
     this.omegaContext = omegaContext;
   }
 
   @Override
   public void addInterceptors(InterceptorRegistry registry) {
+    if (omegaContext == null) {
+      LOG.info("The OmegaContext is not injected, The transaction handler is 
disabled");
+    }
     registry.addInterceptor(new TransactionHandlerInterceptor(omegaContext));
   }
 }

-- 
To stop receiving notification emails like this one, please contact
ningji...@apache.org.

Reply via email to