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

[incubator-dubbo] 01/03: support standard spring PropertySource

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

liujun pushed a commit to branch dev-metadata
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git

commit 042ab09db1940c73b5171b88b2cbb1607477af4d
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Nov 13 23:02:39 2018 +0800

    support standard spring PropertySource
---
 .../dubbo/config/spring/ConfigCenterBean.java      | 25 ++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
index 653a2f5..a0bc0a6 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
@@ -25,7 +25,9 @@ import org.springframework.beans.factory.InitializingBean;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.context.EnvironmentAware;
+import org.springframework.core.env.ConfigurableEnvironment;
 import org.springframework.core.env.Environment;
+import org.springframework.core.env.PropertySource;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -85,9 +87,20 @@ public class ConfigCenterBean extends ConfigCenterConfig implements Initializing
             Map<String, String> externalProperties = new HashMap<>();
             try {
                 if (rawProperties instanceof Map) {
-                    externalProperties = (Map<String, String>) rawProperties;
+                    externalProperties.putAll((Map<String, String>) rawProperties);
                 } else if (rawProperties instanceof String) {
-                    externalProperties = parseProperties((String) rawProperties);
+                    externalProperties.putAll(parseProperties((String) rawProperties));
+                }
+
+                if (environment instanceof ConfigurableEnvironment && externalProperties.isEmpty()) {
+                    ConfigurableEnvironment configurableEnvironment = (ConfigurableEnvironment) environment;
+                    PropertySource propertySource = configurableEnvironment.getPropertySources().get("dubbo.properties");
+                    Object source = propertySource.getSource();
+                    if (source instanceof Map) {
+                        ((Map<String, Object>) source).forEach((k, v) -> {
+                            externalProperties.put(k, (String) v);
+                        });
+                    }
                 }
                 org.apache.dubbo.config.context.Environment.getInstance().updateExternalConfigurationMap(externalProperties);
             } catch (Exception e) {
@@ -95,4 +108,12 @@ public class ConfigCenterBean extends ConfigCenterConfig implements Initializing
             }
         }
     }
+
+    public boolean isAuto() {
+        return auto;
+    }
+
+    public void setAuto(boolean auto) {
+        this.auto = auto;
+    }
 }