You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/03/30 01:26:15 UTC

[servicecomb-java-chassis] 02/02: [SCB-1832] Edge will lose public request headers:fixed as reviewed

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

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit 9ed556dbf3c39138e04345b5ba851e5a2f2d2a81
Author: heyile <25...@qq.com>
AuthorDate: Fri Mar 27 20:49:01 2020 +0800

    [SCB-1832] Edge will lose public request headers:fixed as reviewed
---
 ...tFilter.java => EdgeAddHeaderClientFilter.java} | 26 +++++++++++-----------
 ...servicecomb.common.rest.filter.HttpClientFilter |  2 +-
 .../it-edge/src/main/resources/microservice.yaml   |  8 ++++---
 3 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/DefaultEdgeClientFilter.java b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderClientFilter.java
similarity index 77%
rename from edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/DefaultEdgeClientFilter.java
rename to edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderClientFilter.java
index 22d4f06..d461d3c 100644
--- a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/DefaultEdgeClientFilter.java
+++ b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderClientFilter.java
@@ -32,34 +32,34 @@ import org.slf4j.LoggerFactory;
 import com.netflix.config.ConcurrentCompositeConfiguration;
 import com.netflix.config.DynamicPropertyFactory;
 
-public class DefaultEdgeClientFilter implements HttpClientFilter {
-  private static final Logger LOGGER = LoggerFactory.getLogger(DefaultEdgeClientFilter.class);
+public class EdgeAddHeaderClientFilter implements HttpClientFilter {
+  private static final Logger LOGGER = LoggerFactory.getLogger(EdgeAddHeaderClientFilter.class);
 
-  private static final String KEY_ENABLED = "servicecomb.http.dispatcher.edge.public.enabled";
+  private static final String KEY_ENABLED = "servicecomb.edge.filter.addHeader.enabled";
 
-  private static final String KEY_HEADERS = "servicecomb.http.dispatcher.edge.public.headers";
+  private static final String KEY_HEADERS = "servicecomb.edge.filter.addHeader.allowedHeaders";
 
-  private static boolean ENABLED = false;
+  private List<String> publicHeaders = new ArrayList<>();
 
-  private static List<String> PUBLIC_HEADER = new ArrayList<>();
+  private boolean enabled = false;
 
-  static {
+  public EdgeAddHeaderClientFilter() {
     init();
     ((ConcurrentCompositeConfiguration) DynamicPropertyFactory
         .getBackingConfigurationSource()).addConfigurationListener(event -> {
       if (event.getPropertyName().startsWith(KEY_HEADERS) || event.getPropertyName().startsWith(KEY_ENABLED)) {
-        LOGGER.info("Public header config have been changed. Event=" + event.getType());
+        LOGGER.info("Public headers config have been changed. Event=" + event.getType());
         init();
       }
     });
   }
 
-  private static void init() {
-    ENABLED = DynamicPropertyFactory.getInstance().getBooleanProperty(KEY_ENABLED, false).get();
+  private void init() {
+    enabled = DynamicPropertyFactory.getInstance().getBooleanProperty(KEY_ENABLED, false).get();
     String publicHeaderStr = DynamicPropertyFactory.getInstance().getStringProperty(KEY_HEADERS, "").get();
     String[] split = publicHeaderStr.split(",");
     if (split.length > 0) {
-      PUBLIC_HEADER = Arrays.asList(split);
+      publicHeaders = Arrays.asList(split);
     }
   }
 
@@ -70,13 +70,13 @@ public class DefaultEdgeClientFilter implements HttpClientFilter {
 
   @Override
   public boolean enabled() {
-    return ENABLED;
+    return enabled;
   }
 
   @Override
   public void beforeSendRequest(Invocation invocation, HttpServletRequestEx requestEx) {
     HttpServletRequestEx oldRequest = invocation.getRequestEx();
-    PUBLIC_HEADER.forEach(key -> {
+    publicHeaders.forEach(key -> {
       if (StringUtils.isEmpty(oldRequest.getHeader(key))) {
         return;
       }
diff --git a/edge/edge-core/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter b/edge/edge-core/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
index bfdfd2a..c07a4b7 100644
--- a/edge/edge-core/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
+++ b/edge/edge-core/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.servicecomb.edge.core.DefaultEdgeClientFilter
+org.apache.servicecomb.edge.core.EdgeAddHeaderClientFilter
diff --git a/integration-tests/it-edge/src/main/resources/microservice.yaml b/integration-tests/it-edge/src/main/resources/microservice.yaml
index fcf649e..81fad60 100644
--- a/integration-tests/it-edge/src/main/resources/microservice.yaml
+++ b/integration-tests/it-edge/src/main/resources/microservice.yaml
@@ -158,12 +158,14 @@ servicecomb:
         transport: rest
       edgePublicHeadersSpringMVCSchema:
         transport: rest
+  edge:
+    filter:
+      addHeader:
+        enabled: true
+        allowedHeaders: external_1,external_2
   http:
     dispatcher:
       edge:
-        public:
-          headers: external_1,external_2
-          enabled: true
         default:
           enabled: true
           prefix: rest