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 <ken.lj...@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;
+    }
 }

Reply via email to