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/27 11:09:10 UTC
[incubator-dubbo] 01/06: store DynamicConfiguration reference in
Environment
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 3206dba956ae1d23fab1a2099ffd166974fe0ba9
Author: ken.lj <ke...@gmail.com>
AuthorDate: Fri Nov 23 20:10:01 2018 +0800
store DynamicConfiguration reference in Environment
---
.../org/apache/dubbo/common/config/Environment.java | 17 +++++++++++++++--
.../apache/dubbo/common/extension/ExtensionLoader.java | 9 ---------
.../apache/dubbo/config/AbstractInterfaceConfig.java | 6 +-----
.../org/apache/dubbo/config/ConfigCenterConfig.java | 5 +----
.../apache/dubbo/configcenter/ConfigurationUtils.java | 12 ++++--------
5 files changed, 21 insertions(+), 28 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
index 746fbc3..bc58ec9 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
@@ -36,11 +36,16 @@ public class Environment {
private Map<String, InmemoryConfiguration> appExternalConfigs = new ConcurrentHashMap<>();
private Map<String, InmemoryConfiguration> appConfigs = new ConcurrentHashMap<>();
- private boolean configCenterFirst = true;
-
private Map<String, String> externalConfigurationMap = new HashMap<>();
private Map<String, String> appExternalConfigurationMap = new HashMap<>();
+ private boolean configCenterFirst = true;
+
+ /**
+ * FIXME, this instance will always be a type of DynamicConfiguration, ConfigCenterConfig will load the instance at startup and assign it to here.
+ */
+ private Configuration dynamicConfiguration;
+
public static Environment getInstance() {
return INSTANCE;
}
@@ -155,4 +160,12 @@ public class Environment {
public void setConfigCenterFirst(boolean configCenterFirst) {
this.configCenterFirst = configCenterFirst;
}
+
+ public Configuration getDynamicConfiguration() {
+ return dynamicConfiguration;
+ }
+
+ public void setDynamicConfiguration(Configuration dynamicConfiguration) {
+ this.dynamicConfiguration = dynamicConfiguration;
+ }
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
index 83a6c7f..1c0b62f 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
@@ -44,7 +44,6 @@ import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.regex.Pattern;
-import java.util.stream.Collectors;
/**
* Load dubbo extensions
@@ -337,14 +336,6 @@ public class ExtensionLoader<T> {
}
/**
- * Return all available extension instances.
- */
- public Set<T> getExtensions() {
- return Collections.unmodifiableSet(getSupportedExtensions().stream().map(this::getExtension)
- .collect(Collectors.toSet()));
- }
-
- /**
* Return default extension, return <code>null</code> if it's not configured.
*/
public T getDefaultExtension() {
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
index 438534d..be5b9e1 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
@@ -20,14 +20,12 @@ import org.apache.dubbo.common.Constants;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.Version;
import org.apache.dubbo.common.config.Environment;
-import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.ConfigUtils;
import org.apache.dubbo.common.utils.NetUtils;
import org.apache.dubbo.common.utils.ReflectUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.common.utils.UrlUtils;
import org.apache.dubbo.config.support.Parameter;
-import org.apache.dubbo.configcenter.DynamicConfiguration;
import org.apache.dubbo.metadata.integration.MetadataReportService;
import org.apache.dubbo.monitor.MonitorFactory;
import org.apache.dubbo.monitor.MonitorService;
@@ -43,7 +41,6 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import static org.apache.dubbo.common.Constants.APPLICATION_KEY;
import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;
@@ -165,9 +162,8 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
private void useRegistryForConfigIfNecessary() {
RegistryConfig registry = registries.get(0);
if (registry.isZookeeperProtocol()) {
- Set<DynamicConfiguration> loadedConfigurations = getExtensionLoader(DynamicConfiguration.class).getExtensions();
// we use the loading status of DynamicConfiguration to decide whether ConfigCenter has been initiated.
- if (CollectionUtils.isEmpty(loadedConfigurations)) {
+ if (Environment.getInstance().getDynamicConfiguration() == null) {
ConfigCenterConfig configCenterConfig = new ConfigCenterConfig();
configCenterConfig.setProtocol(registry.getProtocol());
configCenterConfig.setAddress(registry.getAddress());
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
index 1a03863..1cb5a00 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
@@ -84,10 +84,6 @@ public class ConfigCenterConfig extends AbstractConfig {
}
}
- /*public void initWithoutRemoteConfig() {
- startDynamicConfiguration();
- }*/
-
private DynamicConfiguration startDynamicConfiguration() {
// give jvm properties the chance to override local configs, e.g., -Ddubbo.configcenter.config.priority
@@ -104,6 +100,7 @@ public class ConfigCenterConfig extends AbstractConfig {
DynamicConfiguration dynamicConfiguration = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getExtension(url.getProtocol());
// TODO, maybe we need a factory to do this?
dynamicConfiguration.initWith(url);
+ Environment.getInstance().setDynamicConfiguration(dynamicConfiguration);
return dynamicConfiguration;
}
diff --git a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationUtils.java b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationUtils.java
index ea8a78d..cc3a3dc 100644
--- a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationUtils.java
+++ b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationUtils.java
@@ -19,9 +19,6 @@ package org.apache.dubbo.configcenter;
import org.apache.dubbo.common.Constants;
import org.apache.dubbo.common.config.Configuration;
import org.apache.dubbo.common.config.Environment;
-import org.apache.dubbo.common.utils.CollectionUtils;
-
-import java.util.Set;
import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;
@@ -35,12 +32,11 @@ public class ConfigurationUtils {
* NopDynamicConfiguration will be used.
*/
public static DynamicConfiguration getDynamicConfiguration() {
- Set<DynamicConfiguration> configurations = getExtensionLoader(DynamicConfiguration.class).getExtensions();
- if (CollectionUtils.isEmpty(configurations)) {
- return getExtensionLoader(DynamicConfiguration.class).getDefaultExtension();
- } else {
- return configurations.iterator().next();
+ DynamicConfiguration dynamicConfiguration = (DynamicConfiguration) Environment.getInstance().getDynamicConfiguration();
+ if (dynamicConfiguration == null) {
+ dynamicConfiguration = getExtensionLoader(DynamicConfiguration.class).getDefaultExtension();
}
+ return dynamicConfiguration;
}
@SuppressWarnings("deprecation")