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/02/03 05:56:49 UTC

[incubator-servicecomb-java-chassis] branch master updated (769dc9d -> 153cdeb)

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

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


    from 769dc9d  SCB-260 Clarify original copyright of some files
     new 65216b0  SCB-315 Config Center module can't get config by DynamicPropertyFactory.getInstance().getStringProperty, so has to use ConcurrentCompositeConfiguration
     new d382ead  SCB-315 Config Center module can't get config by DynamicPropertyFactory.getInstance().getStringProperty, so has to use ConcurrentCompositeConfiguration
     new 153cdeb  SCB-315 Config Center module can't get config by DynamicPropertyFactory.getInstance().getStringProperty, so has to use ConcurrentCompositeConfiguration

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../config/client/ConfigCenterClient.java          |  19 +++-
 .../foundation/vertx/AddressResolverConfig.java    | 109 +++++++++++++--------
 .../vertx/TestAddressResolverConfig.java           |  30 +++++-
 3 files changed, 111 insertions(+), 47 deletions(-)

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

[incubator-servicecomb-java-chassis] 01/03: SCB-315 Config Center module can't get config by DynamicPropertyFactory.getInstance().getStringProperty, so has to use ConcurrentCompositeConfiguration

Posted by ni...@apache.org.
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-java-chassis.git

commit 65216b0e2d47322f1797e5cf3b371266cf71e75b
Author: jeho0815 <je...@email.com>
AuthorDate: Fri Feb 2 18:31:00 2018 +0800

    SCB-315 Config Center module can't get config by DynamicPropertyFactory.getInstance().getStringProperty, so has to use ConcurrentCompositeConfiguration
---
 .../config/client/ConfigCenterClient.java          | 19 +++--
 .../foundation/vertx/AddressResolverConfig.java    | 92 +++++++++++++++++-----
 .../vertx/TestAddressResolverConfig.java           | 37 ++++++++-
 3 files changed, 123 insertions(+), 25 deletions(-)

diff --git a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterClient.java b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterClient.java
index 306cf7f..0ca5668 100644
--- a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterClient.java
+++ b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterClient.java
@@ -147,7 +147,9 @@ public class ConfigCenterClient {
           }
         });
         SignRequest signReq = createSignRequest(request.method().toString(),
-            configCenter + URIConst.MEMBERS, new HashMap<>(), null);
+            configCenter + URIConst.MEMBERS,
+            new HashMap<>(),
+            null);
         if (ConfigCenterConfig.INSTANCE.getToken() != null) {
           request.headers().add("X-Auth-Token", ConfigCenterConfig.INSTANCE.getToken());
         }
