Skip to content

Commit ef4268b

Browse files
committed
support 'merge' attribute in @reference annotation and @method @annotation nested in @reference
1 parent 3844ac7 commit ef4268b

File tree

6 files changed

+44
-8
lines changed

6 files changed

+44
-8
lines changed

dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/annotation/Method.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525

2626
/**
2727
* @since 2.6.5
28-
* *
29-
* * 2018/9/29
28+
* *
29+
* * 2018/9/29
3030
*/
3131
@Documented
3232
@Retention(RetentionPolicy.RUNTIME)
@@ -66,4 +66,6 @@
6666
String validation() default "";
6767

6868
Argument[] arguments() default {};
69+
70+
String merger() default "";
6971
}

dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/annotation/Reference.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,4 +280,10 @@
280280
* @since 2.7.3
281281
*/
282282
String id() default "";
283+
284+
/**
285+
* Group merger
286+
* @return
287+
*/
288+
String merger() default "";
283289
}

dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/MethodConfigTest.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,11 @@ public class MethodConfigTest {
6161
private static final int ARGUMENTS_INDEX = 24;
6262
private static final boolean ARGUMENTS_CALLBACK = true;
6363
private static final String ARGUMENTS_TYPE = "sss";
64+
private static final String MERGER = "false";
6465

6566
@Reference(methods = {@Method(name = METHOD_NAME, timeout = TIMEOUT, retries = RETRIES, loadbalance = LOADBALANCE, async = ASYNC,
6667
actives = ACTIVES, executes = EXECUTES, deprecated = DEPERECATED, sticky = STICKY, oninvoke = ONINVOKE, onthrow = ONTHROW, onreturn = ONRETURN, cache = CACHE, validation = VALIDATION,
67-
arguments = {@Argument(index = ARGUMENTS_INDEX, callback = ARGUMENTS_CALLBACK, type = ARGUMENTS_TYPE)})})
68+
arguments = {@Argument(index = ARGUMENTS_INDEX, callback = ARGUMENTS_CALLBACK, type = ARGUMENTS_TYPE)}, merger = MERGER)})
6869
private String testField;
6970

7071
@Test
@@ -90,10 +91,11 @@ public void testStaticConstructor() throws NoSuchFieldException {
9091
assertThat(ARGUMENTS_INDEX, equalTo(methodConfig.getArguments().get(0).getIndex().intValue()));
9192
assertThat(ARGUMENTS_CALLBACK, equalTo(methodConfig.getArguments().get(0).isCallback()));
9293
assertThat(ARGUMENTS_TYPE, equalTo(methodConfig.getArguments().get(0).getType()));
94+
assertThat(MERGER,equalTo(methodConfig.getMerger()));
9395
}
9496

