You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/05/10 14:36:29 UTC
[incubator-servicecomb-saga] 01/04: SCB-571 Decouple OmegaContext
in omega-transport-resttemplate
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 <ji...@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
ningjiang@apache.org.