@@ -159,7 +161,8 @@ public class ConfigCenterClient {
 
   private void deployConfigClient() throws InterruptedException {
     VertxOptions vertxOptions = new VertxOptions();
-    vertxOptions.setAddressResolverOptions(AddressResolverConfig.getAddressResover(SSL_KEY));
+    vertxOptions.setAddressResolverOptions(AddressResolverConfig.getAddressResover(SSL_KEY,
+        ConfigCenterConfig.INSTANCE.getConcurrentCompositeConfiguration()));
     Vertx vertx = VertxUtils.getOrCreateVertxByName("config-center", vertxOptions);
 
     HttpClientOptions httpClientOptions = createHttpClientOptions();
@@ -245,7 +248,9 @@ public class ConfigCenterClient {
         authHeaderProviders.forEach(provider -> authHeaders.putAll(provider.getSignAuthHeaders(
             createSignRequest(null, configCenter + url, headers, null))));
 
-        client.websocket(refreshPort, ipPort.getHostOrIp(), url,
+        client.websocket(refreshPort,
+            ipPort.getHostOrIp(),
+            url,
             new CaseInsensitiveHeaders().addAll(headers)
                 .addAll(authHeaders),
             ws -> {
@@ -284,7 +289,9 @@ public class ConfigCenterClient {
 
     private void startHeartBeatThread(WebSocket ws) {
       heartbeatTask = Executors.newScheduledThreadPool(1);
-      heartbeatTask.scheduleWithFixedDelay(() -> sendHeartbeat(ws), HEARTBEAT_INTERVAL, HEARTBEAT_INTERVAL,
+      heartbeatTask.scheduleWithFixedDelay(() -> sendHeartbeat(ws),
+          HEARTBEAT_INTERVAL,
+          HEARTBEAT_INTERVAL,
           TimeUnit.MILLISECONDS);
     }
 
@@ -338,7 +345,9 @@ public class ConfigCenterClient {
         request.headers().addAll(headers);
         authHeaderProviders.forEach(provider -> request.headers()
             .addAll(provider.getSignAuthHeaders(createSignRequest(request.method().toString(),
-                configcenter + path, headers, null))));
+                configcenter + path,
+                headers,
+                null))));
         request.exceptionHandler(e -> {
           LOGGER.error("config refresh fail {}", e.getMessage());
         });
diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java
index 698178d..08412f1 100644
--- a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java
@@ -20,6 +20,7 @@ package org.apache.servicecomb.foundation.vertx;
 import java.util.Arrays;
 import java.util.List;
 
+import com.netflix.config.ConcurrentCompositeConfiguration;
 import com.netflix.config.DynamicPropertyFactory;
 
 import io.vertx.core.dns.AddressResolverOptions;
@@ -32,58 +33,89 @@ public class AddressResolverConfig {
    * @return AddressResolverOptions
    */
   public static AddressResolverOptions getAddressResover(String tag) {
+    return getAddressResover(tag, null);
+  }
+
+  /**
+   * get the target endpoints with custom address resolve config
+   * @param tag config tag, such as sc.consumer or cc.consumer
+   * @param configSource get config from special config source
+   * @return AddressResolverOptions
+   */
+  public static AddressResolverOptions getAddressResover(String tag, ConcurrentCompositeConfiguration configSource) {
     AddressResolverOptions addressResolverOptions = new AddressResolverOptions();
     addressResolverOptions
-        .setServers(getStringListProperty(AddressResolverOptions.DEFAULT_SEACH_DOMAINS,
+        .setServers(getStringListProperty(configSource,
+            AddressResolverOptions.DEFAULT_SEACH_DOMAINS,
             "addressResolver." + tag + ".servers",
             "addressResolver.servers"));
     addressResolverOptions
-        .setOptResourceEnabled(getBooleanProperty(AddressResolverOptions.DEFAULT_OPT_RESOURCE_ENABLED,
+        .setOptResourceEnabled(getBooleanProperty(configSource,
+            AddressResolverOptions.DEFAULT_OPT_RESOURCE_ENABLED,
             "addressResolver." + tag + ".optResourceEnabled",
             "addressResolver.optResourceEnabled"));
     addressResolverOptions
-        .setCacheMinTimeToLive(getIntProperty(AddressResolverOptions.DEFAULT_CACHE_MIN_TIME_TO_LIVE,
+        .setCacheMinTimeToLive(getIntProperty(configSource,
+            AddressResolverOptions.DEFAULT_CACHE_MIN_TIME_TO_LIVE,
             "addressResolver." + tag + ".cacheMinTimeToLive",
             "addressResolver.cacheMinTimeToLive"));
     addressResolverOptions
-        .setCacheMaxTimeToLive(getIntProperty(AddressResolverOptions.DEFAULT_CACHE_MAX_TIME_TO_LIVE,
+        .setCacheMaxTimeToLive(getIntProperty(configSource,
+            AddressResolverOptions.DEFAULT_CACHE_MAX_TIME_TO_LIVE,
             "addressResolver." + tag + ".cacheMaxTimeToLive",
             "addressResolver.cacheMaxTimeToLive"));
     addressResolverOptions
-        .setCacheNegativeTimeToLive(getIntProperty(AddressResolverOptions.DEFAULT_CACHE_NEGATIVE_TIME_TO_LIVE,
+        .setCacheNegativeTimeToLive(getIntProperty(configSource,
+            AddressResolverOptions.DEFAULT_CACHE_NEGATIVE_TIME_TO_LIVE,
             "addressResolver." + tag + ".cacheNegativeTimeToLive",
             "addressResolver.cacheNegativeTimeToLive"));
     addressResolverOptions
-        .setQueryTimeout(getIntProperty(AddressResolverOptions.DEFAULT_QUERY_TIMEOUT,
+        .setQueryTimeout(getIntProperty(configSource,
+            AddressResolverOptions.DEFAULT_QUERY_TIMEOUT,
             "addressResolver." + tag + ".queryTimeout",
             "addressResolver.queryTimeout"));
     addressResolverOptions
-        .setMaxQueries(getIntProperty(AddressResolverOptions.DEFAULT_MAX_QUERIES,
+        .setMaxQueries(getIntProperty(configSource,
+            AddressResolverOptions.DEFAULT_MAX_QUERIES,
             "addressResolver." + tag + ".maxQueries",
             "addressResolver.maxQueries"));
     addressResolverOptions
-        .setRdFlag(getBooleanProperty(AddressResolverOptions.DEFAULT_RD_FLAG,
+        .setRdFlag(getBooleanProperty(configSource,
+            AddressResolverOptions.DEFAULT_RD_FLAG,
             "addressResolver." + tag + ".rdFlag",
             "addressResolver.rdFlag"));
     addressResolverOptions
-        .setSearchDomains(getStringListProperty(AddressResolverOptions.DEFAULT_SEACH_DOMAINS,
+        .setSearchDomains(getStringListProperty(configSource,
+            AddressResolverOptions.DEFAULT_SEACH_DOMAINS,
             "addressResolver." + tag + ".searchDomains",
             "addressResolver.searchDomains"));
     addressResolverOptions
-        .setNdots(getIntProperty(AddressResolverOptions.DEFAULT_CACHE_MIN_TIME_TO_LIVE,
+        .setNdots(getIntProperty(configSource,
+            AddressResolverOptions.DEFAULT_CACHE_MIN_TIME_TO_LIVE,
             "addressResolver." + tag + ".ndots",
             "addressResolver.ndots"));
     addressResolverOptions
-        .setRotateServers(getBooleanProperty(AddressResolverOptions.DEFAULT_ROTATE_SERVERS,
+        .setRotateServers(getBooleanProperty(configSource,
+            AddressResolverOptions.DEFAULT_ROTATE_SERVERS,
             "addressResolver." + tag + ".rotateServers",
             "addressResolver.rotateServers"));
     return addressResolverOptions;
   }
 
-  private static List<String> getStringListProperty(List<String> defaultValue, String... keys) {
+  private static List<String> getStringListProperty(ConcurrentCompositeConfiguration configSource,
+      List<String> defaultValue, String... keys) {
     String property = null;
     for (String key : keys) {
-      property = DynamicPropertyFactory.getInstance().getStringProperty(key, null).get();
+      if (configSource != null) {
+        Object v = configSource.getProperty(key);
+        if (List.class.isInstance(v)) {
+          property = listToString(((List<?>) v).toArray());
+        } else {
+          property = (String) configSource.getProperty(key);
+        }
+      } else {
+        property = DynamicPropertyFactory.getInstance().getStringProperty(key, null).get();
+      }
       if (property != null) {
         break;
       }
@@ -95,14 +127,18 @@ public class AddressResolverConfig {
     }
   }
 
-  private static int getIntProperty(int defaultValue, String... keys) {
+  private static int getIntProperty(ConcurrentCompositeConfiguration configSource, int defaultValue, String... keys) {
     int property = -1;
     for (String key : keys) {
-      property = DynamicPropertyFactory.getInstance().getIntProperty(key, -1).get();
-      if (property > 0) {
-        break;
+      if (configSource != null) {
+        if (configSource.getProperty(key) != null) {
+          return configSource.getInt(key);
+        }
+      } else {
+        property = DynamicPropertyFactory.getInstance().getIntProperty(key, -1).get();
       }
     }
+
     if (property > 0) {
       return property;
     } else {
@@ -110,18 +146,36 @@ public class AddressResolverConfig {
     }
   }
 
-  private static boolean getBooleanProperty(boolean defaultValue, String... keys) {
+  private static boolean getBooleanProperty(ConcurrentCompositeConfiguration configSource, boolean defaultValue,
+      String... keys) {
     String property = null;
     for (String key : keys) {
-      property = DynamicPropertyFactory.getInstance().getStringProperty(key, null).get();
+      if (configSource != null) {
+        if (configSource.getProperty(key) != null) {
+          return configSource.getBoolean(key);
+        }
+      } else {
+        property = DynamicPropertyFactory.getInstance().getStringProperty(key, null).get();
+      }
       if (property != null) {
         break;
       }
     }
+
     if (property != null) {
       return Boolean.parseBoolean(property);
     } else {
       return defaultValue;
     }
   }
+
+  private static String listToString(Object[] lists) {
+    StringBuilder sb = new StringBuilder();
+    sb.append(lists[0]);
+    for (int i = 1; i < lists.length; i++) {
+      sb.append(",");
+      sb.append(lists[i]);
+    }
+    return sb.toString();
+  }
 }
diff --git a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java
index 0163f60..91a680b 100644
--- a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java
+++ b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java
@@ -17,7 +17,7 @@
 
 package org.apache.servicecomb.foundation.vertx;
 
-import static org.hamcrest.CoreMatchers.*;
+import static org.hamcrest.CoreMatchers.is;
 
 import java.util.Arrays;
 
@@ -27,7 +27,11 @@ import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import com.netflix.config.ConcurrentCompositeConfiguration;
+
 import io.vertx.core.dns.AddressResolverOptions;
+import mockit.Expectations;
+import mockit.Mocked;
 
 public class TestAddressResolverConfig {
 
@@ -41,6 +45,37 @@ public class TestAddressResolverConfig {
     ArchaiusUtils.resetConfig();
   }
 
+  @Test
+  public void testGetResoverFromResource(@Mocked ConcurrentCompositeConfiguration finalConfig) {
+    ArchaiusUtils.resetConfig();
+    ArchaiusUtils.setProperty("addressResolver.servers", "8.8.8.8,8.8.4.4");
+    ArchaiusUtils.setProperty("addressResolver.optResourceEnabled", true);
+    ArchaiusUtils.setProperty("addressResolver.cacheMinTimeToLive", 0);
+    ArchaiusUtils.setProperty("addressResolver.cacheMaxTimeToLive", 10000);
+    ArchaiusUtils.setProperty("addressResolver.cacheNegativeTimeToLive", 0);
+    ArchaiusUtils.setProperty("addressResolver.queryTimeout", 1000);
+    ArchaiusUtils.setProperty("addressResolver.maxQueries", 3);
+    ArchaiusUtils.setProperty("addressResolver.test.maxQueries", 3);
+    ArchaiusUtils.setProperty("addressResolver.rdFlag", true);
+    ArchaiusUtils.setProperty("addressResolver.searchDomains",
+        "default.svc.local.cluster,svc.local.cluster,local.cluster");
+    ArchaiusUtils.setProperty("addressResolver.test.searchDomains",
+        "test.svc.local.cluster,svc.local.cluster,local.cluster");
+    ArchaiusUtils.setProperty("addressResolver.ndots", 3);
+    ArchaiusUtils.setProperty("addressResolver.rotateServers", true);
+    new Expectations() {
+      {
+        finalConfig.getProperty("addressResolver.servers");
+        result = "6.6.6.6,6.6.4.4";
+        finalConfig.getProperty("addressResolver.searchDomains");
+        result = "default.svc.local.cluster";
+      }
+    };
+    AddressResolverOptions aroc = AddressResolverConfig.getAddressResover("test", finalConfig);
+    Assert.assertThat(aroc.getServers(), is(Arrays.asList("6.6.6.6", "6.6.4.4")));
+    Assert.assertThat(aroc.getSearchDomains(),
+        is(Arrays.asList("default.svc.local.cluster")));
+  }
 
   @Test
   public void testGetResover() {

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

[incubator-servicecomb-java-chassis] 03/03: SCB-315 Config Center module can't get config by DynamicPropertyFactory.getInstance().getStringProperty, so has to use ConcurrentCompositeConfiguration

Posted by ni...@apache.org.
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-java-chassis.git

commit 153cdeb71ebe706f69927a5ad35b58461da37f6b
Author: jeho0815 <je...@email.com>
AuthorDate: Sat Feb 3 11:47:24 2018 +0800

    SCB-315 Config Center module can't get config by DynamicPropertyFactory.getInstance().getStringProperty, so has to use ConcurrentCompositeConfiguration
---
 .../foundation/vertx/AddressResolverConfig.java    | 24 ++++++++++++++--------
 .../vertx/TestAddressResolverConfig.java           |  4 ++++
 2 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java
index b503643..1b1a804 100644
--- a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java
@@ -21,6 +21,8 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.commons.configuration.Configuration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.netflix.config.DynamicPropertyFactory;
 
@@ -28,6 +30,8 @@ import io.vertx.core.dns.AddressResolverOptions;
 
 public class AddressResolverConfig {
 
+  private static final Logger LOGGER = LoggerFactory.getLogger(AddressResolverConfig.class);
+
   /**
    * get the target endpoints with custom address resolve config
    * @param tag config tag, such as sc.consumer or cc.consumer
@@ -56,27 +60,27 @@ public class AddressResolverConfig {
             "addressResolver." + tag + ".optResourceEnabled",
             "addressResolver.optResourceEnabled"));
     addressResolverOptions
-        .setCacheMinTimeToLive(getIntProperty(configSource,
+        .setCacheMinTimeToLive(getPositiveIntProperty(configSource,
             AddressResolverOptions.DEFAULT_CACHE_MIN_TIME_TO_LIVE,
             "addressResolver." + tag + ".cacheMinTimeToLive",
             "addressResolver.cacheMinTimeToLive"));
     addressResolverOptions
-        .setCacheMaxTimeToLive(getIntProperty(configSource,
+        .setCacheMaxTimeToLive(getPositiveIntProperty(configSource,
             AddressResolverOptions.DEFAULT_CACHE_MAX_TIME_TO_LIVE,
             "addressResolver." + tag + ".cacheMaxTimeToLive",
             "addressResolver.cacheMaxTimeToLive"));
     addressResolverOptions
-        .setCacheNegativeTimeToLive(getIntProperty(configSource,
+        .setCacheNegativeTimeToLive(getPositiveIntProperty(configSource,
             AddressResolverOptions.DEFAULT_CACHE_NEGATIVE_TIME_TO_LIVE,
             "addressResolver." + tag + ".cacheNegativeTimeToLive",
             "addressResolver.cacheNegativeTimeToLive"));
     addressResolverOptions
-        .setQueryTimeout(getIntProperty(configSource,
+        .setQueryTimeout(getPositiveIntProperty(configSource,
             AddressResolverOptions.DEFAULT_QUERY_TIMEOUT,
             "addressResolver." + tag + ".queryTimeout",
             "addressResolver.queryTimeout"));
     addressResolverOptions
-        .setMaxQueries(getIntProperty(configSource,
+        .setMaxQueries(getPositiveIntProperty(configSource,
             AddressResolverOptions.DEFAULT_MAX_QUERIES,
             "addressResolver." + tag + ".maxQueries",
             "addressResolver.maxQueries"));
@@ -91,7 +95,7 @@ public class AddressResolverConfig {
             "addressResolver." + tag + ".searchDomains",
             "addressResolver.searchDomains"));
     addressResolverOptions
-        .setNdots(getIntProperty(configSource,
+        .setNdots(getPositiveIntProperty(configSource,
             AddressResolverOptions.DEFAULT_CACHE_MIN_TIME_TO_LIVE,
             "addressResolver." + tag + ".ndots",
             "addressResolver.ndots"));
@@ -117,13 +121,17 @@ public class AddressResolverConfig {
     return defaultValue;
   }
 
-  private static int getIntProperty(Configuration configSource, int defaultValue, String... keys) {
+  private static int getPositiveIntProperty(Configuration configSource, int defaultValue, String... keys) {
     if (configSource == null) {
       configSource = (Configuration) DynamicPropertyFactory.getBackingConfigurationSource();
     }
     for (String key : keys) {
       Integer val = configSource.getInteger(key, null);
-      if (val != null && val > 0) {
+      if (val != null && val <= 0) {
+        LOGGER.warn("Address resover key:{}'s value:{} is not positive, please check!", key, val);
+        continue;
+      }
+      if (val != null) {
         return val;
       }
     }
diff --git a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java
index dd6c511..da4bc2c 100644
--- a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java
+++ b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java
@@ -56,6 +56,8 @@ public class TestAddressResolverConfig {
         result = new String[] {"default.svc.local.cluster"};
         finalConfig.getInteger("addressResolver.queryTimeout", null);
         result = 2000;
+        finalConfig.getInteger("addressResolver.maxQueries", null);
+        result = -2;
       }
     };
     AddressResolverOptions aroc = AddressResolverConfig.getAddressResover("test", finalConfig);
@@ -64,6 +66,8 @@ public class TestAddressResolverConfig {
         is(Arrays.asList("default.svc.local.cluster")));
     Assert.assertEquals(aroc.getQueryTimeout(),
         2000);
+    Assert.assertNotEquals(aroc.getMaxQueries(),
+        -2);
   }
 
   @Test

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

[incubator-servicecomb-java-chassis] 02/03: SCB-315 Config Center module can't get config by DynamicPropertyFactory.getInstance().getStringProperty, so has to use ConcurrentCompositeConfiguration

Posted by ni...@apache.org.
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-java-chassis.git

commit d382ead39b3bc63a8c2240af4cb659ea9f88988a
Author: jeho0815 <je...@email.com>
AuthorDate: Sat Feb 3 10:25:54 2018 +0800

    SCB-315 Config Center module can't get config by DynamicPropertyFactory.getInstance().getStringProperty, so has to use ConcurrentCompositeConfiguration
---
 .../foundation/vertx/AddressResolverConfig.java    | 89 +++++++---------------
 .../vertx/TestAddressResolverConfig.java           | 31 +++-----
 2 files changed, 37 insertions(+), 83 deletions(-)

diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java
index 08412f1..b503643 100644
--- a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java
@@ -20,7 +20,8 @@ package org.apache.servicecomb.foundation.vertx;
 import java.util.Arrays;
 import java.util.List;
 
-import com.netflix.config.ConcurrentCompositeConfiguration;
+import org.apache.commons.configuration.Configuration;
+
 import com.netflix.config.DynamicPropertyFactory;
 
 import io.vertx.core.dns.AddressResolverOptions;
@@ -42,7 +43,7 @@ public class AddressResolverConfig {
    * @param configSource get config from special config source
    * @return AddressResolverOptions
    */
-  public static AddressResolverOptions getAddressResover(String tag, ConcurrentCompositeConfiguration configSource) {
+  public static AddressResolverOptions getAddressResover(String tag, Configuration configSource) {
     AddressResolverOptions addressResolverOptions = new AddressResolverOptions();
     addressResolverOptions
         .setServers(getStringListProperty(configSource,
@@ -102,80 +103,44 @@ public class AddressResolverConfig {
     return addressResolverOptions;
   }
 
-  private static List<String> getStringListProperty(ConcurrentCompositeConfiguration configSource,
+  private static List<String> getStringListProperty(Configuration configSource,
       List<String> defaultValue, String... keys) {
-    String property = null;
+    if (configSource == null) {
+      configSource = (Configuration) DynamicPropertyFactory.getBackingConfigurationSource();
+    }
     for (String key : keys) {
-      if (configSource != null) {
-        Object v = configSource.getProperty(key);
-        if (List.class.isInstance(v)) {
-          property = listToString(((List<?>) v).toArray());
-        } else {
-          property = (String) configSource.getProperty(key);
-        }
-      } else {
-        property = DynamicPropertyFactory.getInstance().getStringProperty(key, null).get();
+      String[] vals = configSource.getStringArray(key);
+      if (vals != null && vals.length > 0) {
+        return Arrays.asList(vals);
       }
-      if (property != null) {
-        break;
-      }
-    }
-    if (property != null) {
-      return Arrays.asList(property.split(","));
-    } else {
-      return defaultValue;
     }
+    return defaultValue;
   }
 
-  private static int getIntProperty(ConcurrentCompositeConfiguration configSource, int defaultValue, String... keys) {
-    int property = -1;
+  private static int getIntProperty(Configuration configSource, int defaultValue, String... keys) {
+    if (configSource == null) {
+      configSource = (Configuration) DynamicPropertyFactory.getBackingConfigurationSource();
+    }
     for (String key : keys) {
-      if (configSource != null) {
-        if (configSource.getProperty(key) != null) {
-          return configSource.getInt(key);
-        }
-      } else {
-        property = DynamicPropertyFactory.getInstance().getIntProperty(key, -1).get();
+      Integer val = configSource.getInteger(key, null);
+      if (val != null && val > 0) {
+        return val;
       }
     }
-
-    if (property > 0) {
-      return property;
-    } else {
-      return defaultValue;
-    }
+    return defaultValue;
   }
 
-  private static boolean getBooleanProperty(ConcurrentCompositeConfiguration configSource, boolean defaultValue,
+  private static boolean getBooleanProperty(Configuration configSource, boolean defaultValue,
       String... keys) {
-    String property = null;
+    if (configSource == null) {
+      configSource = (Configuration) DynamicPropertyFactory.getBackingConfigurationSource();
+    }
     for (String key : keys) {
-      if (configSource != null) {
-        if (configSource.getProperty(key) != null) {
-          return configSource.getBoolean(key);
-        }
-      } else {
-        property = DynamicPropertyFactory.getInstance().getStringProperty(key, null).get();
-      }
-      if (property != null) {
-        break;
+      Boolean val = configSource.getBoolean(key, null);
+      if (val != null) {
+        return val;
       }
     }
-
-    if (property != null) {
-      return Boolean.parseBoolean(property);
-    } else {
-      return defaultValue;
-    }
-  }
-
-  private static String listToString(Object[] lists) {
-    StringBuilder sb = new StringBuilder();
-    sb.append(lists[0]);
-    for (int i = 1; i < lists.length; i++) {
-      sb.append(",");
-      sb.append(lists[i]);
-    }
-    return sb.toString();
+    return defaultValue;
   }
 }
diff --git a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java
index 91a680b..dd6c511 100644
--- a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java
+++ b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java
@@ -21,14 +21,13 @@ import static org.hamcrest.CoreMatchers.is;
 
 import java.util.Arrays;
 
+import org.apache.commons.configuration.Configuration;
 import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import com.netflix.config.ConcurrentCompositeConfiguration;
-
 import io.vertx.core.dns.AddressResolverOptions;
 import mockit.Expectations;
 import mockit.Mocked;
@@ -46,35 +45,25 @@ public class TestAddressResolverConfig {
   }
 
   @Test
-  public void testGetResoverFromResource(@Mocked ConcurrentCompositeConfiguration finalConfig) {
+  public void testGetResoverFromResource(@Mocked Configuration finalConfig) {
     ArchaiusUtils.resetConfig();
     ArchaiusUtils.setProperty("addressResolver.servers", "8.8.8.8,8.8.4.4");
-    ArchaiusUtils.setProperty("addressResolver.optResourceEnabled", true);
-    ArchaiusUtils.setProperty("addressResolver.cacheMinTimeToLive", 0);
-    ArchaiusUtils.setProperty("addressResolver.cacheMaxTimeToLive", 10000);
-    ArchaiusUtils.setProperty("addressResolver.cacheNegativeTimeToLive", 0);
-    ArchaiusUtils.setProperty("addressResolver.queryTimeout", 1000);
-    ArchaiusUtils.setProperty("addressResolver.maxQueries", 3);
-    ArchaiusUtils.setProperty("addressResolver.test.maxQueries", 3);
-    ArchaiusUtils.setProperty("addressResolver.rdFlag", true);
-    ArchaiusUtils.setProperty("addressResolver.searchDomains",
-        "default.svc.local.cluster,svc.local.cluster,local.cluster");
-    ArchaiusUtils.setProperty("addressResolver.test.searchDomains",
-        "test.svc.local.cluster,svc.local.cluster,local.cluster");
-    ArchaiusUtils.setProperty("addressResolver.ndots", 3);
-    ArchaiusUtils.setProperty("addressResolver.rotateServers", true);
     new Expectations() {
       {
-        finalConfig.getProperty("addressResolver.servers");
-        result = "6.6.6.6,6.6.4.4";
-        finalConfig.getProperty("addressResolver.searchDomains");
-        result = "default.svc.local.cluster";
+        finalConfig.getStringArray("addressResolver.servers");
+        result = new String[] {"6.6.6.6", "6.6.4.4"};
+        finalConfig.getStringArray("addressResolver.searchDomains");
+        result = new String[] {"default.svc.local.cluster"};
+        finalConfig.getInteger("addressResolver.queryTimeout", null);
+        result = 2000;
       }
     };
     AddressResolverOptions aroc = AddressResolverConfig.getAddressResover("test", finalConfig);
     Assert.assertThat(aroc.getServers(), is(Arrays.asList("6.6.6.6", "6.6.4.4")));
     Assert.assertThat(aroc.getSearchDomains(),
         is(Arrays.asList("default.svc.local.cluster")));
+    Assert.assertEquals(aroc.getQueryTimeout(),
+        2000);
   }
 
   @Test

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