From 45b3ab4436b4763e1890ded0728137de95df699d Mon Sep 17 00:00:00 2001 From: Jeff-Lv Date: Fri, 12 Oct 2018 11:40:11 +0800 Subject: [PATCH] Merge pull request #2636, move the classes of model from config to rpc-api for reusing. --- .../apache/dubbo/config/ReferenceConfig.java | 6 ++--- .../apache/dubbo/config/ServiceConfig.java | 6 ++--- .../org/apache/dubbo/qos/command/impl/Ls.java | 6 ++--- .../dubbo/qos/command/impl/Offline.java | 4 ++-- .../apache/dubbo/qos/command/impl/Online.java | 4 ++-- .../apache/dubbo/qos/command/impl/LsTest.java | 6 ++--- .../dubbo/qos/command/impl/OfflineTest.java | 4 ++-- .../dubbo/qos/command/impl/OnlineTest.java | 4 ++-- .../dubbo/rpc}/model/ApplicationModel.java | 4 ++-- .../dubbo/rpc}/model/ConsumerMethodModel.java | 16 ++++--------- .../dubbo/rpc}/model/ConsumerModel.java | 23 ++++--------------- .../dubbo/rpc}/model/ProviderMethodModel.java | 2 +- .../dubbo/rpc}/model/ProviderModel.java | 16 ++++--------- 13 files changed, 37 insertions(+), 64 deletions(-) rename {dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config => dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc}/model/ApplicationModel.java (96%) rename {dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config => dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc}/model/ConsumerMethodModel.java (85%) rename {dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config => dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc}/model/ConsumerModel.java (79%) rename {dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config => dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc}/model/ProviderMethodModel.java (98%) rename {dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config => dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc}/model/ProviderModel.java (87%) diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java index 1a82c6af677..7e4e4a449cd 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java @@ -27,8 +27,6 @@ import org.apache.dubbo.common.utils.ReflectUtils; import org.apache.dubbo.common.utils.StringUtils; import org.apache.dubbo.config.annotation.Reference; -import org.apache.dubbo.config.model.ApplicationModel; -import org.apache.dubbo.config.model.ConsumerModel; import org.apache.dubbo.config.support.Parameter; import org.apache.dubbo.rpc.Invoker; import org.apache.dubbo.rpc.Protocol; @@ -38,6 +36,8 @@ import org.apache.dubbo.rpc.cluster.directory.StaticDirectory; import org.apache.dubbo.rpc.cluster.support.AvailableCluster; import org.apache.dubbo.rpc.cluster.support.ClusterUtils; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.ConsumerModel; import org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol; import org.apache.dubbo.rpc.service.GenericService; import org.apache.dubbo.rpc.support.ProtocolUtils; @@ -334,7 +334,7 @@ private void init() { //attributes are stored by system context. StaticContext.getSystemContext().putAll(attributes); ref = createProxy(map); - ConsumerModel consumerModel = new ConsumerModel(getUniqueServiceName(), this, ref, interfaceClass.getMethods()); + ConsumerModel consumerModel = new ConsumerModel(getUniqueServiceName(), ref, interfaceClass.getMethods()); ApplicationModel.initConsumerModel(getUniqueServiceName(), consumerModel); } 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 e9d5e6b5671..29d5d11eddc 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 @@ -27,8 +27,6 @@ import org.apache.dubbo.common.utils.StringUtils; import org.apache.dubbo.config.annotation.Service; import org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker; -import org.apache.dubbo.config.model.ApplicationModel; -import org.apache.dubbo.config.model.ProviderModel; import org.apache.dubbo.config.support.Parameter; import org.apache.dubbo.rpc.Exporter; import org.apache.dubbo.rpc.Invoker; @@ -36,6 +34,8 @@ import org.apache.dubbo.rpc.ProxyFactory; import org.apache.dubbo.rpc.ServiceClassHolder; import org.apache.dubbo.rpc.cluster.ConfiguratorFactory; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.ProviderModel; import org.apache.dubbo.rpc.service.GenericService; import org.apache.dubbo.rpc.support.ProtocolUtils; @@ -315,7 +315,7 @@ protected synchronized void doExport() { path = interfaceName; } doExportUrls(); - ProviderModel providerModel = new ProviderModel(getUniqueServiceName(), this, ref); + ProviderModel providerModel = new ProviderModel(getUniqueServiceName(), ref, interfaceClass); ApplicationModel.initProviderModel(getUniqueServiceName(), providerModel); } diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Ls.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Ls.java index 94fb0e96f7d..8bd25fbb860 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Ls.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Ls.java @@ -16,9 +16,6 @@ */ package org.apache.dubbo.qos.command.impl; -import org.apache.dubbo.config.model.ApplicationModel; -import org.apache.dubbo.config.model.ConsumerModel; -import org.apache.dubbo.config.model.ProviderModel; import org.apache.dubbo.qos.command.BaseCommand; import org.apache.dubbo.qos.command.CommandContext; import org.apache.dubbo.qos.command.annotation.Cmd; @@ -26,6 +23,9 @@ import org.apache.dubbo.registry.support.ConsumerInvokerWrapper; import org.apache.dubbo.registry.support.ProviderConsumerRegTable; import org.apache.dubbo.registry.support.ProviderInvokerWrapper; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.ConsumerModel; +import org.apache.dubbo.rpc.model.ProviderModel; import java.util.Collection; import java.util.Set; diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Offline.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Offline.java index a886e7e083a..79c41f3b669 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Offline.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Offline.java @@ -19,8 +19,6 @@ import org.apache.dubbo.common.extension.ExtensionLoader; import org.apache.dubbo.common.logger.Logger; import org.apache.dubbo.common.logger.LoggerFactory; -import org.apache.dubbo.config.model.ApplicationModel; -import org.apache.dubbo.config.model.ProviderModel; import org.apache.dubbo.qos.command.BaseCommand; import org.apache.dubbo.qos.command.CommandContext; import org.apache.dubbo.qos.command.annotation.Cmd; @@ -28,6 +26,8 @@ import org.apache.dubbo.registry.RegistryFactory; import org.apache.dubbo.registry.support.ProviderConsumerRegTable; import org.apache.dubbo.registry.support.ProviderInvokerWrapper; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.ProviderModel; import java.util.Collection; import java.util.Set; diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Online.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Online.java index 10cf453b570..ce92d612827 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Online.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Online.java @@ -19,8 +19,6 @@ import org.apache.dubbo.common.extension.ExtensionLoader; import org.apache.dubbo.common.logger.Logger; import org.apache.dubbo.common.logger.LoggerFactory; -import org.apache.dubbo.config.model.ApplicationModel; -import org.apache.dubbo.config.model.ProviderModel; import org.apache.dubbo.qos.command.BaseCommand; import org.apache.dubbo.qos.command.CommandContext; import org.apache.dubbo.qos.command.annotation.Cmd; @@ -28,6 +26,8 @@ import org.apache.dubbo.registry.RegistryFactory; import org.apache.dubbo.registry.support.ProviderConsumerRegTable; import org.apache.dubbo.registry.support.ProviderInvokerWrapper; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.ProviderModel; import java.util.Collection; import java.util.Set; diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LsTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LsTest.java index edc8aff35e9..8cef26d2af5 100644 --- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LsTest.java +++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LsTest.java @@ -17,14 +17,14 @@ package org.apache.dubbo.qos.command.impl; import org.apache.dubbo.common.URL; -import org.apache.dubbo.config.model.ApplicationModel; -import org.apache.dubbo.config.model.ConsumerModel; -import org.apache.dubbo.config.model.ProviderModel; import org.apache.dubbo.qos.command.CommandContext; import org.apache.dubbo.registry.integration.RegistryDirectory; import org.apache.dubbo.registry.support.ProviderConsumerRegTable; import org.apache.dubbo.registry.support.ProviderInvokerWrapper; import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.ConsumerModel; +import org.apache.dubbo.rpc.model.ProviderModel; import org.junit.Test; import org.mockito.Mockito; diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OfflineTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OfflineTest.java index d760de86834..f0f31ac7ac5 100644 --- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OfflineTest.java +++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OfflineTest.java @@ -17,13 +17,13 @@ package org.apache.dubbo.qos.command.impl; import org.apache.dubbo.common.URL; -import org.apache.dubbo.config.model.ApplicationModel; -import org.apache.dubbo.config.model.ProviderModel; import org.apache.dubbo.qos.command.CommandContext; import org.apache.dubbo.registry.Registry; import org.apache.dubbo.registry.support.ProviderConsumerRegTable; import org.apache.dubbo.registry.support.ProviderInvokerWrapper; import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.ProviderModel; import org.junit.Test; import org.mockito.Mockito; diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OnlineTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OnlineTest.java index c5701703021..d82cb496508 100644 --- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OnlineTest.java +++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OnlineTest.java @@ -17,13 +17,13 @@ package org.apache.dubbo.qos.command.impl; import org.apache.dubbo.common.URL; -import org.apache.dubbo.config.model.ApplicationModel; -import org.apache.dubbo.config.model.ProviderModel; import org.apache.dubbo.qos.command.CommandContext; import org.apache.dubbo.registry.Registry; import org.apache.dubbo.registry.support.ProviderConsumerRegTable; import org.apache.dubbo.registry.support.ProviderInvokerWrapper; import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.ProviderModel; import org.junit.Test; import static org.apache.dubbo.registry.support.ProviderConsumerRegTable.getProviderInvoker; diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ApplicationModel.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java similarity index 96% rename from dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ApplicationModel.java rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java index 36d4f03825f..98d32c10e51 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ApplicationModel.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.config.model; +package org.apache.dubbo.rpc.model; import org.apache.dubbo.common.logger.Logger; import org.apache.dubbo.common.logger.LoggerFactory; @@ -30,7 +30,7 @@ import static java.util.stream.Collectors.toSet; -// TODO need to adjust project structure in order to fully utilize the methods introduced here. +// adjust project structure in order to fully utilize the methods introduced here. public class ApplicationModel { protected static final Logger logger = LoggerFactory.getLogger(ApplicationModel.class); diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ConsumerMethodModel.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ConsumerMethodModel.java similarity index 85% rename from dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ConsumerMethodModel.java rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ConsumerMethodModel.java index 6a476027f42..96f55bee4b7 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ConsumerMethodModel.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ConsumerMethodModel.java @@ -14,17 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.config.model; +package org.apache.dubbo.rpc.model; import org.apache.dubbo.common.Constants; -import org.apache.dubbo.config.ReferenceConfig; import java.lang.reflect.Method; public class ConsumerMethodModel { private final Method method; - private final ReferenceConfig metadata; -// private final boolean isCallBack; + // private final boolean isCallBack; // private final boolean isFuture; private final String[] parameterTypes; private final Class[] parameterClasses; @@ -32,13 +30,12 @@ public class ConsumerMethodModel { private final String methodName; private final boolean generic; - public ConsumerMethodModel(Method method, ReferenceConfig metadata) { + public ConsumerMethodModel(Method method) { this.method = method; this.parameterClasses = method.getParameterTypes(); this.returnClass = method.getReturnType(); this.parameterTypes = this.createParamSignature(parameterClasses); this.methodName = method.getName(); - this.metadata = metadata; this.generic = methodName.equals(Constants.$INVOKE) && parameterTypes != null && parameterTypes.length == 3; } @@ -51,7 +48,6 @@ public Class getReturnClass() { } - public String getMethodName() { return methodName; } @@ -60,13 +56,9 @@ public String[] getParameterTypes() { return parameterTypes; } - public ReferenceConfig getMetadata() { - return metadata; - } - private String[] createParamSignature(Class[] args) { if (args == null || args.length == 0) { - return new String[] {}; + return new String[]{}; } String[] paramSig = new String[args.length]; for (int x = 0; x < args.length; x++) { diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ConsumerModel.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ConsumerModel.java similarity index 79% rename from dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ConsumerModel.java rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ConsumerModel.java index 57d60865992..35ff391e1dd 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ConsumerModel.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ConsumerModel.java @@ -14,9 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.config.model; - -import org.apache.dubbo.config.ReferenceConfig; +package org.apache.dubbo.rpc.model; import java.lang.reflect.Method; import java.util.ArrayList; @@ -25,33 +23,22 @@ import java.util.Map; public class ConsumerModel { - private ReferenceConfig metadata; - private Object proxyObject; - private String serviceName; + private final Object proxyObject; + private final String serviceName; private final Map methodModels = new IdentityHashMap(); - public ConsumerModel(String serviceName,ReferenceConfig metadata, Object proxyObject, Method[] methods) { + public ConsumerModel(String serviceName, Object proxyObject, Method[] methods) { this.serviceName = serviceName; - this.metadata = metadata; this.proxyObject = proxyObject; if (proxyObject != null) { for (Method method : methods) { - methodModels.put(method, new ConsumerMethodModel(method, metadata)); + methodModels.put(method, new ConsumerMethodModel(method)); } } } - /** - * Return service metadata for consumer - * - * @return service metadata - */ - public ReferenceConfig getMetadata() { - return metadata; - } - public Object getProxyObject() { return proxyObject; } diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ProviderMethodModel.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ProviderMethodModel.java similarity index 98% rename from dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ProviderMethodModel.java rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ProviderMethodModel.java index 24ba3e61ae2..d7b8a9bb874 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ProviderMethodModel.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ProviderMethodModel.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.config.model; +package org.apache.dubbo.rpc.model; import java.lang.reflect.Method; diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ProviderModel.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ProviderModel.java similarity index 87% rename from dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ProviderModel.java rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ProviderModel.java index 2519b704d50..b91d0cba0d0 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ProviderModel.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ProviderModel.java @@ -14,9 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.config.model; - -import org.apache.dubbo.config.ServiceConfig; +package org.apache.dubbo.rpc.model; import java.lang.reflect.Method; import java.util.ArrayList; @@ -28,17 +26,17 @@ public class ProviderModel { private final String serviceName; private final Object serviceInstance; - private final ServiceConfig metadata; + private final Class serviceInterfaceClass; private final Map> methods = new HashMap>(); - public ProviderModel(String serviceName, ServiceConfig metadata, Object serviceInstance) { + public ProviderModel(String serviceName, Object serviceInstance, Class serviceInterfaceClass) { if (null == serviceInstance) { throw new IllegalArgumentException("Service[" + serviceName + "]Target is NULL."); } this.serviceName = serviceName; - this.metadata = metadata; this.serviceInstance = serviceInstance; + this.serviceInterfaceClass = serviceInterfaceClass; initMethod(); } @@ -48,10 +46,6 @@ public String getServiceName() { return serviceName; } - public ServiceConfig getMetadata() { - return metadata; - } - public Object getServiceInstance() { return serviceInstance; } @@ -78,7 +72,7 @@ public ProviderMethodModel getMethodModel(String methodName, String[] argTypes) private void initMethod() { Method[] methodsToExport = null; - methodsToExport = metadata.getInterfaceClass().getMethods(); + methodsToExport = this.serviceInterfaceClass.getMethods(); for (Method method : methodsToExport) { method.setAccessible(true);