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 <[email protected]> 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;
