You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/08/29 02:45:22 UTC
[dubbo] 02/02: Compact with url without ScopeModel
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit a299172704e92e615db422f18cc7736bfedd5837
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Sun Aug 29 10:45:00 2021 +0800
Compact with url without ScopeModel
---
.../rpc/cluster/filter/DefaultFilterChainBuilder.java | 5 +++--
.../rpc/cluster/filter/ProtocolFilterWrapper.java | 3 ++-
.../java/org/apache/dubbo/rpc/model/ScopeModel.java | 2 +-
.../org/apache/dubbo/rpc/model/ScopeModelUtil.java | 18 ++++++++++++++++++
.../apache/dubbo/metadata/WritableMetadataService.java | 7 ++++---
.../registry/client/RegistryClusterIdentifier.java | 3 ++-
.../dubbo/registry/client/metadata/MetadataUtils.java | 3 ++-
.../dubbo/registry/integration/RegistryProtocol.java | 7 ++++---
.../dubbo/rpc/protocol/ProtocolListenerWrapper.java | 5 +++--
9 files changed, 39 insertions(+), 14 deletions(-)
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java
index 39706bd..478ad66 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.rpc.Filter;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.cluster.ClusterInvoker;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import java.util.List;
@@ -34,7 +35,7 @@ public class DefaultFilterChainBuilder implements FilterChainBuilder {
public <T> Invoker<T> buildInvokerChain(final Invoker<T> originalInvoker, String key, String group) {
Invoker<T> last = originalInvoker;
URL url = originalInvoker.getUrl();
- List<Filter> filters = url.getScopeModel().getExtensionLoader(Filter.class).getActivateExtension(url, key, group);
+ List<Filter> filters = ScopeModelUtil.getExtensionLoader(Filter.class, url.getScopeModel()).getActivateExtension(url, key, group);
if (!filters.isEmpty()) {
for (int i = filters.size() - 1; i >= 0; i--) {
@@ -54,7 +55,7 @@ public class DefaultFilterChainBuilder implements FilterChainBuilder {
public <T> ClusterInvoker<T> buildClusterInvokerChain(final ClusterInvoker<T> originalInvoker, String key, String group) {
ClusterInvoker<T> last = originalInvoker;
URL url = originalInvoker.getUrl();
- List<ClusterFilter> filters = url.getScopeModel().getExtensionLoader(ClusterFilter.class).getActivateExtension(url, key, group);
+ List<ClusterFilter> filters = ScopeModelUtil.getExtensionLoader(ClusterFilter.class, url.getScopeModel()).getActivateExtension(url, key, group);
if (!filters.isEmpty()) {
for (int i = filters.size() - 1; i >= 0; i--) {
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/ProtocolFilterWrapper.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/ProtocolFilterWrapper.java
index f954cd7..efbc454 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/ProtocolFilterWrapper.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/ProtocolFilterWrapper.java
@@ -25,6 +25,7 @@ import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.ProtocolServer;
import org.apache.dubbo.rpc.RpcException;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import java.util.List;
@@ -61,7 +62,7 @@ public class ProtocolFilterWrapper implements Protocol {
}
private <T> FilterChainBuilder getFilterChainBuilder(URL url) {
- return url.getScopeModel().getExtensionLoader(FilterChainBuilder.class).getDefaultExtension();
+ return ScopeModelUtil.getExtensionLoader(FilterChainBuilder.class, url.getScopeModel()).getDefaultExtension();
}
@Override
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
index 76751e3..ccd87bf 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
@@ -37,7 +37,7 @@ public abstract class ScopeModel implements ExtensionAccessor {
this.parent = parent;
this.extensionDirector = extensionDirector;
this.extensionDirector.addExtensionPostProcessor(new ScopeModelAwareExtensionProcessor(this));
- this.beanFactory = new ScopeBeanFactory(parent!=null?parent.getBeanFactory():null, extensionDirector);
+ this.beanFactory = new ScopeBeanFactory(parent != null ? parent.getBeanFactory() : null, extensionDirector);
}
@PostConstruct
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
index e59f7cb..e686ef1 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
@@ -16,6 +16,9 @@
*/
package org.apache.dubbo.rpc.model;
+import org.apache.dubbo.common.extension.ExtensionLoader;
+import org.apache.dubbo.common.extension.SPI;
+
public class ScopeModelUtil {
public static ModuleModel getModuleModel(ScopeModel scopeModel) {
@@ -56,4 +59,19 @@ public class ScopeModelUtil {
return null;
}
+ public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type, ScopeModel scopeModel) {
+ if(scopeModel != null) {
+ return scopeModel.getExtensionLoader(type);
+ } else {
+ SPI spi = type.getAnnotation(SPI.class);
+ switch (spi.scope()) {
+ case FRAMEWORK:
+ return FrameworkModel.defaultModel().getExtensionLoader(type);
+ case APPLICATION:
+ return ApplicationModel.defaultModel().getExtensionLoader(type);
+ default:
+ return ApplicationModel.defaultModel().getDefaultModule().getExtensionLoader(type);
+ }
+ }
+ }
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
index 799d3de..5aa199e 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
@@ -17,11 +17,12 @@
package org.apache.dubbo.metadata;
import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.ExtensionAccessor;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.extension.ExtensionScope;
import org.apache.dubbo.common.extension.SPI;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModel;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import java.util.Map;
import java.util.Set;
@@ -103,7 +104,7 @@ public interface WritableMetadataService extends MetadataService {
*
* @return non-null
*/
- static WritableMetadataService getDefaultExtension(ExtensionAccessor extensionAccessor) {
- return extensionAccessor.getExtensionLoader(WritableMetadataService.class).getDefaultExtension();
+ static WritableMetadataService getDefaultExtension(ScopeModel scopeModel) {
+ return ScopeModelUtil.getExtensionLoader(WritableMetadataService.class, scopeModel).getDefaultExtension();
}
}
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/RegistryClusterIdentifier.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/RegistryClusterIdentifier.java
index e44a5fd..f6132ea 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/RegistryClusterIdentifier.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/RegistryClusterIdentifier.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.registry.client;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.extension.SPI;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_TYPE_KEY;
@@ -30,7 +31,7 @@ public interface RegistryClusterIdentifier {
static RegistryClusterIdentifier getExtension(URL url) {
ExtensionLoader<RegistryClusterIdentifier> loader
- = url.getScopeModel().getExtensionLoader(RegistryClusterIdentifier.class);
+ = ScopeModelUtil.getExtensionLoader(RegistryClusterIdentifier.class, url.getScopeModel());
return loader.getExtension(url.getParameter(REGISTRY_CLUSTER_TYPE_KEY, "default"));
}
}
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
index df1a4a7..6bdc3ec 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
@@ -28,6 +28,7 @@ import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.ProxyFactory;
import org.apache.dubbo.rpc.model.ScopeModel;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import java.util.List;
import java.util.Map;
@@ -61,7 +62,7 @@ public class MetadataUtils {
WritableMetadataService.getDefaultExtension(url.getScopeModel()).publishServiceDefinition(url);
// send to remote
if (REMOTE_METADATA_STORAGE_TYPE.equalsIgnoreCase(url.getParameter(METADATA_KEY))) {
- getRemoteMetadataService(url.getScopeModel()).publishServiceDefinition(url);
+ getRemoteMetadataService(ScopeModelUtil.getApplicationModel(url.getScopeModel())).publishServiceDefinition(url);
}
}
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
index 0d86281..2bf5cb2 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
@@ -53,6 +53,7 @@ import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.ProviderModel;
import org.apache.dubbo.rpc.model.ScopeModel;
import org.apache.dubbo.rpc.model.ScopeModelAware;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import org.apache.dubbo.rpc.protocol.InvokerWrapper;
import org.apache.dubbo.rpc.support.ProtocolUtils;
@@ -247,7 +248,7 @@ public class RegistryProtocol implements Protocol, ScopeModelAware {
private <T> void notifyExport(ExporterChangeableWrapper<T> exporter) {
ScopeModel scopeModel = exporter.getRegisterUrl().getScopeModel();
- List<RegistryProtocolListener> listeners = scopeModel.getExtensionLoader(RegistryProtocolListener.class)
+ List<RegistryProtocolListener> listeners = ScopeModelUtil.getExtensionLoader(RegistryProtocolListener.class, scopeModel)
.getActivateExtension(exporter.getOriginInvoker().getUrl(), "registry.protocol.listener");
if (CollectionUtils.isNotEmpty(listeners)) {
for (RegistryProtocolListener listener : listeners) {
@@ -373,7 +374,7 @@ public class RegistryProtocol implements Protocol, ScopeModelAware {
* @return
*/
protected Registry getRegistry(final URL registryUrl) {
- RegistryFactory registryFactory = registryUrl.getScopeModel().getAdaptiveExtension(RegistryFactory.class);
+ RegistryFactory registryFactory = ScopeModelUtil.getExtensionLoader(RegistryFactory.class, registryUrl.getScopeModel()).getAdaptiveExtension();
return registryFactory.getRegistry(registryUrl);
}
@@ -550,7 +551,7 @@ public class RegistryProtocol implements Protocol, ScopeModelAware {
}
protected List<RegistryProtocolListener> findRegistryProtocolListeners(URL url) {
- return url.getScopeModel().getExtensionLoader(RegistryProtocolListener.class)
+ return ScopeModelUtil.getExtensionLoader(RegistryProtocolListener.class, url.getScopeModel())
.getActivateExtension(url, "registry.protocol.listener");
}
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/ProtocolListenerWrapper.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/ProtocolListenerWrapper.java
index 06ecbfc..f60ddd9 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/ProtocolListenerWrapper.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/ProtocolListenerWrapper.java
@@ -29,6 +29,7 @@ import org.apache.dubbo.rpc.ProtocolServer;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.listener.ListenerExporterWrapper;
import org.apache.dubbo.rpc.listener.ListenerInvokerWrapper;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import java.util.Collections;
import java.util.List;
@@ -63,7 +64,7 @@ public class ProtocolListenerWrapper implements Protocol {
return protocol.export(invoker);
}
return new ListenerExporterWrapper<T>(protocol.export(invoker),
- Collections.unmodifiableList(invoker.getUrl().getScopeModel().getExtensionLoader(ExporterListener.class)
+ Collections.unmodifiableList(ScopeModelUtil.getExtensionLoader(ExporterListener.class, invoker.getUrl().getScopeModel())
.getActivateExtension(invoker.getUrl(), EXPORTER_LISTENER_KEY)));
}
@@ -77,7 +78,7 @@ public class ProtocolListenerWrapper implements Protocol {
if (StringUtils.isEmpty(url.getParameter(REGISTRY_CLUSTER_TYPE_KEY))) {
invoker = new ListenerInvokerWrapper<>(invoker,
Collections.unmodifiableList(
- invoker.getUrl().getScopeModel().getExtensionLoader(InvokerListener.class)
+ ScopeModelUtil.getExtensionLoader(InvokerListener.class, invoker.getUrl().getScopeModel())
.getActivateExtension(url, INVOKER_LISTENER_KEY)));
}
return invoker;