You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2022/02/06 04:07:44 UTC
[dubbo] branch master updated: feat: consumer support specify serialization type (#9550)
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new 2646c9d feat: consumer support specify serialization type (#9550)
2646c9d is described below
commit 2646c9d493061d248b017d44b6d0346925100eef
Author: jessin <18...@163.com>
AuthorDate: Sun Feb 6 12:04:56 2022 +0800
feat: consumer support specify serialization type (#9550)
* consumer support specify serialization type
* xml support config consumer serialization
Co-authored-by: jessinguo <je...@tencent.com>
---
.../dubbo/config/AbstractReferenceConfig.java | 21 +++++++++++++++++----
.../dubbo/config/annotation/DubboReference.java | 6 ++++++
.../apache/dubbo/config/annotation/Reference.java | 6 ++++++
.../builders/AbstractReferenceBuilder.java | 13 +++++++++++++
.../src/main/resources/META-INF/compat/dubbo.xsd | 5 +++++
.../src/main/resources/META-INF/dubbo.xsd | 5 +++++
.../annotation/ReferenceBeanBuilderTest.java | 19 +++++++++----------
7 files changed, 61 insertions(+), 14 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
index f2038a1..9fca8db 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
@@ -16,14 +16,14 @@
*/
package org.apache.dubbo.config;
-import org.apache.dubbo.common.utils.StringUtils;
-import org.apache.dubbo.config.support.Parameter;
-import org.apache.dubbo.rpc.support.ProtocolUtils;
-
import static org.apache.dubbo.common.constants.CommonConstants.INVOKER_LISTENER_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.REFERENCE_FILTER_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.STUB_EVENT_KEY;
+import org.apache.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.config.support.Parameter;
+import org.apache.dubbo.rpc.support.ProtocolUtils;
+
/**
* AbstractConsumerConfig
*
@@ -80,6 +80,11 @@ public abstract class AbstractReferenceConfig extends AbstractInterfaceConfig {
protected String router;
+ /**
+ * The serialization type
+ */
+ protected String serialization;
+
public Boolean isCheck() {
return check;
}
@@ -223,4 +228,12 @@ public abstract class AbstractReferenceConfig extends AbstractInterfaceConfig {
public void setRouter(String router) {
this.router = router;
}
+
+ public String getSerialization() {
+ return serialization;
+ }
+
+ public void setSerialization(String serialization) {
+ this.serialization = serialization;
+ }
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/annotation/DubboReference.java b/dubbo-common/src/main/java/org/apache/dubbo/config/annotation/DubboReference.java
index 34c41a1..231eb83 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/annotation/DubboReference.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/annotation/DubboReference.java
@@ -295,4 +295,10 @@ public @interface DubboReference {
* @see RegistryConstants#PROVIDED_BY
*/
String[] providedBy() default {};
+
+ /**
+ * specify serialization from consumer side
+ * @see org.apache.dubbo.remoting.Constants#SERIALIZATION_KEY
+ */
+ String serialization() default "";
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/annotation/Reference.java b/dubbo-common/src/main/java/org/apache/dubbo/config/annotation/Reference.java
index 82f47ee..a3503e6 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/annotation/Reference.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/annotation/Reference.java
@@ -280,4 +280,10 @@ public @interface Reference {
* @since 2.7.3
*/
String id() default "";
+
+ /**
+ * specify serialization from consumer side
+ * @see org.apache.dubbo.remoting.Constants#SERIALIZATION_KEY
+ */
+ String serialization() default "";
}
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/builders/AbstractReferenceBuilder.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/builders/AbstractReferenceBuilder.java
index d84f309..754ac79 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/builders/AbstractReferenceBuilder.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/builders/AbstractReferenceBuilder.java
@@ -66,6 +66,11 @@ public abstract class AbstractReferenceBuilder<T extends AbstractReferenceConfig
*/
protected String group;
+ /**
+ * The serialization type
+ */
+ protected String serialization;
+
public B check(Boolean check) {
this.check = check;
return getThis();
@@ -126,6 +131,11 @@ public abstract class AbstractReferenceBuilder<T extends AbstractReferenceConfig
return getThis();
}
+ public B serialization(String serialization) {
+ this.serialization = serialization;
+ return getThis();
+ }
+
@Override
public void build(T instance) {
super.build(instance);
@@ -157,5 +167,8 @@ public abstract class AbstractReferenceBuilder<T extends AbstractReferenceConfig
if (!StringUtils.isEmpty(group)) {
instance.setGroup(group);
}
+ if (!StringUtils.isEmpty(serialization)) {
+ instance.setSerialization(serialization);
+ }
}
}
diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
index 57440c7..d05f976 100644
--- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
+++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
@@ -244,6 +244,11 @@
<![CDATA[ The routers ]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
+ <xsd:attribute name="serialization" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[ The serialization protocol of service. ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
index 9df1f9a..f5a21c4 100644
--- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
+++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
@@ -245,6 +245,11 @@
<![CDATA[ The routers ]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
+ <xsd:attribute name="serialization" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[ The serialization protocol of service. ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceBeanBuilderTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceBeanBuilderTest.java
index 029ae16..e4c2ff5 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceBeanBuilderTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceBeanBuilderTest.java
@@ -17,11 +17,17 @@
package org.apache.dubbo.config.spring.beans.factory.annotation;
+import static org.apache.dubbo.common.utils.CollectionUtils.ofSet;
+import static org.springframework.core.annotation.AnnotationUtils.findAnnotation;
+import static org.springframework.util.ReflectionUtils.findField;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.spring.ReferenceBean;
import org.apache.dubbo.rpc.model.ApplicationModel;
-
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -34,14 +40,6 @@ import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.apache.dubbo.common.utils.CollectionUtils.ofSet;
-import static org.springframework.core.annotation.AnnotationUtils.findAnnotation;
-import static org.springframework.util.ReflectionUtils.findField;
-
/**
* {@link ReferenceBeanBuilder} Test
*
@@ -59,7 +57,7 @@ public class ReferenceBeanBuilderTest {
interfaceClass = CharSequence.class,
interfaceName = "java.lang.CharSequence",
version = "1.0.0", group = "TEST_GROUP", url = "dubbo://localhost:12345",
- client = "client", generic = true, injvm = true,
+ client = "client", generic = true, injvm = true, serialization = "fastjson",
check = false, init = false, lazy = true,
stubevent = true, reconnect = "reconnect", sticky = true,
proxy = "javassist", stub = "java.lang.CharSequence", cluster = "failover",
@@ -130,6 +128,7 @@ public class ReferenceBeanBuilderTest {
Assertions.assertEquals("reference", referenceBean.getId());
Assertions.assertEquals(ofSet("service1", "service2", "service3"), referenceBean.getSubscribedServices());
Assertions.assertEquals("service1,service2,service3", referenceBean.getProvidedBy());
+ Assertions.assertEquals("fastjson", referenceBean.getSerialization());
// parameters
Map<String, String> parameters = new HashMap<String, String>();