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.