9597
@Test
96-
public void testName() throws Exception {
98+
public void testName() throws Exception {
9799
MethodConfig method = new MethodConfig();
98100
method.setName("hello");
99101
assertThat(method.getName(), equalTo("hello"));
@@ -237,4 +239,11 @@ public void testReturn() throws Exception {
237239
method.setReturn(true);
238240
assertThat(method.isReturn(), is(true));
239241
}
242+
243+
@Test
244+
public void testSetMerger() throws Exception {
245+
MethodConfig method = new MethodConfig();
246+
method.setMerger("default");
247+
assertThat(method.getMerger(),equalTo("default"));
248+
}
240249
}

dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,12 +145,14 @@ public void testConstructWithReferenceAnnotation() throws NoSuchFieldException {
145145
Assertions.assertEquals(((MethodConfig) referenceConfig.getMethods().get(0)).getOnreturn(), "r");
146146
Assertions.assertEquals(((MethodConfig) referenceConfig.getMethods().get(0)).getOnthrow(), "t");
147147
Assertions.assertEquals(((MethodConfig) referenceConfig.getMethods().get(0)).getCache(), "c");
148+
Assertions.assertEquals("true", referenceConfig.getMerger());
149+
Assertions.assertEquals("false", ((MethodConfig) referenceConfig.getMethods().get(0)).getMerger());
148150
}
149151

150152

151-
@Reference(methods = {@Method(name = "sayHello", timeout = 1300, retries = 4, loadbalance = "random", async = true,
153+
@Reference(merger="true", methods = {@Method(name = "sayHello", timeout = 1300, retries = 4, loadbalance = "random", async = true,
152154
actives = 3, executes = 5, deprecated = true, sticky = true, oninvoke = "i", onthrow = "t", onreturn = "r", cache = "c", validation = "v",
153-
arguments = {@Argument(index = 24, callback = true, type = "sss")})})
155+
arguments = {@Argument(index = 24, callback = true, type = "sss")}, merger = "false")})
154156
private InnerTest innerTest;
155157

156158
private class InnerTest {

dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ public void test() {
115115
Assert.assertEquals("cache", referenceBean.getCache());
116116
Assert.assertEquals("default,default", referenceBean.getFilter());
117117
Assert.assertEquals("default,default", referenceBean.getListener());
118+
Assert.assertEquals("true",referenceBean.getMerger());
118119

119120
Map<String, String> data = new LinkedHashMap<String, String>();
120121
data.put("key1", "value1");
@@ -141,7 +142,7 @@ private static class TestBean {
141142
loadbalance = "random", async = true, actives = 1, sent = true,
142143
mock = "mock", validation = "validation", timeout = 2, cache = "cache",
143144
filter = {"default", "default"}, listener = {"default", "default"}, parameters = {"key1", "value1"}, application = "application",
144-
module = "module", consumer = "consumer", monitor = "monitor", registry = {"registry1", "registry2"}
145+
module = "module", consumer = "consumer", monitor = "monitor", registry = {"registry1", "registry2"}, merger = "true"
145146
)
146147
private DemoService demoService;
147148

dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceBeanBuilderTest.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
package org.apache.dubbo.config.spring.beans.factory.annotation;
1818

1919

20+
import org.apache.dubbo.config.MethodConfig;
21+
import org.apache.dubbo.config.annotation.Method;
2022
import org.apache.dubbo.config.annotation.Reference;
2123
import org.apache.dubbo.config.spring.ReferenceBean;
2224

@@ -30,6 +32,7 @@
3032

3133
import java.util.Collections;
3234
import java.util.HashMap;
35+
import java.util.List;
3336
import java.util.Map;
3437

3538
import static org.springframework.core.annotation.AnnotationUtils.findAnnotation;
@@ -61,7 +64,8 @@ public class ReferenceBeanBuilderTest {
6164
timeout = 3, cache = "cache", filter = {"echo", "generic", "accesslog"},
6265
listener = {"deprecated"}, parameters = {"n1=v1 ", "n2 = v2 ", " n3 = v3 "},
6366
application = "application",
64-
module = "module", consumer = "consumer", monitor = "monitor", registry = {"registry"}
67+
module = "module", consumer = "consumer", monitor = "monitor", registry = {"registry"},
68+
merger = "true", methods = {@Method(name = "method1", timeout = 1000, merger = "false")}
6569
)
6670
private static final Object TEST_FIELD = new Object();
6771

@@ -121,5 +125,17 @@ public void testBuild() throws Exception {
121125
Assert.assertNull(referenceBean.getConsumer());
122126
Assert.assertNull(referenceBean.getMonitor());
123127
Assert.assertEquals(Collections.emptyList(), referenceBean.getRegistries());
128+
129+
// merge
130+
Assert.assertEquals("true", referenceBean.getMerger());
131+
132+
// method
133+
List<MethodConfig> methods = referenceBean.getMethods();
134+
Assert.assertNotNull(methods);
135+
Assert.assertEquals(1, methods.size());
136+
MethodConfig methodConfig = methods.get(0);
137+
Assert.assertEquals("false", methodConfig.getMerger());
138+
Assert.assertEquals(1000, methodConfig.getTimeout().intValue());
139+
124140
}
125141
}

0 commit comments

Comments
 (0)