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 2019/01/07 13:20:46 UTC
[incubator-dubbo] 02/03: move refresh() into setter to avoid
duplicate refresh during check.
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 2.7.0-release
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
commit 824aaf9b5efa96b03cf71314263059fcd317288a
Author: ken.lj <ke...@gmail.com>
AuthorDate: Mon Jan 7 21:10:17 2019 +0800
move refresh() into setter to avoid duplicate refresh during check.
---
.../dubbo/config/AbstractInterfaceConfig.java | 62 +++++++++++-----------
.../apache/dubbo/config/AbstractServiceConfig.java | 11 ++++
.../org/apache/dubbo/config/ServiceConfig.java | 38 +++++--------
3 files changed, 54 insertions(+), 57 deletions(-)
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 2976c13..6f41495 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
@@ -158,16 +158,6 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
convertRegistryIdsToRegistries();
- setRegistries(this.registries);
-
- for (RegistryConfig registryConfig : registries) {
- registryConfig.refresh();
- if (StringUtils.isNotEmpty(registryConfig.getId())) {
- registryConfig.setPrefix(Constants.REGISTRIES_SUFFIX);
- registryConfig.refresh();
- }
- }
-
for (RegistryConfig registryConfig : registries) {
if (!registryConfig.isValid()) {
throw new IllegalStateException("No registry config found or it's not a valid config! " +
@@ -183,8 +173,6 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
// for backward compatibility
createApplicationIfAbsent();
- application.refresh();
-
if (!application.isValid()) {
throw new IllegalStateException("No application config found or it's not a valid config! " +
"Please add <dubbo:application name=\"...\" /> to your spring config.");
@@ -206,7 +194,6 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
protected void checkMonitor() {
createMonitorIfAbsent();
- monitor.refresh();
if (!monitor.isValid()) {
logger.info("There's no valid monitor config found, if you want to open monitor statistics for Dubbo, " +
"please make sure your monitor is configured properly.");
@@ -226,7 +213,6 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
if (metadataReportConfig == null) {
setMetadataReportConfig(new MetadataReportConfig());
}
- metadataReportConfig.refresh();
if (!metadataReportConfig.isValid()) {
logger.warn("There's no valid metadata config found, if you are using the simplified mode of registry url, " +
"please make sure you have a metadata address configured properly.");
@@ -238,8 +224,6 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
if (configCenter == null) {
return;
}
- // give jvm properties the chance to override local configs, e.g., -Ddubbo.configcenter.highestPriority
- configCenter.refresh();
prepareEnvironment();
}
@@ -501,7 +485,7 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
}
private void convertRegistryIdsToRegistries() {
- if (StringUtils.isEmpty(registryIds) && (registries == null || registries.isEmpty())) {
+ if (StringUtils.isEmpty(registryIds) && CollectionUtils.isEmpty(registries)) {
Set<String> configedRegistries = new HashSet<>();
configedRegistries.addAll(getSubProperties(Environment.getInstance().getExternalConfigurationMap(),
Constants.REGISTRIES_SUFFIX));
@@ -512,29 +496,32 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
}
if (StringUtils.isEmpty(registryIds)) {
- if (registries == null || registries.isEmpty()) {
- registries = ConfigManager.getInstance().getDefaultRegistries()
+ if (CollectionUtils.isEmpty(registries)) {
+ setRegistries(
+ ConfigManager.getInstance().getDefaultRegistries()
.filter(CollectionUtils::isNotEmpty)
- .orElse(Arrays.asList(new RegistryConfig()));
+ .orElse(Arrays.asList(new RegistryConfig()))
+ );
}
} else {
- String[] arr = Constants.COMMA_SPLIT_PATTERN.split(registryIds);
- if (registries == null || registries.isEmpty()) {
- registries = new ArrayList<>();
- }
- Arrays.stream(arr).forEach(id -> {
- if (registries.stream().noneMatch(reg -> reg.getId().equals(id))) {
- registries.add(ConfigManager.getInstance().getRegistry(id).orElseGet(() -> {
+ String[] ids = Constants.COMMA_SPLIT_PATTERN.split(registryIds);
+ List<RegistryConfig> tmpRegistries = CollectionUtils.isNotEmpty(registries) ? registries : new ArrayList<>();
+ Arrays.stream(ids).forEach(id -> {
+ if (tmpRegistries.stream().noneMatch(reg -> reg.getId().equals(id))) {
+ tmpRegistries.add(ConfigManager.getInstance().getRegistry(id).orElseGet(() -> {
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setId(id);
return registryConfig;
}));
}
});
- if (registries.size() > arr.length) {
+
+ if (tmpRegistries.size() > ids.length) {
throw new IllegalStateException("Too much registries found, the registries assigned to this service " +
- "are :" + registryIds + ", but got " + registries.size() + " registries!");
+ "are :" + registryIds + ", but got " + tmpRegistries.size() + " registries!");
}
+
+ setRegistries(tmpRegistries);
}
}
@@ -545,13 +532,14 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
if (registries == null || registries.isEmpty()) {
String address = ConfigUtils.getProperty("dubbo.registry.address");
if (address != null && address.length() > 0) {
- registries = new ArrayList<RegistryConfig>();
+ List<RegistryConfig> tmpRegistries = new ArrayList<RegistryConfig>();
String[] as = address.split("\\s*[|]+\\s*");
for (String a : as) {
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress(a);
- registries.add(registryConfig);
+ tmpRegistries.add(registryConfig);
}
+ setRegistries(tmpRegistries);
}
}
}
@@ -685,6 +673,7 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
}
public void setApplication(ApplicationConfig application) {
+ application.refresh();
this.application = application;
ConfigManager.getInstance().setApplication(this.application);
}
@@ -722,6 +711,13 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
@SuppressWarnings({"unchecked"})
public void setRegistries(List<? extends RegistryConfig> registries) {
+ for (RegistryConfig registryConfig : registries) {
+ registryConfig.refresh();
+ if (StringUtils.isNotEmpty(registryConfig.getId())) {
+ registryConfig.setPrefix(Constants.REGISTRIES_SUFFIX);
+ registryConfig.refresh();
+ }
+ }
this.registries = (List<RegistryConfig>) registries;
ConfigManager.getInstance().addRegistries(this.registries);
}
@@ -744,6 +740,7 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
}
public void setMonitor(MonitorConfig monitor) {
+ monitor.refresh();
this.monitor = monitor;
ConfigManager.getInstance().setMonitor(monitor);
}
@@ -762,6 +759,8 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
}
public void setConfigCenter(ConfigCenterConfig configCenter) {
+ // give jvm properties the chance to override local configs, e.g., -Ddubbo.configcenter.highestPriority
+ configCenter.refresh();
this.configCenter = configCenter;
ConfigManager.getInstance().setConfigCenter(configCenter);
}
@@ -803,6 +802,7 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
}
public void setMetadataReportConfig(MetadataReportConfig metadataReportConfig) {
+ metadataReportConfig.refresh();
this.metadataReportConfig = metadataReportConfig;
}
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
index b898410..e8d35ff 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config;
import org.apache.dubbo.common.Constants;
+import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.context.ConfigManager;
import org.apache.dubbo.config.support.Parameter;
import org.apache.dubbo.rpc.ExporterListener;
@@ -200,6 +201,16 @@ public abstract class AbstractServiceConfig extends AbstractInterfaceConfig {
@SuppressWarnings({"unchecked"})
public void setProtocols(List<? extends ProtocolConfig> protocols) {
+ for (ProtocolConfig protocolConfig : protocols) {
+ if (StringUtils.isEmpty(protocolConfig.getName())) {
+ protocolConfig.setName(Constants.DUBBO_VERSION_KEY);
+ }
+ protocolConfig.refresh();
+ if (StringUtils.isNotEmpty(protocolConfig.getId())) {
+ protocolConfig.setPrefix(Constants.PROTOCOLS_SUFFIX);
+ protocolConfig.refresh();
+ }
+ }
this.protocols = (List<ProtocolConfig>) protocols;
ConfigManager.getInstance().addProtocols(this.protocols);
}
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index 1d5b1c4..c7acc30 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
@@ -784,7 +784,6 @@ public class ServiceConfig<T> extends AbstractServiceConfig {
private void checkDefault() {
createProviderIfAbsent();
- provider.refresh();
}
private void createProviderIfAbsent() {
@@ -799,26 +798,11 @@ public class ServiceConfig<T> extends AbstractServiceConfig {
if ((protocols == null || protocols.isEmpty()) && provider != null) {
setProtocols(provider.getProtocols());
}
-
convertProtocolIdsToProtocols();
-
- // set after all protocols are generated
- setProtocols(this.protocols);
-
- for (ProtocolConfig protocolConfig : protocols) {
- if (StringUtils.isEmpty(protocolConfig.getName())) {
- protocolConfig.setName(Constants.DUBBO_VERSION_KEY);
- }
- protocolConfig.refresh();
- if (StringUtils.isNotEmpty(protocolConfig.getId())) {
- protocolConfig.setPrefix(Constants.PROTOCOLS_SUFFIX);
- protocolConfig.refresh();
- }
- }
}
private void convertProtocolIdsToProtocols() {
- if (StringUtils.isEmpty(protocolIds) && (protocols == null || protocols.isEmpty())) {
+ if (StringUtils.isEmpty(protocolIds) && CollectionUtils.isEmpty(protocols)) {
List<String> configedProtocols = new ArrayList<>();
configedProtocols.addAll(getSubProperties(Environment.getInstance()
.getExternalConfigurationMap(), Constants.PROTOCOLS_SUFFIX));
@@ -829,29 +813,30 @@ public class ServiceConfig<T> extends AbstractServiceConfig {
}
if (StringUtils.isEmpty(protocolIds)) {
- if (protocols == null || protocols.isEmpty()) {
- protocols = ConfigManager.getInstance().getDefaultProtocols()
+ if (CollectionUtils.isEmpty(protocols)) {
+ setProtocols(
+ ConfigManager.getInstance().getDefaultProtocols()
.filter(CollectionUtils::isNotEmpty)
- .orElse(Arrays.asList(new ProtocolConfig()));
+ .orElse(Arrays.asList(new ProtocolConfig()))
+ );
}
} else {
String[] arr = Constants.COMMA_SPLIT_PATTERN.split(protocolIds);
- if (protocols == null || protocols.isEmpty()) {
- protocols = new ArrayList<>();
- }
+ List<ProtocolConfig> tmpProtocols = CollectionUtils.isNotEmpty(protocols) ? protocols : new ArrayList<>();
Arrays.stream(arr).forEach(id -> {
- if (protocols.stream().noneMatch(prot -> prot.getId().equals(id))) {
- protocols.add(ConfigManager.getInstance().getProtocol(id).orElseGet(() -> {
+ if (tmpProtocols.stream().noneMatch(prot -> prot.getId().equals(id))) {
+ tmpProtocols.add(ConfigManager.getInstance().getProtocol(id).orElseGet(() -> {
ProtocolConfig protocolConfig = new ProtocolConfig();
protocolConfig.setId(id);
return protocolConfig;
}));
}
});
- if (protocols.size() > arr.length) {
+ if (tmpProtocols.size() > arr.length) {
throw new IllegalStateException("Too much protocols found, the protocols comply to this service are :" + protocolIds + " but got " + protocols
.size() + " registries!");
}
+ setProtocols(tmpProtocols);
}
}
@@ -935,6 +920,7 @@ public class ServiceConfig<T> extends AbstractServiceConfig {
}
public void setProvider(ProviderConfig provider) {
+ provider.refresh();
this.provider = provider;
ConfigManager.getInstance().addProvider(provider);
}