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>