This is an automated email from the ASF dual-hosted git repository. liujun pushed a commit to branch master-hsf in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 8565af1b2f06523bba45e94bd4d2f39502f886e9 Author: ken.lj <[email protected]> AuthorDate: Fri Dec 13 15:24:23 2019 +0800 merged merge-3.x --- .../org/apache/dubbo/config/AbstractConfig.java | 1 + .../apache/dubbo/rpc/model/AsyncMethodInfo.java | 0 .../org/apache/dubbo/rpc/model/ConsumerModel.java | 89 +++------------------- .../apache/dubbo/rpc/model/ServiceRepository.java | 7 +- .../org/apache/dubbo/config/ReferenceConfig.java | 52 +++++++------ dubbo-dependencies-bom/pom.xml | 2 +- .../dubbo-dependencies-zookeeper/pom.xml | 2 +- pom.xml | 2 +- 8 files changed, 46 insertions(+), 109 deletions(-) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java index b0a9400..c86183e 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java @@ -31,6 +31,7 @@ import org.apache.dubbo.common.utils.StringUtils; import org.apache.dubbo.config.context.ConfigConfigurationAdapter; import org.apache.dubbo.config.context.ConfigManager; import org.apache.dubbo.config.support.Parameter; +import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.dubbo.rpc.model.AsyncMethodInfo; import javax.annotation.PostConstruct; diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/AsyncMethodInfo.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/AsyncMethodInfo.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/AsyncMethodInfo.java rename to dubbo-common/src/main/java/org/apache/dubbo/rpc/model/AsyncMethodInfo.java diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ConsumerModel.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ConsumerModel.java index 81f3780..4bffded 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ConsumerModel.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ConsumerModel.java @@ -17,7 +17,6 @@ package org.apache.dubbo.rpc.model; import org.apache.dubbo.common.utils.Assert; -import org.apache.dubbo.common.utils.CollectionUtils; import org.apache.dubbo.config.ReferenceConfigBase; import java.lang.reflect.Method; @@ -40,7 +39,7 @@ public class ConsumerModel { private Object proxyObject; - private final Map<String, AsyncMethodInfo> methodConfigs = new HashMap<>(); + private Map<String, AsyncMethodInfo> methodConfigs = new HashMap<>(); /** * This constructor create an instance of ConsumerModel and passed objects should not be null. @@ -48,13 +47,11 @@ public class ConsumerModel { * then this constructor will throw {@link IllegalArgumentException} * @param serviceKey Name of the service. * @param proxyObject Proxy object. - * @param attributes Attributes of methods. */ public ConsumerModel(String serviceKey , Object proxyObject , ServiceDescriptor serviceModel - , ReferenceConfigBase<?> referenceConfig - , Map<String, Object> attributes) { + , ReferenceConfigBase<?> referenceConfig) { Assert.notEmptyString(serviceKey, "Service name can't be null or blank"); // Assert.notNull(proxyObject, "Proxy object can't be null"); @@ -63,11 +60,11 @@ public class ConsumerModel { this.proxyObject = proxyObject; this.serviceModel = serviceModel; this.referenceConfig = referenceConfig; + } - if (CollectionUtils.isNotEmptyMap(attributes)) { - attributes.forEach((method, object) -> { - methodConfigs.put(method, (AsyncMethodInfo) object); - }); + public void init(Map<String, AsyncMethodInfo> attributes) { + if (attributes != null) { + this.methodConfigs = attributes; } } @@ -112,75 +109,10 @@ public class ConsumerModel { return referenceConfig; } - public static class AsyncMethodInfo { - // callback instance when async-call is invoked - private Object oninvokeInstance; - - // callback method when async-call is invoked - private Method oninvokeMethod; - - // callback instance when async-call is returned - private Object onreturnInstance; - - // callback method when async-call is returned - private Method onreturnMethod; - - // callback instance when async-call has exception thrown - private Object onthrowInstance; - - // callback method when async-call has exception thrown - private Method onthrowMethod; - - public Object getOninvokeInstance() { - return oninvokeInstance; - } - - public void setOninvokeInstance(Object oninvokeInstance) { - this.oninvokeInstance = oninvokeInstance; - } - - public Method getOninvokeMethod() { - return oninvokeMethod; - } - - public void setOninvokeMethod(Method oninvokeMethod) { - this.oninvokeMethod = oninvokeMethod; - } - - public Object getOnreturnInstance() { - return onreturnInstance; - } - - public void setOnreturnInstance(Object onreturnInstance) { - this.onreturnInstance = onreturnInstance; - } - - public Method getOnreturnMethod() { - return onreturnMethod; - } - - public void setOnreturnMethod(Method onreturnMethod) { - this.onreturnMethod = onreturnMethod; - } - - public Object getOnthrowInstance() { - return onthrowInstance; - } - - public void setOnthrowInstance(Object onthrowInstance) { - this.onthrowInstance = onthrowInstance; - } - - public Method getOnthrowMethod() { - return onthrowMethod; - } - - public void setOnthrowMethod(Method onthrowMethod) { - this.onthrowMethod = onthrowMethod; - } + public AsyncMethodInfo getAsyncInfo(String methodName) { + return methodConfigs.get(methodName); } - /* *************** Start, metadata compatible **************** */ private ServiceMetadata serviceMetadata; @@ -190,14 +122,13 @@ public class ConsumerModel { , Object proxyObject , ServiceDescriptor serviceModel , ReferenceConfigBase<?> referenceConfig - , Map<String, Object> attributes , ServiceMetadata metadata) { - this(serviceKey, proxyObject, serviceModel, referenceConfig, attributes); + this(serviceKey, proxyObject, serviceModel, referenceConfig); this.serviceMetadata = metadata; for (Method method : metadata.getServiceType().getMethods()) { - methodModels.put(method, new ConsumerMethodModel(method, attributes)); + methodModels.put(method, new ConsumerMethodModel(method)); } } diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ServiceRepository.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ServiceRepository.java index faecab7..907837e 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ServiceRepository.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ServiceRepository.java @@ -26,7 +26,6 @@ import org.apache.dubbo.config.ServiceConfigBase; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -81,8 +80,7 @@ public class ServiceRepository extends LifecycleAdapter implements FrameworkExt } public void registerConsumer(String serviceKey, - Map<String, Object> attributes, - ServiceDescriptor serviceModel, + ServiceDescriptor serviceDescriptor, ReferenceConfigBase<?> rc, Object proxy, ServiceMetadata serviceMetadata) { @@ -91,9 +89,8 @@ public class ServiceRepository extends LifecycleAdapter implements FrameworkExt _k -> new ConsumerModel( serviceMetadata.getServiceKey(), proxy, - serviceModel, + serviceDescriptor, rc, - attributes, serviceMetadata ) ); 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 539f891..17b8bea 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 @@ -43,6 +43,7 @@ import org.apache.dubbo.rpc.cluster.directory.StaticDirectory; import org.apache.dubbo.rpc.cluster.support.ClusterUtils; import org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster; import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.AsyncMethodInfo; import org.apache.dubbo.rpc.model.ConsumerModel; import org.apache.dubbo.rpc.model.ServiceDescriptor; import org.apache.dubbo.rpc.model.ServiceRepository; @@ -134,13 +135,18 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> { */ private transient volatile boolean destroyed; + private final ServiceRepository repository; + private DubboBootstrap bootstrap; public ReferenceConfig() { + super(); + this.repository = ApplicationModel.getServiceRepository(); } public ReferenceConfig(Reference reference) { super(reference); + this.repository = ApplicationModel.getServiceRepository(); } public synchronized T get() { @@ -185,15 +191,6 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> { checkAndUpdateSubConfigs(); - //init serivceMetadata - serviceMetadata.setVersion(version); - serviceMetadata.setGroup(group); - serviceMetadata.setDefaultGroup(group); - serviceMetadata.setServiceType(getActualInterface()); - serviceMetadata.setServiceInterfaceName(interfaceName); - // TODO, uncomment this line once service key is unified - serviceMetadata.setServiceKey(URL.buildKey(interfaceName, group, version)); - checkStubAndLocal(interfaceClass); ConfigValidationUtils.checkMock(interfaceClass, this); @@ -223,7 +220,7 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> { // appendParameters(map, consumer, Constants.DEFAULT_KEY); AbstractConfig.appendParameters(map, consumer); AbstractConfig.appendParameters(map, this); - Map<String, Object> attributes = null; + Map<String, AsyncMethodInfo> attributes = null; if (CollectionUtils.isNotEmpty(getMethods())) { attributes = new HashMap<>(); for (MethodConfig methodConfig : getMethods()) { @@ -235,7 +232,7 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> { map.put(methodConfig.getName() + ".retries", "0"); } } - ConsumerModel.AsyncMethodInfo asyncMethodInfo = AbstractConfig.convertMethodConfig2AsyncInfo(methodConfig); + AsyncMethodInfo asyncMethodInfo = AbstractConfig.convertMethodConfig2AsyncInfo(methodConfig); if (asyncMethodInfo != null) { // consumerModel.getMethodModel(methodConfig.getName()).addAttribute(ASYNC_KEY, asyncMethodInfo); attributes.put(methodConfig.getName(), asyncMethodInfo); @@ -253,21 +250,13 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> { serviceMetadata.getAttachments().putAll(map); - ServiceRepository repository = ApplicationModel.getServiceRepository(); - ServiceDescriptor serviceDescriptor = repository.registerService(interfaceClass); - repository.registerConsumer( - serviceMetadata.getServiceKey(), - attributes, - serviceDescriptor, - this, - null, - serviceMetadata); - ref = createProxy(map); serviceMetadata.setTarget(ref); serviceMetadata.addAttribute(PROXY_CLASS_REF, ref); - repository.lookupReferredService(serviceMetadata.getServiceKey()).setProxyObject(ref); + ConsumerModel consumerModel = repository.lookupReferredService(serviceMetadata.getServiceKey()); + consumerModel.setProxyObject(ref); + consumerModel.init(attributes); initialized = true; @@ -397,6 +386,25 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> { } checkInterfaceAndMethods(interfaceClass, getMethods()); } + + //init serivceMetadata + serviceMetadata.setVersion(version); + serviceMetadata.setGroup(group); + serviceMetadata.setDefaultGroup(group); + serviceMetadata.setServiceType(getActualInterface()); + serviceMetadata.setServiceInterfaceName(interfaceName); + // TODO, uncomment this line once service key is unified + serviceMetadata.setServiceKey(URL.buildKey(interfaceName, group, version)); + + ServiceRepository repository = ApplicationModel.getServiceRepository(); + ServiceDescriptor serviceDescriptor = repository.registerService(interfaceClass); + repository.registerConsumer( + serviceMetadata.getServiceKey(), + serviceDescriptor, + this, + null, + serviceMetadata); + resolveFile(); ConfigValidationUtils.validateReferenceConfig(this); appendParameters(); diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml index 0ee2d27..2ff24a9 100644 --- a/dubbo-dependencies-bom/pom.xml +++ b/dubbo-dependencies-bom/pom.xml @@ -162,7 +162,7 @@ <mortbay_jetty_version>6.1.26</mortbay_jetty_version> <portlet_version>2.0</portlet_version> <maven_flatten_version>1.1.0</maven_flatten_version> - <revision>2.7.5-SNAPSHOT</revision> + <revision>2.7.5.hsf-SNAPSHOT</revision> </properties> <dependencyManagement> diff --git a/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml b/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml index 34edd05..4cf825a 100644 --- a/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml +++ b/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml @@ -32,7 +32,7 @@ <packaging>pom</packaging> <properties> - <revision>2.7.5-SNAPSHOT</revision> + <revision>2.7.5.hsf-SNAPSHOT</revision> <maven_flatten_version>1.1.0</maven_flatten_version> </properties> diff --git a/pom.xml b/pom.xml index a457b07..e62a439 100644 --- a/pom.xml +++ b/pom.xml @@ -125,7 +125,7 @@ <arguments /> <checkstyle.skip>true</checkstyle.skip> <rat.skip>true</rat.skip> - <revision>2.7.5-SNAPSHOT</revision> + <revision>2.7.5.hsf-SNAPSHOT</revision> </properties> <modules>
