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/12/13 07:24:55 UTC

[dubbo] 14/14: merged merge-3.x

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 <ke...@gmail.com>
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>