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 2018/11/06 09:19:58 UTC
[incubator-dubbo] branch dev-metadata updated: Merge pull request
#2744, metadata unit test and generic test, refactor zk store.
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch dev-metadata
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/dev-metadata by this push:
new 072b51e Merge pull request #2744, metadata unit test and generic test, refactor zk store.
072b51e is described below
commit 072b51e0bafc0443731de0767867ac3d5f9498e8
Author: cvictory <sh...@gmail.com>
AuthorDate: Tue Nov 6 17:19:53 2018 +0800
Merge pull request #2744, metadata unit test and generic test, refactor zk store.
---
dubbo-compatible/pom.xml | 7 +-
.../apache/dubbo/generic/GenericServiceTest.java | 181 ++++++++++++-
.../org/apache/dubbo/service/ComplexObject.java | 282 +++++++++++++++++++++
.../java/org/apache/dubbo/service/DemoService.java | 8 +-
.../org/apache/dubbo/service/DemoServiceImpl.java | 15 +-
.../dubbo/config/AbstractInterfaceConfig.java | 2 +-
.../META-INF/spring/dubbo-demo-consumer.xml | 3 +-
.../META-INF/spring/dubbo-demo-provider.xml | 2 +-
.../definition/builder/CollectionTypeBuilder.java | 3 +-
.../definition/model/FullServiceDefinition.java | 8 +
.../definition/model/MethodDefinition.java | 18 ++
.../definition/model/ServiceDefinition.java | 16 ++
.../metadata/definition/model/TypeDefinition.java | 18 ++
.../dubbo/metadata/definition/util/ClassUtils.java | 4 +-
.../definition/ServiceDefinitionBuildderTest.java | 81 ++++++
.../common/ResultWithRawCollections.java | 2 +-
.../metadata/definition/service/ComplexObject.java | 280 ++++++++++++++++++++
.../metadata/definition/service/DemoService.java} | 18 +-
.../dubbo-metadata-report-api/pom.xml | 9 +-
.../identifier/ConsumerMetadataIdentifier.java | 4 +-
.../metadata/identifier/MetadataIdentifier.java | 5 +-
.../identifier/ProviderMetadataIdentifier.java | 2 +-
.../integration/MetadataReportService.java | 1 +
.../dubbo/metadata/metadata/MethodDescriptor.java | 54 ----
.../dubbo/metadata/metadata/ServiceDescriptor.java | 55 ----
.../dubbo/metadata/metadata/TypeDescriptor.java | 65 -----
.../metadata/builder/ArrayTypeBuilder.java | 36 ---
.../metadata/builder/CollectionTypeBuilder.java | 59 -----
.../metadata/builder/DefaultTypeBuilder.java | 113 ---------
.../metadata/metadata/builder/EnumTypeBuilder.java | 45 ----
.../metadata/metadata/builder/MapTypeBuilder.java | 60 -----
.../metadata/builder/ServiceDescriptorBuilder.java | 71 ------
.../metadata/metadata/builder/TypeBuilder.java | 23 --
.../metadata/builder/TypeDescriptorBuilder.java | 63 -----
.../metadata/support/AbstractMetadataReport.java | 13 +-
.../metadata/integration/RetryTestService.java | 2 +-
.../metadata/builder/ArrayTypeBuilderTest.java | 89 -------
.../builder/CollectionTypeBuilderTest.java | 90 -------
.../metadata/metadata/builder/ComplexEnum.java | 16 --
.../metadata/metadata/builder/ComplexObject.java | 37 ---
.../metadata/builder/DefaultTypeBuilderTest.java | 64 -----
.../metadata/builder/EnumTypeBuilderTest.java | 84 ------
.../metadata/builder/MapTypeBuilderTest.java | 89 -------
.../builder/ServiceDescriptorBuilderTest.java | 25 --
.../metadata/metadata/builder/SingleEnum.java | 8 -
.../metadata/metadata/builder/TestService.java | 45 ----
.../builder/TypeDescriptorBuilderTest.java | 101 --------
.../store/test/JTestMetadataReport4Test.java | 3 +-
.../support/AbstractMetadataReportFactoryTest.java | 1 -
.../support/AbstractMetadataReportTest.java | 11 +-
.../store/zookeeper/ZookeeperMetadataReport.java | 10 +-
.../zookeeper/ZookeeperMetadataReportTest.java | 32 +--
.../java/org/apache/dubbo/registry/ZKTools.java | 4 +-
.../dubbo/remoting/zookeeper/ZookeeperClient.java | 4 +
.../zookeeper/curator/CuratorZookeeperClient.java | 40 +++
.../zookeeper/support/AbstractZookeeperClient.java | 28 ++
.../zookeeper/zkclient/ZkClientWrapper.java | 15 ++
.../zkclient/ZkclientZookeeperClient.java | 25 ++
.../curator/CuratorZookeeperClientTest.java | 30 ++-
.../zkclient/ZkclientZookeeperClientTest.java | 30 ++-
.../webservice/WebserviceProtocolTest.java | 4 +-
61 files changed, 1144 insertions(+), 1369 deletions(-)
diff --git a/dubbo-compatible/pom.xml b/dubbo-compatible/pom.xml
index 1da947f..95be710 100644
--- a/dubbo-compatible/pom.xml
+++ b/dubbo-compatible/pom.xml
@@ -79,5 +79,10 @@
<version>${project.parent.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>fastjson</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java
index 9bc4cdc..c18334a 100644
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java
+++ b/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java
@@ -17,20 +17,32 @@
package org.apache.dubbo.generic;
-import com.alibaba.dubbo.rpc.service.GenericService;
+import com.alibaba.fastjson.JSON;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.service.DemoService;
-import org.apache.dubbo.service.DemoServiceImpl;
+import org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder;
+import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
+import org.apache.dubbo.metadata.definition.model.MethodDefinition;
+import org.apache.dubbo.metadata.definition.model.TypeDefinition;
import org.apache.dubbo.rpc.Exporter;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.ProxyFactory;
-
+import org.apache.dubbo.rpc.service.GenericService;
+import org.apache.dubbo.service.ComplexObject;
+import org.apache.dubbo.service.DemoService;
+import org.apache.dubbo.service.DemoServiceImpl;
import org.junit.Assert;
import org.junit.Test;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
public class GenericServiceTest {
@Test
@@ -75,4 +87,165 @@ public class GenericServiceTest {
invoker.destroy();
exporter.unexport();
}
+
+ @Test
+ public void testGenericComplexCompute4FullServiceMetadata() {
+ DemoService server = new DemoServiceImpl();
+ ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
+ Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
+ URL url = URL.valueOf("dubbo://127.0.0.1:5342/" + DemoService.class.getName() + "?version=1.0.0&generic=true$timeout=3000");
+ Exporter<DemoService> exporter = protocol.export(proxyFactory.getInvoker(server, DemoService.class, url));
+
+
+ String var1 = "v1";
+ int var2 = 234;
+ long l = 555;
+ String[] var3 = {"var31", "var32"};
+ List<Integer> var4 = Arrays.asList(2, 4, 8);
+ ComplexObject.TestEnum testEnum = ComplexObject.TestEnum.VALUE2;
+
+ FullServiceDefinition fullServiceDefinition = ServiceDefinitionBuilder.buildFullDefinition(DemoService.class);
+ MethodDefinition methodDefinition = getMethod("complexCompute", fullServiceDefinition.getMethods());
+ Map parm2= createComplextObject(fullServiceDefinition,var1, var2, l, var3, var4, testEnum);
+ ComplexObject complexObject = map2bean(parm2);
+
+ Invoker<GenericService> invoker = protocol.refer(GenericService.class, url);
+
+
+ GenericService client = proxyFactory.getProxy(invoker, true);
+ Object result = client.$invoke(methodDefinition.getName(), methodDefinition.getParameterTypes(), new Object[]{"haha", parm2});
+ Assert.assertEquals("haha###" + complexObject.toString(), result);
+
+
+ Invoker<DemoService> invoker2 = protocol.refer(DemoService.class, url);
+ GenericService client2 = (GenericService) proxyFactory.getProxy(invoker2, true);
+ Object result2 = client2.$invoke("complexCompute", methodDefinition.getParameterTypes(), new Object[]{"haha2", parm2});
+ Assert.assertEquals("haha2###" + complexObject.toString(), result2);
+
+ invoker.destroy();
+ exporter.unexport();
+ }
+
+ @Test
+ public void testGenericFindComplexObject4FullServiceMetadata() {
+ DemoService server = new DemoServiceImpl();
+ ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
+ Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
+ URL url = URL.valueOf("dubbo://127.0.0.1:5342/" + DemoService.class.getName() + "?version=1.0.0&generic=true$timeout=3000");
+ Exporter<DemoService> exporter = protocol.export(proxyFactory.getInvoker(server, DemoService.class, url));
+
+
+ String var1 = "v1";
+ int var2 = 234;
+ long l = 555;
+ String[] var3 = {"var31", "var32"};
+ List<Integer> var4 = Arrays.asList(2, 4, 8);
+ ComplexObject.TestEnum testEnum = ComplexObject.TestEnum.VALUE2;
+ //ComplexObject complexObject = createComplexObject(var1, var2, l, var3, var4, testEnum);
+
+ Invoker<GenericService> invoker = protocol.refer(GenericService.class, url);
+
+ GenericService client = proxyFactory.getProxy(invoker, true);
+ Object result = client.$invoke("findComplexObject", new String[]{"java.lang.String", "int", "long", "java.lang.String[]", "java.util.List", "org.apache.dubbo.service.ComplexObject$TestEnum"},
+ new Object[]{var1, var2, l, var3, var4, testEnum});
+ Assert.assertNotNull(result);
+ ComplexObject r = map2bean((Map) result);
+ Assert.assertEquals(r, createComplexObject(var1, var2, l, var3, var4, testEnum));
+
+ invoker.destroy();
+ exporter.unexport();
+ }
+
+ MethodDefinition getMethod(String methodName, List<MethodDefinition> list) {
+ for (MethodDefinition methodDefinition : list) {
+ if (methodDefinition.getName().equals(methodName)) {
+ return methodDefinition;
+ }
+ }
+ return null;
+ }
+
+ Map<String, Object> createComplextObject(FullServiceDefinition fullServiceDefinition, String var1, int var2, long l, String[] var3, List<Integer> var4, ComplexObject.TestEnum testEnum) {
+ List<TypeDefinition> typeDefinitions = fullServiceDefinition.getTypes();
+ TypeDefinition topTypeDefinition = null;
+ TypeDefinition innerTypeDefinition = null;
+ TypeDefinition inner2TypeDefinition = null;
+ TypeDefinition inner3TypeDefinition = null;
+ for (TypeDefinition typeDefinition : typeDefinitions) {
+ if (typeDefinition.getType().equals(ComplexObject.class.getName())) {
+ topTypeDefinition = typeDefinition;
+ } else if (typeDefinition.getType().equals(ComplexObject.InnerObject.class.getName())) {
+ innerTypeDefinition = typeDefinition;
+ } else if (typeDefinition.getType().contains(ComplexObject.InnerObject2.class.getName())) {
+ inner2TypeDefinition = typeDefinition;
+ } else if (typeDefinition.getType().equals(ComplexObject.InnerObject3.class.getName())) {
+ inner3TypeDefinition = typeDefinition;
+ }
+ }
+ Assert.assertEquals(topTypeDefinition.getProperties().get("v").getType(), "long");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("maps").getType(), "java.util.Map<java.lang.String, java.lang.String>");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("innerObject").getType(), "org.apache.dubbo.service.ComplexObject$InnerObject");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("intList").getType(), "java.util.List<java.lang.Integer>");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("strArrays").getType(), "java.lang.String[]");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("innerObject3").getType(), "org.apache.dubbo.service.ComplexObject.InnerObject3[]");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("testEnum").getType(), "org.apache.dubbo.service.ComplexObject.TestEnum");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("innerObject2").getType(), "java.util.Set<org.apache.dubbo.service.ComplexObject$InnerObject2>");
+
+ Assert.assertSame(innerTypeDefinition.getProperties().get("innerA").getType(), "java.lang.String");
+ Assert.assertSame(innerTypeDefinition.getProperties().get("innerB").getType(), "int");
+
+ Assert.assertSame(inner2TypeDefinition.getProperties().get("innerA2").getType(), "java.lang.String");
+ Assert.assertSame(inner2TypeDefinition.getProperties().get("innerB2").getType(), "int");
+
+ Assert.assertSame(inner3TypeDefinition.getProperties().get("innerA3").getType(), "java.lang.String");
+
+ Map<String, Object> result = new HashMap<>();
+ result.put("v", l);
+ Map maps = new HashMap<>(4);
+ maps.put(var1 + "_k1", var1 + "_v1");
+ maps.put(var1 + "_k2", var1 + "_v2");
+ result.put("maps", maps);
+ result.put("intList", var4);
+ result.put("strArrays", var3);
+ result.put("testEnum", testEnum.name());
+
+ Map innerObjectMap = new HashMap<>(4);
+ result.put("innerObject", innerObjectMap);
+ innerObjectMap.put("innerA", var1);
+ innerObjectMap.put("innerB", var2);
+
+ Set<Map> innerObject2Set = new HashSet<>(4);
+ result.put("innerObject2", innerObject2Set);
+ Map innerObject2Tmp1 = new HashMap<>(4);
+ innerObject2Tmp1.put("innerA2", var1 + "_21");
+ innerObject2Tmp1.put("innerB2", var2 + 100000);
+ Map innerObject2Tmp2 = new HashMap<>(4);
+ innerObject2Tmp2.put("innerA2", var1 + "_22");
+ innerObject2Tmp2.put("innerB2", var2 + 200000);
+ innerObject2Set.add(innerObject2Tmp1);
+ innerObject2Set.add(innerObject2Tmp2);
+
+ Map innerObject3Tmp1 = new HashMap<>(4);
+ innerObject3Tmp1.put("innerA3", var1 + "_31");
+ Map innerObject3Tmp2 = new HashMap<>(4);
+ innerObject3Tmp2.put("innerA3", var1 + "_32");
+ Map innerObject3Tmp3 = new HashMap<>(4);
+ innerObject3Tmp3.put("innerA3", var1 + "_32");
+ result.put("innerObject3", new Map[]{innerObject3Tmp1, innerObject3Tmp2, innerObject3Tmp3});
+
+ return result;
+ }
+
+ Map<String, Object> bean2Map(ComplexObject complexObject) {
+ return JSON.parseObject(JSON.toJSONString(complexObject), Map.class);
+ }
+
+ ComplexObject map2bean(Map<String, Object> map) {
+ return JSON.parseObject(JSON.toJSONString(map), ComplexObject.class);
+ }
+
+ ComplexObject createComplexObject(String var1, int var2, long l, String[] var3, List<Integer> var4, ComplexObject.TestEnum testEnum) {
+ return new ComplexObject(var1, var2, l, var3, var4, testEnum);
+ }
+
}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/service/ComplexObject.java b/dubbo-compatible/src/test/java/org/apache/dubbo/service/ComplexObject.java
new file mode 100644
index 0000000..5bcc9f6
--- /dev/null
+++ b/dubbo-compatible/src/test/java/org/apache/dubbo/service/ComplexObject.java
@@ -0,0 +1,282 @@
+package org.apache.dubbo.service;
+
+import net.sf.cglib.beans.BeanMap;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+
+/**
+ * ON 2018/11/5
+ */
+public class ComplexObject {
+
+ public ComplexObject() {
+ }
+
+ public ComplexObject(String var1, int var2, long l, String[] var3, List<Integer> var4, ComplexObject.TestEnum testEnum) {
+ this.setInnerObject(new ComplexObject.InnerObject());
+ this.getInnerObject().setInnerA(var1);
+ this.getInnerObject().setInnerB(var2);
+ this.setIntList(var4);
+ this.setStrArrays(var3);
+ this.setTestEnum(testEnum);
+ this.setV(l);
+ InnerObject2 io21 = new InnerObject2();
+ io21.setInnerA2(var1 + "_21");
+ io21.setInnerB2(var2 + 100000);
+ InnerObject2 io22 = new InnerObject2();
+ io22.setInnerA2(var1 + "_22");
+ io22.setInnerB2(var2 + 200000);
+ this.setInnerObject2(new HashSet<InnerObject2>(Arrays.asList(io21, io22)));
+
+ InnerObject3 io31 = new InnerObject3();
+ io31.setInnerA3(var1 + "_31");
+ InnerObject3 io32 = new InnerObject3();
+ io32.setInnerA3(var1 + "_32");
+ InnerObject3 io33 = new InnerObject3();
+ io33.setInnerA3(var1 + "_33");
+ this.setInnerObject3(new InnerObject3[]{io31, io32, io33});
+ this.maps = new HashMap<>(4);
+ this.maps.put(var1 + "_k1", var1 + "_v1");
+ this.maps.put(var1 + "_k2", var1 + "_v2");
+ }
+
+ private InnerObject innerObject;
+ private Set<InnerObject2> innerObject2;
+ private InnerObject3[] innerObject3;
+ private String[] strArrays;
+ private List<Integer> intList;
+ private long v;
+ private TestEnum testEnum;
+ private Map<String, String> maps;
+
+ public InnerObject getInnerObject() {
+ return innerObject;
+ }
+
+ public void setInnerObject(InnerObject innerObject) {
+ this.innerObject = innerObject;
+ }
+
+ public String[] getStrArrays() {
+ return strArrays;
+ }
+
+ public void setStrArrays(String[] strArrays) {
+ this.strArrays = strArrays;
+ }
+
+ public List<Integer> getIntList() {
+ return intList;
+ }
+
+ public void setIntList(List<Integer> intList) {
+ this.intList = intList;
+ }
+
+ public long getV() {
+ return v;
+ }
+
+ public void setV(long v) {
+ this.v = v;
+ }
+
+ public TestEnum getTestEnum() {
+ return testEnum;
+ }
+
+ public void setTestEnum(TestEnum testEnum) {
+ this.testEnum = testEnum;
+ }
+
+ public Set<InnerObject2> getInnerObject2() {
+ return innerObject2;
+ }
+
+ public void setInnerObject2(Set<InnerObject2> innerObject2) {
+ this.innerObject2 = innerObject2;
+ }
+
+ public InnerObject3[] getInnerObject3() {
+ return innerObject3;
+ }
+
+ public void setInnerObject3(InnerObject3[] innerObject3) {
+ this.innerObject3 = innerObject3;
+ }
+
+ public Map<String, String> getMaps() {
+ return maps;
+ }
+
+ public void setMaps(Map<String, String> maps) {
+ this.maps = maps;
+ }
+
+ @Override
+ public String toString() {
+ return "ComplexObject{" +
+ "innerObject=" + innerObject +
+ ", innerObject2=" + innerObject2 +
+ ", innerObject3=" + Arrays.toString(innerObject3) +
+ ", strArrays=" + Arrays.toString(strArrays) +
+ ", intList=" + intList +
+ ", v=" + v +
+ ", testEnum=" + testEnum +
+ ", maps=" + maps +
+ '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof ComplexObject)) return false;
+ ComplexObject that = (ComplexObject) o;
+ return getV() == that.getV() &&
+ Objects.equals(getInnerObject(), that.getInnerObject()) &&
+ Objects.equals(getInnerObject2(), that.getInnerObject2()) &&
+ Arrays.equals(getInnerObject3(), that.getInnerObject3()) &&
+ Arrays.equals(getStrArrays(), that.getStrArrays()) &&
+ Objects.equals(getIntList(), that.getIntList()) &&
+ getTestEnum() == that.getTestEnum() &&
+ Objects.equals(getMaps(), that.getMaps());
+ }
+
+ @Override
+ public int hashCode() {
+ int result = Objects.hash(getInnerObject(), getInnerObject2(), getIntList(), getV(), getTestEnum(), getMaps());
+ result = 31 * result + Arrays.hashCode(getInnerObject3());
+ result = 31 * result + Arrays.hashCode(getStrArrays());
+ return result;
+ }
+
+ static public enum TestEnum {
+ VALUE1, VALUE2
+ }
+
+ static public class InnerObject {
+ String innerA;
+ int innerB;
+
+ public String getInnerA() {
+ return innerA;
+ }
+
+ public void setInnerA(String innerA) {
+ this.innerA = innerA;
+ }
+
+ public int getInnerB() {
+ return innerB;
+ }
+
+ public void setInnerB(int innerB) {
+ this.innerB = innerB;
+ }
+
+ @Override
+ public String toString() {
+ return "InnerObject{" +
+ "innerA='" + innerA + '\'' +
+ ", innerB=" + innerB +
+ '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof InnerObject)) return false;
+ InnerObject that = (InnerObject) o;
+ return getInnerB() == that.getInnerB() &&
+ Objects.equals(getInnerA(), that.getInnerA());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getInnerA(), getInnerB());
+ }
+ }
+
+ static public class InnerObject2 {
+ String innerA2;
+ int innerB2;
+
+ public String getInnerA2() {
+ return innerA2;
+ }
+
+ public void setInnerA2(String innerA) {
+ this.innerA2 = innerA2;
+ }
+
+ public int getInnerB2() {
+ return innerB2;
+ }
+
+ public void setInnerB2(int innerB) {
+ this.innerB2 = innerB2;
+ }
+
+ @Override
+ public String toString() {
+ return "InnerObject{" +
+ "innerA='" + innerA2 + '\'' +
+ ", innerB=" + innerB2 +
+ '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof InnerObject2)) return false;
+ InnerObject2 that = (InnerObject2) o;
+ return getInnerB2() == that.getInnerB2() &&
+ Objects.equals(getInnerA2(), that.getInnerA2());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getInnerA2(), getInnerB2());
+ }
+ }
+
+ static public class InnerObject3 {
+ String innerA3;
+
+ public String getInnerA3() {
+ return innerA3;
+ }
+
+ public void setInnerA3(String innerA3) {
+ this.innerA3 = innerA3;
+ }
+
+ @Override
+ public String toString() {
+ return "InnerObject3{" +
+ "innerA3='" + innerA3 + '\'' +
+ '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof InnerObject3)) return false;
+ InnerObject3 that = (InnerObject3) o;
+ return Objects.equals(getInnerA3(), that.getInnerA3());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getInnerA3());
+ }
+ }
+}
+
+
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoService.java b/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoService.java
index b73fa49..ba63c59 100644
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoService.java
+++ b/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoService.java
@@ -16,6 +16,8 @@
*/
package org.apache.dubbo.service;
+import java.util.List;
+
public interface DemoService {
String sayHello(String name);
@@ -39,4 +41,8 @@ public interface DemoService {
byte getbyte(byte arg);
-}
\ No newline at end of file
+ String complexCompute(String input, ComplexObject co);
+
+ ComplexObject findComplexObject(String var1, int var2, long l, String[] var3, List<Integer> var4, ComplexObject.TestEnum testEnum);
+
+}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoServiceImpl.java b/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoServiceImpl.java
index cfbcf80..fb508c6 100644
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoServiceImpl.java
+++ b/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoServiceImpl.java
@@ -18,6 +18,8 @@ package org.apache.dubbo.service;
import org.apache.dubbo.rpc.RpcContext;
+import java.util.List;
+
/**
* DemoServiceImpl
*/
@@ -78,7 +80,18 @@ public class DemoServiceImpl implements DemoService {
return arg;
}
+ @Override
+ public String complexCompute(String input, ComplexObject co) {
+ return input + "###" + co.toString();
+ }
+
+ @Override
+ public ComplexObject findComplexObject(String var1, int var2, long l, String[] var3, List<Integer> var4, ComplexObject.TestEnum testEnum) {
+
+ return new ComplexObject(var1, var2, l, var3, var4, testEnum);
+ }
+
public Person gerPerson(Person person) {
return person;
}
-}
\ No newline at end of file
+}
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
index 73fe79d..6e41fe6 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
@@ -183,7 +183,7 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
}
metadataReportConfig.refresh();
if (!metadataReportConfig.isValid()) {
- logger.info("There's no valid metadata config found, if you are using the simplified mode of registry url, please make sure you have a metadata address configured properly.");
+ logger.warn("There's no valid metadata config found, if you are using the simplified mode of registry url, please make sure you have a metadata address configured properly.");
}
}
diff --git a/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml b/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
index 4f2f7cc..241e605 100644
--- a/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
+++ b/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
@@ -24,6 +24,7 @@
<dubbo:application name="demo-consumer"/>
<!-- use multicast registry center to discover service -->
+
<dubbo:registry group="dubboregistrygroup1" address="zookeeper://127.0.0.1:2181"/>
<dubbo:configcenter type="zookeeper" address="127.0.0.1:2181" namespace="dubboregistrygroup1"
@@ -31,6 +32,6 @@
<!-- generate proxy for the remote service, then demoService can be used in the same way as the
local regular interface -->
- <dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.demo.DemoService"/>
+ <dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.demo.DemoService" version="1.0.4" group="dd-test"/>
</beans>
diff --git a/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml b/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
index 89d24b0..7af535e 100644
--- a/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
+++ b/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
@@ -38,6 +38,6 @@
<bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
<!-- declare the service interface to be exported -->
- <dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService"/>
+ <dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService" version="1.0.4" group="dd-test"/>
</beans>
diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/CollectionTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/CollectionTypeBuilder.java
index 0f0efde..917c00d 100755
--- a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/CollectionTypeBuilder.java
+++ b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/CollectionTypeBuilder.java
@@ -28,7 +28,8 @@ import java.util.Map;
/**
* 2015/1/27.
*/
-public class CollectionTypeBuilder implements TypeBuilder {
+public class
+CollectionTypeBuilder implements TypeBuilder {
@Override
public boolean accept(Type type, Class<?> clazz) {
diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java
index bbec7b5..4d6c98f 100644
--- a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java
+++ b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.metadata.definition.model;
import java.util.Map;
+import java.util.Objects;
/**
* 2018/10/25
@@ -33,4 +34,11 @@ public class FullServiceDefinition extends ServiceDefinition {
this.parameters = parameters;
}
+ @Override
+ public String toString() {
+ return "FullServiceDefinition{" +
+ "parameters=" + parameters +
+ "} " + super.toString();
+ }
+
}
diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/MethodDefinition.java b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/MethodDefinition.java
index fe9e054..c1e1548 100755
--- a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/MethodDefinition.java
+++ b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/MethodDefinition.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.metadata.definition.model;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Objects;
/**
* 2015/1/27.
@@ -71,4 +72,21 @@ public class MethodDefinition {
+ ", returnType=" + returnType + "]";
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof MethodDefinition)) return false;
+ MethodDefinition that = (MethodDefinition) o;
+ return Objects.equals(getName(), that.getName()) &&
+ Arrays.equals(getParameterTypes(), that.getParameterTypes()) &&
+ Objects.equals(getReturnType(), that.getReturnType()) &&
+ Objects.equals(getParameters(), that.getParameters());
+ }
+
+ @Override
+ public int hashCode() {
+ int result = Objects.hash(getName(), getReturnType(), getParameters());
+ result = 31 * result + Arrays.hashCode(getParameterTypes());
+ return result;
+ }
}
diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java
index af60f43..f94e4d5 100755
--- a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java
+++ b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.metadata.definition.model;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
/**
* 2015/1/27.
@@ -77,4 +78,19 @@ public class ServiceDefinition {
+ methods + "]";
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof ServiceDefinition)) return false;
+ ServiceDefinition that = (ServiceDefinition) o;
+ return Objects.equals(getCanonicalName(), that.getCanonicalName()) &&
+ Objects.equals(getCodeSource(), that.getCodeSource()) &&
+ Objects.equals(getMethods(), that.getMethods()) &&
+ Objects.equals(getTypes(), that.getTypes());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getCanonicalName(), getCodeSource(), getMethods(), getTypes());
+ }
}
diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/TypeDefinition.java b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/TypeDefinition.java
index 8d1c582..f4cc145 100755
--- a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/TypeDefinition.java
+++ b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/TypeDefinition.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
/**
* 2015/1/27.
@@ -103,4 +104,21 @@ public class TypeDefinition {
return "TypeDefinition [id=" + id + ", type=" + type + ", properties=" + properties + ", $ref=" + $ref + "]";
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof TypeDefinition)) return false;
+ TypeDefinition that = (TypeDefinition) o;
+ return Objects.equals(getId(), that.getId()) &&
+ Objects.equals(getType(), that.getType()) &&
+ Objects.equals(getItems(), that.getItems()) &&
+ Objects.equals(getEnums(), that.getEnums()) &&
+ Objects.equals(get$ref(), that.get$ref()) &&
+ Objects.equals(getProperties(), that.getProperties());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getId(), getType(), getItems(), getEnums(), get$ref(), getProperties());
+ }
}
diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/util/ClassUtils.java b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/util/ClassUtils.java
index 54fc655..3257de5 100755
--- a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/util/ClassUtils.java
+++ b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/util/ClassUtils.java
@@ -33,7 +33,7 @@ public final class ClassUtils {
/**
* Get the code source file or class path of the Class passed in.
*
- * @param clazz Class to find.
+ * @param clazz
* @return Jar file name or class path.
*/
public static String getCodeSource(Class<?> clazz) {
@@ -58,6 +58,7 @@ public final class ClassUtils {
/**
* Get all non-static fields of the Class passed in or its super classes.
+ * <p>
*
* @param clazz Class to parse.
* @return field list
@@ -87,6 +88,7 @@ public final class ClassUtils {
/**
* Get all public, non-static methods of the Class passed in.
+ * <p>
*
* @param clazz Class to parse.
* @return methods list
diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuildderTest.java b/dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuildderTest.java
new file mode 100644
index 0000000..fb6ff67
--- /dev/null
+++ b/dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuildderTest.java
@@ -0,0 +1,81 @@
+package org.apache.dubbo.metadata.definition;
+
+import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
+import org.apache.dubbo.metadata.definition.model.MethodDefinition;
+import org.apache.dubbo.metadata.definition.model.TypeDefinition;
+import org.apache.dubbo.metadata.definition.service.ComplexObject;
+import org.apache.dubbo.metadata.definition.service.DemoService;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 2018/11/6
+ */
+public class ServiceDefinitionBuildderTest {
+
+ @Test
+ public void testBuilderComplextObject() {
+ FullServiceDefinition fullServiceDefinition = ServiceDefinitionBuilder.buildFullDefinition(DemoService.class);
+ checkComplextObjectAsParam(fullServiceDefinition);
+ }
+
+
+ void checkComplextObjectAsParam(FullServiceDefinition fullServiceDefinition) {
+ List<MethodDefinition> methodDefinitions = fullServiceDefinition.getMethods();
+ MethodDefinition complexCompute = null;
+ MethodDefinition findComplexObject = null;
+ for (MethodDefinition methodDefinition : methodDefinitions) {
+ if ("complexCompute".equals(methodDefinition.getName())) {
+ complexCompute = methodDefinition;
+ } else if ("findComplexObject".equals(methodDefinition.getName())) {
+ findComplexObject = methodDefinition;
+ }
+ }
+ Assert.assertTrue(Arrays.equals(complexCompute.getParameterTypes(), new String[]{String.class.getName(), ComplexObject.class.getName()}));
+ Assert.assertEquals(complexCompute.getReturnType(), String.class.getName());
+
+ Assert.assertTrue(Arrays.equals(findComplexObject.getParameterTypes(), new String[]{String.class.getName(), "int", "long",
+ String[].class.getCanonicalName(), "java.util.List<java.lang.Integer>", ComplexObject.TestEnum.class.getCanonicalName()}));
+ Assert.assertEquals(findComplexObject.getReturnType(), ComplexObject.class.getCanonicalName());
+
+
+ List<TypeDefinition> typeDefinitions = fullServiceDefinition.getTypes();
+
+ TypeDefinition topTypeDefinition = null;
+ TypeDefinition innerTypeDefinition = null;
+ TypeDefinition inner2TypeDefinition = null;
+ TypeDefinition inner3TypeDefinition = null;
+ for (TypeDefinition typeDefinition : typeDefinitions) {
+ if (typeDefinition.getType().equals(ComplexObject.class.getName())) {
+ topTypeDefinition = typeDefinition;
+ } else if (typeDefinition.getType().equals(ComplexObject.InnerObject.class.getName())) {
+ innerTypeDefinition = typeDefinition;
+ } else if (typeDefinition.getType().contains(ComplexObject.InnerObject2.class.getName())) {
+ inner2TypeDefinition = typeDefinition;
+ } else if (typeDefinition.getType().equals(ComplexObject.InnerObject3.class.getName())) {
+ inner3TypeDefinition = typeDefinition;
+ }
+ }
+ Assert.assertEquals(topTypeDefinition.getProperties().get("v").getType(), "long");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("maps").getType(), "java.util.Map<java.lang.String, java.lang.String>");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("innerObject").getType(), ComplexObject.InnerObject.class.getName());
+ Assert.assertEquals(topTypeDefinition.getProperties().get("intList").getType(), "java.util.List<java.lang.Integer>");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("strArrays").getType(), "java.lang.String[]");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("innerObject3").getType(), "org.apache.dubbo.metadata.definition.service.ComplexObject.InnerObject3[]");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("testEnum").getType(), "org.apache.dubbo.metadata.definition.service.ComplexObject.TestEnum");
+ Assert.assertEquals(topTypeDefinition.getProperties().get("innerObject2").getType(), "java.util.Set<org.apache.dubbo.metadata.definition.service.ComplexObject$InnerObject2>");
+
+ Assert.assertSame(innerTypeDefinition.getProperties().get("innerA").getType(), "java.lang.String");
+ Assert.assertSame(innerTypeDefinition.getProperties().get("innerB").getType(), "int");
+
+ Assert.assertSame(inner2TypeDefinition.getProperties().get("innerA2").getType(), "java.lang.String");
+ Assert.assertSame(inner2TypeDefinition.getProperties().get("innerB2").getType(), "int");
+
+ Assert.assertSame(inner3TypeDefinition.getProperties().get("innerA3").getType(), "java.lang.String");
+
+ }
+
+}
diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/common/ResultWithRawCollections.java b/dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/common/ResultWithRawCollections.java
index e17b16b..07f1711 100644
--- a/dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/common/ResultWithRawCollections.java
+++ b/dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/common/ResultWithRawCollections.java
@@ -20,7 +20,7 @@ import java.util.List;
import java.util.Map;
/**
- * Created by Arthur.xqw on 2017/4/11.
+ *
*/
@SuppressWarnings("rawtypes")
public class ResultWithRawCollections {
diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/service/ComplexObject.java b/dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/service/ComplexObject.java
new file mode 100644
index 0000000..a5fc300
--- /dev/null
+++ b/dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/service/ComplexObject.java
@@ -0,0 +1,280 @@
+package org.apache.dubbo.metadata.definition.service;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+
+/**
+ * for test
+ */
+public class ComplexObject {
+
+ public ComplexObject() {
+ }
+
+ public ComplexObject(String var1, int var2, long l, String[] var3, List<Integer> var4, ComplexObject.TestEnum testEnum) {
+ this.setInnerObject(new ComplexObject.InnerObject());
+ this.getInnerObject().setInnerA(var1);
+ this.getInnerObject().setInnerB(var2);
+ this.setIntList(var4);
+ this.setStrArrays(var3);
+ this.setTestEnum(testEnum);
+ this.setV(l);
+ InnerObject2 io21 = new InnerObject2();
+ io21.setInnerA2(var1 + "_21");
+ io21.setInnerB2(var2 + 100000);
+ InnerObject2 io22 = new InnerObject2();
+ io22.setInnerA2(var1 + "_22");
+ io22.setInnerB2(var2 + 200000);
+ this.setInnerObject2(new HashSet<InnerObject2>(Arrays.asList(io21, io22)));
+
+ InnerObject3 io31 = new InnerObject3();
+ io31.setInnerA3(var1 + "_31");
+ InnerObject3 io32 = new InnerObject3();
+ io32.setInnerA3(var1 + "_32");
+ InnerObject3 io33 = new InnerObject3();
+ io33.setInnerA3(var1 + "_33");
+ this.setInnerObject3(new InnerObject3[]{io31, io32, io33});
+ this.maps = new HashMap<>(4);
+ this.maps.put(var1 + "_k1", var1 + "_v1");
+ this.maps.put(var1 + "_k2", var1 + "_v2");
+ }
+
+ private InnerObject innerObject;
+ private Set<InnerObject2> innerObject2;
+ private InnerObject3[] innerObject3;
+ private String[] strArrays;
+ private List<Integer> intList;
+ private long v;
+ private TestEnum testEnum;
+ private Map<String, String> maps;
+
+ public InnerObject getInnerObject() {
+ return innerObject;
+ }
+
+ public void setInnerObject(InnerObject innerObject) {
+ this.innerObject = innerObject;
+ }
+
+ public String[] getStrArrays() {
+ return strArrays;
+ }
+
+ public void setStrArrays(String[] strArrays) {
+ this.strArrays = strArrays;
+ }
+
+ public List<Integer> getIntList() {
+ return intList;
+ }
+
+ public void setIntList(List<Integer> intList) {
+ this.intList = intList;
+ }
+
+ public long getV() {
+ return v;
+ }
+
+ public void setV(long v) {
+ this.v = v;
+ }
+
+ public TestEnum getTestEnum() {
+ return testEnum;
+ }
+
+ public void setTestEnum(TestEnum testEnum) {
+ this.testEnum = testEnum;
+ }
+
+ public Set<InnerObject2> getInnerObject2() {
+ return innerObject2;
+ }
+
+ public void setInnerObject2(Set<InnerObject2> innerObject2) {
+ this.innerObject2 = innerObject2;
+ }
+
+ public InnerObject3[] getInnerObject3() {
+ return innerObject3;
+ }
+
+ public void setInnerObject3(InnerObject3[] innerObject3) {
+ this.innerObject3 = innerObject3;
+ }
+
+ public Map<String, String> getMaps() {
+ return maps;
+ }
+
+ public void setMaps(Map<String, String> maps) {
+ this.maps = maps;
+ }
+
+ @Override
+ public String toString() {
+ return "ComplexObject{" +
+ "innerObject=" + innerObject +
+ ", innerObject2=" + innerObject2 +
+ ", innerObject3=" + Arrays.toString(innerObject3) +
+ ", strArrays=" + Arrays.toString(strArrays) +
+ ", intList=" + intList +
+ ", v=" + v +
+ ", testEnum=" + testEnum +
+ ", maps=" + maps +
+ '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof ComplexObject)) return false;
+ ComplexObject that = (ComplexObject) o;
+ return getV() == that.getV() &&
+ Objects.equals(getInnerObject(), that.getInnerObject()) &&
+ Objects.equals(getInnerObject2(), that.getInnerObject2()) &&
+ Arrays.equals(getInnerObject3(), that.getInnerObject3()) &&
+ Arrays.equals(getStrArrays(), that.getStrArrays()) &&
+ Objects.equals(getIntList(), that.getIntList()) &&
+ getTestEnum() == that.getTestEnum() &&
+ Objects.equals(getMaps(), that.getMaps());
+ }
+
+ @Override
+ public int hashCode() {
+ int result = Objects.hash(getInnerObject(), getInnerObject2(), getIntList(), getV(), getTestEnum(), getMaps());
+ result = 31 * result + Arrays.hashCode(getInnerObject3());
+ result = 31 * result + Arrays.hashCode(getStrArrays());
+ return result;
+ }
+
+ static public enum TestEnum {
+ VALUE1, VALUE2
+ }
+
+ static public class InnerObject {
+ String innerA;
+ int innerB;
+
+ public String getInnerA() {
+ return innerA;
+ }
+
+ public void setInnerA(String innerA) {
+ this.innerA = innerA;
+ }
+
+ public int getInnerB() {
+ return innerB;
+ }
+
+ public void setInnerB(int innerB) {
+ this.innerB = innerB;
+ }
+
+ @Override
+ public String toString() {
+ return "InnerObject{" +
+ "innerA='" + innerA + '\'' +
+ ", innerB=" + innerB +
+ '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof InnerObject)) return false;
+ InnerObject that = (InnerObject) o;
+ return getInnerB() == that.getInnerB() &&
+ Objects.equals(getInnerA(), that.getInnerA());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getInnerA(), getInnerB());
+ }
+ }
+
+ static public class InnerObject2 {
+ String innerA2;
+ int innerB2;
+
+ public String getInnerA2() {
+ return innerA2;
+ }
+
+ public void setInnerA2(String innerA) {
+ this.innerA2 = innerA2;
+ }
+
+ public int getInnerB2() {
+ return innerB2;
+ }
+
+ public void setInnerB2(int innerB) {
+ this.innerB2 = innerB2;
+ }
+
+ @Override
+ public String toString() {
+ return "InnerObject{" +
+ "innerA='" + innerA2 + '\'' +
+ ", innerB=" + innerB2 +
+ '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof InnerObject2)) return false;
+ InnerObject2 that = (InnerObject2) o;
+ return getInnerB2() == that.getInnerB2() &&
+ Objects.equals(getInnerA2(), that.getInnerA2());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getInnerA2(), getInnerB2());
+ }
+ }
+
+ static public class InnerObject3 {
+ String innerA3;
+
+ public String getInnerA3() {
+ return innerA3;
+ }
+
+ public void setInnerA3(String innerA3) {
+ this.innerA3 = innerA3;
+ }
+
+ @Override
+ public String toString() {
+ return "InnerObject3{" +
+ "innerA3='" + innerA3 + '\'' +
+ '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof InnerObject3)) return false;
+ InnerObject3 that = (InnerObject3) o;
+ return Objects.equals(getInnerA3(), that.getInnerA3());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getInnerA3());
+ }
+ }
+}
+
+
diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java b/dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/service/DemoService.java
similarity index 67%
copy from dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java
copy to dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/service/DemoService.java
index bbec7b5..c839c66 100644
--- a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java
+++ b/dubbo-metadata-report/dubbo-metadata-definition/src/test/java/org/apache/dubbo/metadata/definition/service/DemoService.java
@@ -14,23 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.metadata.definition.model;
+package org.apache.dubbo.metadata.definition.service;
-import java.util.Map;
+import java.util.List;
/**
- * 2018/10/25
+ * for test
*/
-public class FullServiceDefinition extends ServiceDefinition {
+public interface DemoService {
- private Map<String, String> parameters;
+ String complexCompute(String input, ComplexObject co);
- public Map<String, String> getParameters() {
- return parameters;
- }
-
- public void setParameters(Map<String, String> parameters) {
- this.parameters = parameters;
- }
+ ComplexObject findComplexObject(String var1, int var2, long l, String[] var3, List<Integer> var4, ComplexObject.TestEnum testEnum);
}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/pom.xml b/dubbo-metadata-report/dubbo-metadata-report-api/pom.xml
index e1e2c34..3497002 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/pom.xml
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/pom.xml
@@ -60,8 +60,13 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-definition</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ConsumerMetadataIdentifier.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ConsumerMetadataIdentifier.java
index f4a17ce..ac1f48b 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ConsumerMetadataIdentifier.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ConsumerMetadataIdentifier.java
@@ -3,7 +3,7 @@ package org.apache.dubbo.metadata.identifier;
import org.apache.dubbo.common.Constants;
/**
- * @author cvictory ON 2018/10/25
+ * 2018/10/25
*/
public class ConsumerMetadataIdentifier extends MetadataIdentifier {
@@ -21,8 +21,6 @@ public class ConsumerMetadataIdentifier extends MetadataIdentifier {
return Constants.PATH_SEPARATOR + application;
}
- ;
-
public String getApplication() {
return application;
}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/MetadataIdentifier.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/MetadataIdentifier.java
index f3c1cbc..e9f4226 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/MetadataIdentifier.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/MetadataIdentifier.java
@@ -4,7 +4,7 @@ import org.apache.dubbo.common.Constants;
import org.apache.dubbo.common.URL;
/**
- * @author cvictory ON 2018/10/25
+ * 2018/10/25
*/
public class MetadataIdentifier {
public static final String SEPARATOR = ":";
@@ -35,7 +35,7 @@ public class MetadataIdentifier {
public String getFilePathKey(String pathTag) {
return toServicePath() + Constants.PATH_SEPARATOR + pathTag + Constants.PATH_SEPARATOR + (version == null ? "" : (version + Constants.PATH_SEPARATOR))
- + side + getPathSegment();
+ + (group == null ? "" : (group + Constants.PATH_SEPARATOR)) + side + getPathSegment();
}
private String toServicePath() {
@@ -49,7 +49,6 @@ public class MetadataIdentifier {
return "";
}
- ;
public String getServiceInterface() {
return serviceInterface;
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ProviderMetadataIdentifier.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ProviderMetadataIdentifier.java
index 4946a91..c2e03db 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ProviderMetadataIdentifier.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ProviderMetadataIdentifier.java
@@ -3,7 +3,7 @@ package org.apache.dubbo.metadata.identifier;
import org.apache.dubbo.common.Constants;
/**
- * @author cvictory ON 2018/10/25
+ * 2018/10/25
*/
public class ProviderMetadataIdentifier extends MetadataIdentifier {
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/integration/MetadataReportService.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/integration/MetadataReportService.java
index 89f075b..10c0942 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/integration/MetadataReportService.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/integration/MetadataReportService.java
@@ -76,6 +76,7 @@ public class MetadataReportService {
//first add into the list
// remove the individul param
providerUrl = providerUrl.removeParameters(Constants.PID_KEY, Constants.TIMESTAMP_KEY, Constants.BIND_IP_KEY, Constants.BIND_PORT_KEY, Constants.TIMESTAMP_KEY);
+
try {
String interfaceName = providerUrl.getParameter(Constants.INTERFACE_KEY);
if (StringUtils.isNotEmpty(interfaceName)) {
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/MethodDescriptor.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/MethodDescriptor.java
deleted file mode 100644
index 59a954e..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/MethodDescriptor.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.apache.dubbo.metadata.metadata;
-
-import java.util.Arrays;
-import java.util.Objects;
-
-/**
- * 2018/9/18
- */
-public class MethodDescriptor {
- private String name;
- private String[] parameterTypes;
- private String returnType;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String[] getParameterTypes() {
- return parameterTypes;
- }
-
- public void setParameterTypes(String[] parameterTypes) {
- this.parameterTypes = parameterTypes;
- }
-
- public String getReturnType() {
- return returnType;
- }
-
- public void setReturnType(String returnType) {
- this.returnType = returnType;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (!(o instanceof MethodDescriptor)) return false;
- MethodDescriptor that = (MethodDescriptor) o;
- return Objects.equals(getName(), that.getName()) &&
- Arrays.equals(getParameterTypes(), that.getParameterTypes()) &&
- Objects.equals(getReturnType(), that.getReturnType());
- }
-
- @Override
- public int hashCode() {
- int result = Objects.hash(getName(), getReturnType());
- result = 31 * result + Arrays.hashCode(getParameterTypes());
- return result;
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/ServiceDescriptor.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/ServiceDescriptor.java
deleted file mode 100644
index f0e9ba5..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/ServiceDescriptor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.apache.dubbo.metadata.metadata;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 2018/9/18
- */
-public class ServiceDescriptor {
- private String name;
- private String codeSource;
- private List<MethodDescriptor> methodDescriptors = new ArrayList<>();
- /**
- * Primitive type and String will not be stored.
- *
- * The typeDescriptor will not store
- */
- private Map<String, TypeDescriptor> types = new HashMap<>();
-
-
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getCodeSource() {
- return codeSource;
- }
-
- public void setCodeSource(String codeSource) {
- this.codeSource = codeSource;
- }
-
- public List<MethodDescriptor> getMethodDescriptors() {
- return methodDescriptors;
- }
-
- public void setMethodDescriptors(List<MethodDescriptor> methodDescriptors) {
- this.methodDescriptors = methodDescriptors;
- }
-
- public Map<String, TypeDescriptor> getTypes() {
- return types;
- }
-
- public void setTypes(Map<String, TypeDescriptor> types) {
- this.types = types;
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/TypeDescriptor.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/TypeDescriptor.java
deleted file mode 100644
index 48ba6fd..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/TypeDescriptor.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.apache.dubbo.metadata.metadata;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * 2018/9/18
- */
-public class TypeDescriptor {
-
- private String type;
- private boolean custom;
- private Map<String, TypeDescriptor> properties = new HashMap<>();
-
- public TypeDescriptor(String type){
- this.type = type;
- }
-
- public TypeDescriptor(String type, boolean custom){
- this.type = type;
- this.custom = custom;
- }
-
- public static TypeDescriptor simplifyTypeDescriptor(TypeDescriptor typeDescriptor){
- return new TypeDescriptor(typeDescriptor.getType(), typeDescriptor.isCustom());
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public Map<String, TypeDescriptor> getProperties() {
- return properties;
- }
-
- public void setProperties(Map<String, TypeDescriptor> properties) {
- this.properties = properties;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (!(o instanceof TypeDescriptor)) return false;
- TypeDescriptor that = (TypeDescriptor) o;
- return Objects.equals(getType(), that.getType());
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(getType());
- }
-
- public boolean isCustom() {
- return custom;
- }
-
- public void setCustom(boolean custom) {
- this.custom = custom;
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/ArrayTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/ArrayTypeBuilder.java
deleted file mode 100644
index 883a8e1..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/ArrayTypeBuilder.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-
-import java.lang.reflect.Type;
-import java.util.Map;
-
-/**
- * 2018/9/18
- */
-public class ArrayTypeBuilder implements TypeBuilder {
-
- @Override
- public boolean accept(Type type, Class<?> clazz) {
- if (clazz == null) {
- return false;
- }
-
- if (clazz.isArray()) {
- return true;
- }
-
- return false;
- }
-
- @Override
- public TypeDescriptor build(Type type, Class<?> clazz, Map<Class<?>, TypeDescriptor> typeCache) {
- // Process the component type of an array.
- Class<?> componentType = clazz.getComponentType();
- TypeDescriptorBuilder.build(componentType, componentType, typeCache);
-
- final String canonicalName = clazz.getCanonicalName();
- TypeDescriptor td = new TypeDescriptor(canonicalName);
- return td;
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/CollectionTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/CollectionTypeBuilder.java
deleted file mode 100644
index 515ced2..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/CollectionTypeBuilder.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.text.MessageFormat;
-import java.util.Collection;
-import java.util.Map;
-
-/**
- * 2018/9/18
- */
-public class CollectionTypeBuilder implements TypeBuilder{
- @Override
- public boolean accept(Type type, Class<?> clazz) {
- if (clazz == null) {
- return false;
- }
-
- if (Collection.class.isAssignableFrom(clazz)) {
- return true;
- }
-
- return false;
- }
-
- @Override
- public TypeDescriptor build(Type type, Class<?> clazz, Map<Class<?>, TypeDescriptor> typeCache) {
- if (!(type instanceof ParameterizedType)) {
- // 没有泛型信息,就直接返回class name
- return new TypeDescriptor(clazz.getName());
- }
-
- ParameterizedType parameterizedType = (ParameterizedType) type;
- Type[] actualTypeArgs = parameterizedType.getActualTypeArguments();
- if (actualTypeArgs == null || actualTypeArgs.length != 1) {
- throw new IllegalArgumentException(MessageFormat.format(
- "[Jaket] Collection type [{0}] with unexpected amount of arguments [{1}]." + actualTypeArgs,
- new Object[] { type, actualTypeArgs }));
- }
-
- Type actualType = actualTypeArgs[0];
- if (actualType instanceof ParameterizedType) {
- // Nested collection or map.
- Class<?> rawType = (Class<?>) ((ParameterizedType) actualType).getRawType();
- TypeDescriptorBuilder.build(actualType, rawType, typeCache);
- } else if (actualType instanceof Class<?>) {
- Class<?> actualClass = (Class<?>) actualType;
- if (actualClass.isArray() || actualClass.isEnum()) {
- TypeDescriptorBuilder.build(null, actualClass, typeCache);
- } else {
- DefaultTypeBuilder.build(actualClass, typeCache);
- }
- }
-
- return new TypeDescriptor(type.toString());
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/DefaultTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/DefaultTypeBuilder.java
deleted file mode 100644
index 2c154f8..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/DefaultTypeBuilder.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * 2018/9/18
- */
-public class DefaultTypeBuilder {
-
- public static TypeDescriptor build(Class<?> clazz, Map<Class<?>, TypeDescriptor> typeCache) {
-// final String canonicalName = clazz.getCanonicalName();
- final String name = clazz.getName();
-
- TypeDescriptor td = new TypeDescriptor(name);
- // Try to get a cached definition
- if (typeCache.containsKey(clazz)) {
- return typeCache.get(clazz);
- }
-
- // Primitive type
- if (!needAnalyzing(clazz)) {
- return td;
- }
-
- // Custom type
- td.setCustom(true);
-
- List<Field> fields = getNonStaticFields(clazz);
- for (Field field : fields) {
- String fieldName = field.getName();
- Class<?> fieldClass = field.getType();
- Type fieldType = field.getGenericType();
-
- TypeDescriptor fieldTd = TypeDescriptorBuilder.build(fieldType, fieldClass, typeCache);
- // if custom, renew and remove properties.
- if(fieldTd.isCustom()){
- fieldTd = TypeDescriptor.simplifyTypeDescriptor(fieldTd);
- }
- td.getProperties().put(fieldName, fieldTd);
- }
-
- typeCache.put(clazz, td);
- return td;
- }
-
- private static List<Field> getNonStaticFields(final Class<?> clazz) {
- List<Field> result = new ArrayList<Field>();
- Class<?> target = clazz;
- while (target != null) {
-
- Field[] fields = target.getDeclaredFields();
- for (Field field : fields) {
- int modifiers = field.getModifiers();
- if (Modifier.isStatic(modifiers) || Modifier.isTransient(modifiers)) {
- continue;
- }
-
- result.add(field);
- }
- target = target.getSuperclass();
- }
-
- return result;
- }
-
-
- private static Set<String> closedTypes = new HashSet<String>(Arrays.asList("boolean", "byte", "char", "double", "float", "int", "long", "short", "void"));
-
-
- /**
- * <pre>
- * 是否需要分析参数 clazz :
- * clazz 是否为 primitive 类型
- * 若为 primitive 类型,则不分析
- * </pre>
- *
- * @param clazz
- * @return
- */
- private static boolean needAnalyzing(Class<?> clazz) {
- String canonicalName = clazz.getCanonicalName();
-
- if (closedTypes != null && closedTypes.size() > 0) {
- for (String type : closedTypes) {
- if (canonicalName.startsWith(type)) {
- return false;
- }
- }
- }
- if (canonicalName.equals("java.lang.String")) {
- return false;
- }
- // bootstrap classloader will be ignored.
- if (clazz.getClassLoader() == null) {
- return false;
- }
-
- return true;
- }
-
- private DefaultTypeBuilder() {
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/EnumTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/EnumTypeBuilder.java
deleted file mode 100644
index 1bd8b45..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/EnumTypeBuilder.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-
-import java.lang.reflect.Type;
-import java.util.Map;
-
-/**
- * 2018/9/18
- */
-public class EnumTypeBuilder implements TypeBuilder{
-
- @Override
- public boolean accept(Type type, Class<?> clazz) {
- if (clazz == null) {
- return false;
- }
-
- if (clazz.isEnum()) {
- return true;
- }
-
- return false;
- }
-
- @Override
- public TypeDescriptor build(Type type, Class<?> clazz, Map<Class<?>, TypeDescriptor> typeCache) {
- TypeDescriptor td = new TypeDescriptor(clazz.getCanonicalName());
-
- try {
- // set values
-// Method methodValues = clazz.getDeclaredMethod("values", new Class<?>[0]);
-// Object[] values = (Object[]) methodValues.invoke(clazz, new Object[0]);
-// int length = values.length;t
-// for (int i = 0; i < length; i++) {
-// Object value = values[i];
-// td.getEnums().add(value.toString());
-// }
- } catch (Throwable t) {
- }
-
- typeCache.put(clazz, td);
- return td;
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/MapTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/MapTypeBuilder.java
deleted file mode 100644
index 50c8849..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/MapTypeBuilder.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.text.MessageFormat;
-import java.util.Map;
-
-/**
- * 2018/9/18
- */
-public class MapTypeBuilder implements TypeBuilder{
-
- @Override
- public boolean accept(Type type, Class<?> clazz) {
- if (clazz == null) {
- return false;
- }
-
- if (Map.class.isAssignableFrom(clazz)) {
- return true;
- }
-
- return false;
- }
-
- @Override
- public TypeDescriptor build(Type type, Class<?> clazz, Map<Class<?>, TypeDescriptor> typeCache) {
- if (!(type instanceof ParameterizedType)) {
- // 没有泛型信息,就直接返回class name
- return new TypeDescriptor(clazz.getName());
- }
-
- ParameterizedType parameterizedType = (ParameterizedType) type;
- Type[] actualTypeArgs = parameterizedType.getActualTypeArguments();
- if (actualTypeArgs == null || actualTypeArgs.length != 2) {
- throw new IllegalArgumentException(MessageFormat.format(
- "Map type [{0}] with unexpected amount of arguments [{1}]." + actualTypeArgs, new Object[] {
- type, actualTypeArgs }));
- }
-
- for (Type actualType : actualTypeArgs) {
- if (actualType instanceof ParameterizedType) {
- // Nested collection or map.
- Class<?> rawType = (Class<?>) ((ParameterizedType) actualType).getRawType();
- TypeDescriptorBuilder.build(actualType, rawType, typeCache);
- } else if (actualType instanceof Class<?>) {
- Class<?> actualClass = (Class<?>) actualType;
- if (actualClass.isArray() || actualClass.isEnum()) {
- TypeDescriptorBuilder.build(null, actualClass, typeCache);
- } else {
- DefaultTypeBuilder.build(actualClass, typeCache);
- }
- }
- }
-
- return new TypeDescriptor(type.toString());
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/ServiceDescriptorBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/ServiceDescriptorBuilder.java
deleted file mode 100644
index a06d2ff..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/ServiceDescriptorBuilder.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.MethodDescriptor;
-import org.apache.dubbo.metadata.metadata.ServiceDescriptor;
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.net.URL;
-import java.security.CodeSource;
-import java.security.ProtectionDomain;
-
-/**
- * 2018/9/18
- */
-public class ServiceDescriptorBuilder {
-
- public static ServiceDescriptor build(final Class<?> interfaceClass) {
- ServiceDescriptor sd = new ServiceDescriptor();
- sd.setName(interfaceClass.getCanonicalName());
- sd.setCodeSource(getCodeSource(interfaceClass));
-
- TypeDescriptorBuilder builder = new TypeDescriptorBuilder();
- Method[] methods = interfaceClass.getMethods();
- for (Method method : methods) {
- MethodDescriptor md = new MethodDescriptor();
- md.setName(method.getName());
-
- // Process parameter types.
- Class<?>[] paramTypes = method.getParameterTypes();
- Type[] genericParamTypes = method.getGenericParameterTypes();
-
- String[] parameterTypes = new String[paramTypes.length];
- for (int i = 0; i < paramTypes.length; i++) {
- TypeDescriptor td = builder.build(genericParamTypes[i], paramTypes[i]);
- parameterTypes[i] = td.getType();
- }
- md.setParameterTypes(parameterTypes);
-
- // Process return type.
- TypeDescriptor td = builder.build(method.getGenericReturnType(), method.getReturnType());
- md.setReturnType(td.getType());
-
- sd.getMethodDescriptors().add(md);
- }
-
- sd.setTypes(builder.getTypeDescriptorMap());
- return sd;
- }
-
- static String getCodeSource(Class<?> clazz) {
- ProtectionDomain protectionDomain = clazz.getProtectionDomain();
- if (protectionDomain == null || protectionDomain.getCodeSource() == null) {
- return null;
- }
-
- CodeSource codeSource = clazz.getProtectionDomain().getCodeSource();
- URL location = codeSource.getLocation();
- if (location == null) {
- return null;
- }
-
- String path = codeSource.getLocation().toExternalForm();
-
- if (path.endsWith(".jar") && path.contains("/")) {
- return path.substring(path.lastIndexOf('/') + 1);
- }
- return path;
- }
-
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/TypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/TypeBuilder.java
deleted file mode 100644
index 72319f7..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/TypeBuilder.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-
-import java.lang.reflect.Type;
-import java.util.Map;
-
-/**
- * 2018/9/18
- */
-public interface TypeBuilder {
-
- /**
- * Whether the build accept the type or class passed in.
- */
- boolean accept(Type type, Class<?> clazz);
-
- /**
- * Build type definition with the type or class.
- */
- TypeDescriptor build(Type type, Class<?> clazz, Map<Class<?>, TypeDescriptor> typeCache);
-
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/TypeDescriptorBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/TypeDescriptorBuilder.java
deleted file mode 100644
index b347df7..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/TypeDescriptorBuilder.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 2018/9/18
- */
-public class TypeDescriptorBuilder {
-
- private static final List<TypeBuilder> builders = new ArrayList<TypeBuilder>();
- private Map<Class<?>, TypeDescriptor> typeCache = new HashMap<Class<?>, TypeDescriptor>();
-
-
- static {
- builders.add(new ArrayTypeBuilder());
- builders.add(new CollectionTypeBuilder());
- builders.add(new MapTypeBuilder());
- builders.add(new EnumTypeBuilder());
- }
-
-
- public static TypeDescriptor build(Type type, Class<?> clazz, Map<Class<?>, TypeDescriptor> typeCache) {
- TypeBuilder builder = getGenericTypeBuilder(type, clazz);
- TypeDescriptor td = null;
- if (builder != null) {
- td = builder.build(type, clazz, typeCache);
- } else {
- td = DefaultTypeBuilder.build(clazz, typeCache);
- }
- return td;
- }
-
- static TypeBuilder getGenericTypeBuilder(Type type, Class<?> clazz) {
- for (TypeBuilder builder : builders) {
- if (builder.accept(type, clazz)) {
- return builder;
- }
- }
- return null;
- }
-
- public TypeDescriptor build(Type type, Class<?> clazz) {
- return build(type, clazz, typeCache);
- }
-
- public Map<String, TypeDescriptor> getTypeDescriptorMap() {
- if (typeCache == null || typeCache.isEmpty()) {
- return Collections.EMPTY_MAP;
- }
- Map<String, TypeDescriptor> typeDescriptorMap = new HashMap<>();
- for (Map.Entry<Class<?>, TypeDescriptor> entry : typeCache.entrySet()) {
- typeDescriptorMap.put(entry.getKey().getName(), entry.getValue());
- }
- return typeDescriptorMap;
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReport.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReport.java
index eb9fb61..d664dd5 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReport.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReport.java
@@ -17,7 +17,6 @@
package org.apache.dubbo.metadata.support;
import com.google.gson.Gson;
-import org.apache.commons.lang3.time.DateUtils;
import org.apache.dubbo.common.Constants;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.logger.Logger;
@@ -39,7 +38,6 @@ import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.util.Calendar;
-import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
@@ -311,10 +309,13 @@ public abstract class AbstractMetadataReport implements MetadataReport {
* @return
*/
long calculateStartTime() {
- Date now = new Date();
- long nowMill = now.getTime();
- long today0 = DateUtils.truncate(now, Calendar.DAY_OF_MONTH).getTime();
- long subtract = today0 + ONE_DAY_IN_MIll - nowMill;
+ Calendar calendar = Calendar.getInstance();
+ long nowMill = calendar.getTimeInMillis();
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ long subtract = calendar.getTimeInMillis() + ONE_DAY_IN_MIll - nowMill;
Random r = new Random();
return subtract + (FOUR_HOURS_IN_MIll / 2) + r.nextInt(FOUR_HOURS_IN_MIll);
}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/RetryTestService.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/RetryTestService.java
index cc129a3..afbad8b 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/RetryTestService.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/RetryTestService.java
@@ -1,7 +1,7 @@
package org.apache.dubbo.metadata.integration;
/**
- * @author cvictory ON 2018/10/26
+ * 2018/10/26
*/
public interface RetryTestService {
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ArrayTypeBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ArrayTypeBuilderTest.java
deleted file mode 100644
index 8486cd9..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ArrayTypeBuilderTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.lang.reflect.Array;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 2018/9/20
- */
-public class ArrayTypeBuilderTest {
-
- private ArrayTypeBuilder arrayTypeBuilder = new ArrayTypeBuilder();
-
- @Test
- public void testAcceptWhenArray() {
- String[] param = new String[2];
- Class c = param.getClass();
- Assert.assertTrue(arrayTypeBuilder.accept(null, c));
- }
-
- @Test
- public void testAcceptWhenNull() {
- Assert.assertFalse(arrayTypeBuilder.accept(null, null));
- }
-
- @Test
- public void testAcceptWhenOtherClass() {
- Assert.assertFalse(arrayTypeBuilder.accept(null, Array.class));
- }
-
- @Test
- public void testBuildWhenSimpleArray() throws NoSuchMethodException {
- Class targetClass = TestService.class;
- Method method = targetClass.getMethod("testWriteSimpleArray", String[].class);
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- Class<?>[] paramTypes = method.getParameterTypes();
- Type[] genericParamTypes = method.getGenericParameterTypes();
-
- TypeDescriptor td = arrayTypeBuilder.build(genericParamTypes[0], paramTypes[0], cache);
- System.out.println(td);
- Assert.assertNotNull(td);
- Assert.assertEquals(td.getType(), "java.lang.String[]");
-
- Method readMethod = targetClass.getMethod("testReadSimpleArray", int.class);
- Class returnType = readMethod.getReturnType();
- Type genericReturnType = readMethod.getGenericReturnType();
- TypeDescriptor rTd = arrayTypeBuilder.build(genericReturnType, returnType, cache);
- Assert.assertNotNull(rTd);
- Assert.assertEquals(rTd.getType(), "java.lang.String[]");
-
- Assert.assertTrue(cache.isEmpty());
- }
-
- @Test
- public void testBuildWhenComplexArray() throws NoSuchMethodException {
- Class targetClass = TestService.class;
- Method method = targetClass.getMethod("testWriteComplexArray", String[].class, ComplexObject[].class);
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- Class<?>[] paramTypes = method.getParameterTypes();
- Type[] genericParamTypes = method.getGenericParameterTypes();
-
- TypeDescriptor td1 = arrayTypeBuilder.build(genericParamTypes[0], paramTypes[0], cache);
- System.out.println(td1);
- Assert.assertNotNull(td1);
- Assert.assertEquals(td1.getType(), "java.lang.String[]");
-
- TypeDescriptor td2 = arrayTypeBuilder.build(genericParamTypes[1], paramTypes[1], cache);
- System.out.println(td2);
- Assert.assertNotNull(td2);
- Assert.assertEquals(td2.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject[]");
-
- Method readMethod = targetClass.getMethod("testReadComplexArray", int.class);
- Class returnType = readMethod.getReturnType();
- Type genericReturnType = readMethod.getGenericReturnType();
- TypeDescriptor rTd = arrayTypeBuilder.build(genericReturnType, returnType, cache);
- Assert.assertNotNull(rTd);
- Assert.assertEquals(rTd.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject[]");
-
- Assert.assertTrue(cache.size() == 2);
- Assert.assertTrue(cache.get(ComplexObject.class) != null);
- Assert.assertEquals(cache.get(ComplexObject.class).getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject");
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/CollectionTypeBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/CollectionTypeBuilderTest.java
deleted file mode 100644
index ceec948..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/CollectionTypeBuilderTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 2018/9/20
- */
-public class CollectionTypeBuilderTest {
-
- private CollectionTypeBuilder collectionTypeBuilder = new CollectionTypeBuilder();
-
- @Test
- public void testAcceptWhenNotCollection() {
- String[] param = new String[2];
- Class c = param.getClass();
- Assert.assertFalse(collectionTypeBuilder.accept(null, c));
- }
-
- @Test
- public void testAcceptWhenNull() {
- Assert.assertFalse(collectionTypeBuilder.accept(null, null));
- }
-
- @Test
- public void testAcceptWhenCollection() {
- Assert.assertTrue(collectionTypeBuilder.accept(null, ArrayList.class));
- }
-
- @Test
- public void testBuildWhenSimpleList() throws NoSuchMethodException {
- Class targetClass = TestService.class;
- Method method = targetClass.getMethod("testWriteSimpleCollection", List.class);
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- Class<?>[] paramTypes = method.getParameterTypes();
- Type[] genericParamTypes = method.getGenericParameterTypes();
-
- TypeDescriptor td = collectionTypeBuilder.build(genericParamTypes[0], paramTypes[0], cache);
- System.out.println(td);
- Assert.assertNotNull(td);
- Assert.assertEquals(td.getType(), "java.util.List<java.lang.String>");
-
- Method readMethod = targetClass.getMethod("testReadSimpleCollection", int.class);
- Class returnType = readMethod.getReturnType();
- Type genericReturnType = readMethod.getGenericReturnType();
- TypeDescriptor rTd = collectionTypeBuilder.build(genericReturnType, returnType, cache);
- Assert.assertNotNull(rTd);
- Assert.assertEquals(rTd.getType(), "java.util.List<java.lang.Integer>");
-
- Assert.assertTrue(cache.isEmpty());
- }
-
- @Test
- public void testBuildWhenComplexList() throws NoSuchMethodException {
- Class targetClass = TestService.class;
- Method method = targetClass.getMethod("testWriteComplexCollection", List.class, List.class);
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- Class<?>[] paramTypes = method.getParameterTypes();
- Type[] genericParamTypes = method.getGenericParameterTypes();
-
- TypeDescriptor td1 = collectionTypeBuilder.build(genericParamTypes[0], paramTypes[0], cache);
- System.out.println(td1);
- Assert.assertNotNull(td1);
- Assert.assertEquals(td1.getType(), "java.util.List<java.lang.Long>");
-
- TypeDescriptor td2 = collectionTypeBuilder.build(genericParamTypes[1], paramTypes[1], cache);
- System.out.println(td2);
- Assert.assertNotNull(td2);
- Assert.assertEquals(td2.getType(), "java.util.List<org.apache.dubbo.metadata.metadata.builder.ComplexObject>");
-
- Method readMethod = targetClass.getMethod("testReadComplexCollection", int.class);
- Class returnType = readMethod.getReturnType();
- Type genericReturnType = readMethod.getGenericReturnType();
- TypeDescriptor rTd = collectionTypeBuilder.build(genericReturnType, returnType, cache);
- Assert.assertNotNull(rTd);
- Assert.assertEquals(rTd.getType(), "java.util.Set<org.apache.dubbo.metadata.metadata.builder.ComplexObject>");
-
- Assert.assertTrue(cache.size() == 2);
- Assert.assertTrue(cache.get(ComplexObject.class) != null);
- Assert.assertEquals(cache.get(ComplexObject.class).getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject");
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ComplexEnum.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ComplexEnum.java
deleted file mode 100644
index 689b89f..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ComplexEnum.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-/**
- * 2018/9/28
- */
-public enum ComplexEnum {
- F(11, "t1"), S(22, "t2"), T(33, "t1");
-
- ComplexEnum(int code, String message) {
- this.code = code;
- this.msg = message;
- }
-
- private int code;
- private String msg;
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ComplexObject.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ComplexObject.java
deleted file mode 100644
index d5f7d29..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ComplexObject.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 2018/9/28
- */
-public class ComplexObject {
-
- private static boolean test;
-
- private String[] strArray;
- private List<Integer> integerList;
- private short s;
- private Map<String, Long> testMap;
- private ComplexInnerObject complexInnerObject;
-
- public List<Integer> getIntegerList() {
- return integerList;
- }
-
- public void setIntegerList(List<Integer> integerList) {
- this.integerList = integerList;
- }
-
- public short getS() {
- return s;
- }
-
- public void setS(short s) {
- this.s = s;
- }
- static class ComplexInnerObject{
- private String str;
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/DefaultTypeBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/DefaultTypeBuilderTest.java
deleted file mode 100644
index 2a187d8..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/DefaultTypeBuilderTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 2018/9/28
- */
-public class DefaultTypeBuilderTest {
-
- @Test
- public void testWhenBigDecimal() {
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- TypeDescriptor td = DefaultTypeBuilder.build(BigDecimal.class, cache);
- Assert.assertNotNull(td);
- Assert.assertEquals(td.getType(), "java.math.BigDecimal");
- Assert.assertFalse(td.isCustom());
-
- Assert.assertTrue(cache.isEmpty());
- }
-
- @Test
- public void testWhenString() {
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- TypeDescriptor td = DefaultTypeBuilder.build(String.class, cache);
- Assert.assertNotNull(td);
- Assert.assertEquals(td.getType(), "java.lang.String");
- Assert.assertFalse(td.isCustom());
-
- Assert.assertTrue(cache.isEmpty());
- }
-
- @Test
- public void testWhenInt() {
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- TypeDescriptor td = DefaultTypeBuilder.build(int.class, cache);
- Assert.assertNotNull(td);
- Assert.assertEquals(td.getType(), "int");
- Assert.assertFalse(td.isCustom());
-
- Assert.assertTrue(cache.isEmpty());
- }
-
- @Test
- public void testWhenComplextObject() {
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- TypeDescriptor td = DefaultTypeBuilder.build(ComplexObject.class, cache);
- Assert.assertNotNull(td);
- Assert.assertEquals(td.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject");
- Assert.assertTrue(td.isCustom());
- Assert.assertTrue(td.getProperties().entrySet().size() >= 4);
-
- Assert.assertTrue(cache.size() == 2);
- Assert.assertEquals(td, cache.get(ComplexObject.class));
- Assert.assertNotNull(cache.get(ComplexObject.ComplexInnerObject.class));
- }
-
-
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/EnumTypeBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/EnumTypeBuilderTest.java
deleted file mode 100644
index 92a9096..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/EnumTypeBuilderTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 2018/9/20
- */
-public class EnumTypeBuilderTest {
-
- private EnumTypeBuilder enumTypeBuilder = new EnumTypeBuilder();
-
- @Test
- public void testAcceptWhenEnum() {
- Class c = SingleEnum.class;
- Assert.assertTrue(enumTypeBuilder.accept(null, c));
- }
-
- @Test
- public void testAcceptWhenNull() {
- Assert.assertFalse(enumTypeBuilder.accept(null, null));
- }
-
- @Test
- public void testAcceptWhenNotEnum() {
- Assert.assertFalse(enumTypeBuilder.accept(null, ArrayList.class));
- }
-
- @Test
- public void testBuildWhenSingleEnum() throws NoSuchMethodException {
- Class targetClass = TestService.class;
- Method method = targetClass.getMethod("testWriteSingleEnum", SingleEnum.class);
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- Class<?>[] paramTypes = method.getParameterTypes();
- Type[] genericParamTypes = method.getGenericParameterTypes();
-
- TypeDescriptor td = enumTypeBuilder.build(genericParamTypes[0], paramTypes[0], cache);
- System.out.println(td);
- Assert.assertNotNull(td);
- Assert.assertEquals(td.getType(), "org.apache.dubbo.metadata.metadata.builder.SingleEnum");
-
- Method readMethod = targetClass.getMethod("testReadSingleEnum", int.class);
- Class returnType = readMethod.getReturnType();
- Type genericReturnType = readMethod.getGenericReturnType();
- TypeDescriptor rTd = enumTypeBuilder.build(genericReturnType, returnType, cache);
- Assert.assertNotNull(rTd);
- Assert.assertEquals(rTd.getType(), "org.apache.dubbo.metadata.metadata.builder.SingleEnum");
-
- Assert.assertFalse(cache.isEmpty());
- }
-
- @Test
- public void testBuildWhenComplexEnum() throws NoSuchMethodException {
- Class targetClass = TestService.class;
- Method method = targetClass.getMethod("testWriteComplexEnum", ComplexEnum.class);
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- Class<?>[] paramTypes = method.getParameterTypes();
- Type[] genericParamTypes = method.getGenericParameterTypes();
-
-
- TypeDescriptor td2 = enumTypeBuilder.build(genericParamTypes[0], paramTypes[0], cache);
- System.out.println(td2);
- Assert.assertNotNull(td2);
- Assert.assertEquals(td2.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexEnum");
-
- Method readMethod = targetClass.getMethod("testReadComplexEnum", int.class);
- Class returnType = readMethod.getReturnType();
- Type genericReturnType = readMethod.getGenericReturnType();
- TypeDescriptor rTd = enumTypeBuilder.build(genericReturnType, returnType, cache);
- Assert.assertNotNull(rTd);
- Assert.assertEquals(rTd.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexEnum");
-
- Assert.assertTrue(cache.size() == 1);
- Assert.assertTrue(cache.get(ComplexEnum.class) != null);
- Assert.assertEquals(cache.get(ComplexEnum.class).getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexEnum");
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/MapTypeBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/MapTypeBuilderTest.java
deleted file mode 100644
index 8833df9..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/MapTypeBuilderTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 2018/9/20
- */
-public class MapTypeBuilderTest {
-
- private MapTypeBuilder mapTypeBuilder = new MapTypeBuilder();
-
- @Test
- public void testAcceptWhenMap() {
- String[] param = new String[2];
- Class c = param.getClass();
- Assert.assertFalse(mapTypeBuilder.accept(null, c));
- }
-
- @Test
- public void testAcceptWhenNull() {
- Assert.assertFalse(mapTypeBuilder.accept(null, null));
- }
-
- @Test
- public void testAcceptWhenNotMap() {
- Assert.assertFalse(mapTypeBuilder.accept(null, ArrayList.class));
- }
-
- @Test
- public void testBuildWhenSimpleMap() throws NoSuchMethodException {
- Class targetClass = TestService.class;
- Method method = targetClass.getMethod("testWriteSimpleMap", Map.class);
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- Class<?>[] paramTypes = method.getParameterTypes();
- Type[] genericParamTypes = method.getGenericParameterTypes();
-
- TypeDescriptor td = mapTypeBuilder.build(genericParamTypes[0], paramTypes[0], cache);
- System.out.println(td);
- Assert.assertNotNull(td);
- Assert.assertEquals(td.getType(), "java.util.Map<java.lang.String, java.lang.Integer>");
-
- Method readMethod = targetClass.getMethod("testReadSimpleMap", int.class);
- Class returnType = readMethod.getReturnType();
- Type genericReturnType = readMethod.getGenericReturnType();
- TypeDescriptor rTd = mapTypeBuilder.build(genericReturnType, returnType, cache);
- Assert.assertNotNull(rTd);
- Assert.assertEquals(rTd.getType(), "java.util.Map<java.lang.String, java.lang.Integer>");
-
- Assert.assertTrue(cache.isEmpty());
- }
-
- @Test
- public void testBuildWhenComplexMap() throws NoSuchMethodException {
- Class targetClass = TestService.class;
- Method method = targetClass.getMethod("testWriteComplexMap", Map.class, Map.class);
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- Class<?>[] paramTypes = method.getParameterTypes();
- Type[] genericParamTypes = method.getGenericParameterTypes();
-
- TypeDescriptor td1 = mapTypeBuilder.build(genericParamTypes[0], paramTypes[0], cache);
- System.out.println(td1);
- Assert.assertNotNull(td1);
- Assert.assertEquals(td1.getType(), "java.util.Map<java.lang.String, java.lang.String>");
-
- TypeDescriptor td2 = mapTypeBuilder.build(genericParamTypes[1], paramTypes[1], cache);
- System.out.println(td2);
- Assert.assertNotNull(td2);
- Assert.assertEquals(td2.getType(), "java.util.Map<java.lang.String, org.apache.dubbo.metadata.metadata.builder.ComplexObject>");
-
- Method readMethod = targetClass.getMethod("testReadComplexMap", int.class);
- Class returnType = readMethod.getReturnType();
- Type genericReturnType = readMethod.getGenericReturnType();
- TypeDescriptor rTd = mapTypeBuilder.build(genericReturnType, returnType, cache);
- Assert.assertNotNull(rTd);
- Assert.assertEquals(rTd.getType(), "java.util.Map<java.lang.String, org.apache.dubbo.metadata.metadata.builder.ComplexObject>");
-
- Assert.assertTrue(cache.size() == 2);
- Assert.assertTrue(cache.get(ComplexObject.class) != null);
- Assert.assertEquals(cache.get(ComplexObject.class).getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject");
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ServiceDescriptorBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ServiceDescriptorBuilderTest.java
deleted file mode 100644
index 1abe7a6..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ServiceDescriptorBuilderTest.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.ServiceDescriptor;
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- * 2018/9/29
- */
-public class ServiceDescriptorBuilderTest {
-
- @Test
- public void testGetCodeSource(){
- String codeSource = ServiceDescriptorBuilder.getCodeSource(ServiceDescriptorBuilder.class);
- Assert.assertNotNull(codeSource);
- }
-
- @Test
- public void testBuild(){
- ServiceDescriptor serviceDescriptor = ServiceDescriptorBuilder.build(TestService.class);
- Assert.assertNotNull(serviceDescriptor);
- Assert.assertTrue(serviceDescriptor.getMethodDescriptors().size() == 17);
- Assert.assertTrue(serviceDescriptor.getTypes().size() == 4);
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/SingleEnum.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/SingleEnum.java
deleted file mode 100644
index 18103b8..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/SingleEnum.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-/**
- * 2018/9/28
- */
-public enum SingleEnum {
- FIRST,SECOND
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/TestService.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/TestService.java
deleted file mode 100644
index 286e6c3..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/TestService.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * 2018/9/28
- */
-public interface TestService {
-
- void testWriteSimpleArray(String[] args);
-
- String[] testReadSimpleArray(int i);
-
- void testWriteComplexArray(String[] args, ComplexObject[] complexObjects);
-
- ComplexObject[] testReadComplexArray(int i);
-
- void testWriteSimpleCollection(List<String> args);
-
- List<Integer> testReadSimpleCollection(int i);
-
- void testWriteComplexCollection(List<Long> args, List<ComplexObject> complexObjects);
-
- Set<ComplexObject> testReadComplexCollection(int i);
-
- void testWriteSingleEnum(SingleEnum singleEnum);
-
- SingleEnum testReadSingleEnum(int i);
-
- void testWriteComplexEnum(ComplexEnum complexEnum);
-
- ComplexEnum testReadComplexEnum(int i);
-
- void testWriteSimpleMap(Map<String, Integer> args);
-
- Map<String, Integer> testReadSimpleMap(int i);
-
- void testWriteComplexMap(Map<String, String> arg, Map<String, ComplexObject> complexObjects);
-
- Map<String, ComplexObject> testReadComplexMap(int i);
-
- void testWriteComplexObject(ComplexObject complexObject);
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/TypeDescriptorBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/TypeDescriptorBuilderTest.java
deleted file mode 100644
index 8723a66..0000000
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/TypeDescriptorBuilderTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package org.apache.dubbo.metadata.metadata.builder;
-
-import org.apache.dubbo.metadata.metadata.TypeDescriptor;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 2018/9/29
- */
-public class TypeDescriptorBuilderTest {
-
-
- @Test
- public void testStaticBuildWhenSimpleArray() throws NoSuchMethodException {
- Class targetClass = TestService.class;
- Method method = targetClass.getMethod("testWriteSimpleArray", String[].class);
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- Class<?>[] paramTypes = method.getParameterTypes();
- Type[] genericParamTypes = method.getGenericParameterTypes();
-
- TypeDescriptor td = TypeDescriptorBuilder.build(genericParamTypes[0], paramTypes[0], cache);
- System.out.println(td);
- Assert.assertNotNull(td);
- Assert.assertEquals(td.getType(), "java.lang.String[]");
-
- Method readMethod = targetClass.getMethod("testReadSimpleArray", int.class);
- Class returnType = readMethod.getReturnType();
- Type genericReturnType = readMethod.getGenericReturnType();
- TypeDescriptor rTd = TypeDescriptorBuilder.build(genericReturnType, returnType, cache);
- Assert.assertNotNull(rTd);
- Assert.assertEquals(rTd.getType(), "java.lang.String[]");
-
- Assert.assertTrue(cache.isEmpty());
- }
-
- @Test
- public void testStaticBuildWhenComplextObject() throws NoSuchMethodException {
-
- Class targetClass = TestService.class;
- Method method = targetClass.getMethod("testWriteComplexObject", ComplexObject.class);
- Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
- Class<?>[] paramTypes = method.getParameterTypes();
- Type[] genericParamTypes = method.getGenericParameterTypes();
-
-
- TypeDescriptor td = TypeDescriptorBuilder.build(genericParamTypes[0], paramTypes[0], cache);
- Assert.assertNotNull(td);
- Assert.assertEquals(td.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject");
- Assert.assertTrue(td.isCustom());
- Assert.assertTrue(td.getProperties().entrySet().size() >= 4);
-
- Assert.assertTrue(cache.size() == 2);
- Assert.assertEquals(td, cache.get(ComplexObject.class));
- Assert.assertNotNull(cache.get(ComplexObject.ComplexInnerObject.class));
- }
-
- /**
- * test builder and getTypeDescriptorMap method.
- *
- * @throws NoSuchMethodException
- */
- @Test
- public void testBuildWhenComplextObject() throws NoSuchMethodException {
- TypeDescriptorBuilder typeDescriptorBuilder = new TypeDescriptorBuilder();
-
- Class targetClass = TestService.class;
- Method method = targetClass.getMethod("testWriteComplexObject", ComplexObject.class);
- Class<?>[] paramTypes = method.getParameterTypes();
- Type[] genericParamTypes = method.getGenericParameterTypes();
-
-
- TypeDescriptor td = typeDescriptorBuilder.build(genericParamTypes[0], paramTypes[0]);
- Assert.assertNotNull(td);
- Assert.assertEquals(td.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject");
- Assert.assertTrue(td.isCustom());
- Assert.assertTrue(td.getProperties().entrySet().size() >= 4);
-
- Assert.assertTrue(typeDescriptorBuilder.getTypeDescriptorMap().size() == 2);
- Assert.assertEquals(td, typeDescriptorBuilder.getTypeDescriptorMap().get(ComplexObject.class.getName()));
- Assert.assertNotNull(typeDescriptorBuilder.getTypeDescriptorMap().get(ComplexObject.ComplexInnerObject.class.getName()));
- }
-
- @Test
- public void testGetGenericTypeBuilder() {
- Assert.assertNull(TypeDescriptorBuilder.getGenericTypeBuilder(null, ComplexObject.class));
- Assert.assertNotNull(TypeDescriptorBuilder.getGenericTypeBuilder(null, String[].class));
- Assert.assertTrue(TypeDescriptorBuilder.getGenericTypeBuilder(null, String[].class) instanceof ArrayTypeBuilder);
- Assert.assertNotNull(TypeDescriptorBuilder.getGenericTypeBuilder(null, ArrayList.class));
- Assert.assertTrue(TypeDescriptorBuilder.getGenericTypeBuilder(null, ArrayList.class) instanceof CollectionTypeBuilder);
- Assert.assertNotNull(TypeDescriptorBuilder.getGenericTypeBuilder(null, HashMap.class));
- Assert.assertTrue(TypeDescriptorBuilder.getGenericTypeBuilder(null, HashMap.class) instanceof MapTypeBuilder);
- Assert.assertNotNull(TypeDescriptorBuilder.getGenericTypeBuilder(null, SingleEnum.class));
- Assert.assertTrue(TypeDescriptorBuilder.getGenericTypeBuilder(null, SingleEnum.class) instanceof EnumTypeBuilder);
- }
-}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReport4Test.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReport4Test.java
index e3964af..67294a8 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReport4Test.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReport4Test.java
@@ -36,7 +36,6 @@ public class JTestMetadataReport4Test extends AbstractMetadataReport {
private final static Logger logger = LoggerFactory.getLogger(JTestMetadataReport4Test.class);
-
public JTestMetadataReport4Test(URL url, ZookeeperTransporter zookeeperTransporter) {
super(url);
}
@@ -60,7 +59,7 @@ public class JTestMetadataReport4Test extends AbstractMetadataReport {
store.put(consumerMetadataIdentifier.getIdentifierKey(), serviceParameterString);
}
- public static String getKey(URL url){
+ public static String getKey(URL url) {
return getProtocol(url) + url.getServiceKey();
}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactoryTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactoryTest.java
index 6a808c1..beb7594 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactoryTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactoryTest.java
@@ -1,7 +1,6 @@
package org.apache.dubbo.metadata.support;
import com.alibaba.fastjson.JSON;
-
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.NetUtils;
import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportTest.java
index ab8cd95..4433618 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportTest.java
@@ -27,8 +27,8 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import java.util.Calendar;
import java.util.Collections;
-import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -208,11 +208,12 @@ public class AbstractMetadataReportTest {
@Test
public void testCalculateStartTime() {
- for (int i = 0; i < 50; i++) {
+ for (int i = 0; i < 300; i++) {
long t = abstractMetadataReport.calculateStartTime() + System.currentTimeMillis();
- Date date = new Date(t);
- Assert.assertTrue(date.getHours() >= 2);
- Assert.assertTrue(date.getHours() <= 6);
+ Calendar c = Calendar.getInstance();
+ c.setTimeInMillis(t);
+ Assert.assertTrue(c.get(Calendar.HOUR_OF_DAY) >= 2);
+ Assert.assertTrue(c.get(Calendar.HOUR_OF_DAY) <= 6);
}
}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
index 901601f..0f702e8 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
@@ -38,6 +38,7 @@ public class ZookeeperMetadataReport extends AbstractMetadataReport {
private final static Logger logger = LoggerFactory.getLogger(ZookeeperMetadataReport.class);
private final static String DEFAULT_ROOT = "dubbo";
+ private final static String METADATA_NODE_NAME = "service.data";
private final String root;
@@ -84,14 +85,11 @@ public class ZookeeperMetadataReport extends AbstractMetadataReport {
}
private void storeMetadata(MetadataIdentifier metadataIdentifier, String v) {
- String category = getCategory(metadataIdentifier);
- String filePath = category + Constants.PATH_SEPARATOR + URL.encode(v);
- deletePath(category);
- zkClient.create(filePath, false);
+ zkClient.create(getNodePath(metadataIdentifier), v, false);
}
- String getCategory(MetadataIdentifier metadataIdentifier) {
- return toRootDir() + metadataIdentifier.getFilePathKey();
+ String getNodePath(MetadataIdentifier metadataIdentifier) {
+ return toRootDir() + metadataIdentifier.getFilePathKey() + Constants.PATH_SEPARATOR + METADATA_NODE_NAME;
}
diff --git a/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
index 93b9c08..7c5e173 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
@@ -55,19 +55,20 @@ public class ZookeeperMetadataReportTest {
String application = "vic.zk.md";
ProviderMetadataIdentifier providerMetadataIdentifier = storePrivider(zookeeperMetadataReport, interfaceName, version, group, application);
- List<String> files = zookeeperMetadataReport.zkClient.getChildren(zookeeperMetadataReport.getCategory(providerMetadataIdentifier));
- Assert.assertTrue(!files.isEmpty());
+ String fileContent = zookeeperMetadataReport.zkClient.getContent(zookeeperMetadataReport.getNodePath(providerMetadataIdentifier));
+ Assert.assertNotNull(fileContent);
deletePath(providerMetadataIdentifier, zookeeperMetadataReport);
- files = zookeeperMetadataReport.zkClient.getChildren(zookeeperMetadataReport.getCategory(providerMetadataIdentifier));
- Assert.assertTrue(files.isEmpty());
+ fileContent = zookeeperMetadataReport.zkClient.getContent(zookeeperMetadataReport.getNodePath(providerMetadataIdentifier));
+ Assert.assertNull(fileContent);
+
providerMetadataIdentifier = storePrivider(zookeeperMetadataReport, interfaceName, version, group, application);
- files = zookeeperMetadataReport.zkClient.getChildren(zookeeperMetadataReport.getCategory(providerMetadataIdentifier));
- Assert.assertTrue(files.size() == 1);
- String result = URL.decode(files.get(0));
+ fileContent = zookeeperMetadataReport.zkClient.getContent(zookeeperMetadataReport.getNodePath(providerMetadataIdentifier));
+ Assert.assertNotNull(fileContent);
+
Gson gson = new Gson();
- FullServiceDefinition fullServiceDefinition = gson.fromJson(result, FullServiceDefinition.class);
+ FullServiceDefinition fullServiceDefinition = gson.fromJson(fileContent, FullServiceDefinition.class);
Assert.assertEquals(fullServiceDefinition.getParameters().get("paramTest"), "zkTest");
}
@@ -80,18 +81,17 @@ public class ZookeeperMetadataReportTest {
String application = "vic.zk.md";
ConsumerMetadataIdentifier consumerMetadataIdentifier = storeConsumer(zookeeperMetadataReport, interfaceName, version, group, application);
- List<String> files = zookeeperMetadataReport.zkClient.getChildren(zookeeperMetadataReport.getCategory(consumerMetadataIdentifier));
- Assert.assertTrue(!files.isEmpty());
+ String fileContent = zookeeperMetadataReport.zkClient.getContent(zookeeperMetadataReport.getNodePath(consumerMetadataIdentifier));
+ Assert.assertNotNull(fileContent);
deletePath(consumerMetadataIdentifier, zookeeperMetadataReport);
- files = zookeeperMetadataReport.zkClient.getChildren(zookeeperMetadataReport.getCategory(consumerMetadataIdentifier));
- Assert.assertTrue(files.isEmpty());
+ fileContent = zookeeperMetadataReport.zkClient.getContent(zookeeperMetadataReport.getNodePath(consumerMetadataIdentifier));
+ Assert.assertNull(fileContent);
consumerMetadataIdentifier = storeConsumer(zookeeperMetadataReport, interfaceName, version, group, application);
- files = zookeeperMetadataReport.zkClient.getChildren(zookeeperMetadataReport.getCategory(consumerMetadataIdentifier));
- Assert.assertTrue(files.size() == 1);
- String result = URL.decode(files.get(0));
- Assert.assertEquals(result, "paramConsumerTest=zkCm");
+ fileContent = zookeeperMetadataReport.zkClient.getContent(zookeeperMetadataReport.getNodePath(consumerMetadataIdentifier));
+ Assert.assertNotNull(fileContent);
+ Assert.assertEquals(fileContent, "paramConsumerTest=zkCm");
}
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/ZKTools.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/ZKTools.java
index 9425222..d0a569f 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/ZKTools.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/ZKTools.java
@@ -54,14 +54,14 @@ public class ZKTools {
public static void testStartupConfig() {
String str = "dubbo.registry.address=zookeeper://127.0.0.1:2181\n" +
"dubbo.registry.group=dubboregistrygroup1\n" +
- "dubbo.servicestore.address=zookeeper://127.0.0.1:2181\n" +
+ "dubbo.metadatareport.address=zookeeper://127.0.0.1:2181\n" +
"dubbo.protocol.port=20990\n" +
"dubbo.service.org.apache.dubbo.demo.DemoService.timeout=9999\n";
System.out.println(str);
try {
- String path = "/dubboregistrygroup1/config/dubbo/dubbo.properties";
+ String path = "/dubboregistrygroup1/config/demo-provider/dubbo.properties";
if (client.checkExists().forPath(path) == null) {
client.create().creatingParentsIfNeeded().forPath(path);
}
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/ZookeeperClient.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/ZookeeperClient.java
index 25abde4..b6875ee 100644
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/ZookeeperClient.java
+++ b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/ZookeeperClient.java
@@ -42,4 +42,8 @@ public interface ZookeeperClient {
URL getUrl();
+ void create(String path, String content, boolean ephemeral);
+
+ String getContent(String path);
+
}
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java
index 830eb31..e1315e3 100644
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java
+++ b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java
@@ -34,11 +34,13 @@ import org.apache.zookeeper.KeeperException.NoNodeException;
import org.apache.zookeeper.KeeperException.NodeExistsException;
import org.apache.zookeeper.WatchedEvent;
+import java.nio.charset.Charset;
import java.util.Collections;
import java.util.List;
public class CuratorZookeeperClient extends AbstractZookeeperClient<CuratorWatcher> {
+ private final Charset charset = Charset.forName("UTF-8");
private final CuratorFramework client;
public CuratorZookeeperClient(URL url) {
@@ -93,6 +95,28 @@ public class CuratorZookeeperClient extends AbstractZookeeperClient<CuratorWatch
}
@Override
+ protected void createPersistent(String path, String data) {
+ try {
+ byte[] dataBytes = data.getBytes(charset);
+ client.create().forPath(path, dataBytes);
+ } catch (NodeExistsException e) {
+ } catch (Exception e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ }
+ }
+
+ @Override
+ protected void createEphemeral(String path, String data) {
+ try {
+ byte[] dataBytes = data.getBytes(charset);
+ client.create().withMode(CreateMode.EPHEMERAL).forPath(path, dataBytes);
+ } catch (NodeExistsException e) {
+ } catch (Exception e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ }
+ }
+
+ @Override
public void delete(String path) {
try {
client.delete().forPath(path);
@@ -129,6 +153,22 @@ public class CuratorZookeeperClient extends AbstractZookeeperClient<CuratorWatch
}
@Override
+ public String doGetContent(String path) {
+ try {
+ byte[] dataBytes = client.getData().forPath(path);
+ if(dataBytes == null || dataBytes.length == 0){
+ return null;
+ }
+ return new String(dataBytes, charset);
+ } catch (NodeExistsException e) {
+ } catch (NoNodeException e) {
+ } catch (Exception e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ }
+ return null;
+ }
+
+ @Override
public void doClose() {
client.close();
}
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/support/AbstractZookeeperClient.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/support/AbstractZookeeperClient.java
index 5da3ab7..852c974 100644
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/support/AbstractZookeeperClient.java
+++ b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/support/AbstractZookeeperClient.java
@@ -127,12 +127,38 @@ public abstract class AbstractZookeeperClient<TargetChildListener> implements Zo
}
}
+ public void create(String path, String content, boolean ephemeral) {
+ if (checkExists(path)) {
+ delete(path);
+ }
+ int i = path.lastIndexOf('/');
+ if (i > 0) {
+ create(path.substring(0, i), false);
+ }
+ if (ephemeral) {
+ createEphemeral(path, content);
+ } else {
+ createPersistent(path, content);
+ }
+ }
+
+ public String getContent(String path) {
+ if (!checkExists(path)) {
+ return null;
+ }
+ return doGetContent(path);
+ }
+
protected abstract void doClose();
protected abstract void createPersistent(String path);
protected abstract void createEphemeral(String path);
+ protected abstract void createPersistent(String path, String data);
+
+ protected abstract void createEphemeral(String path, String data);
+
protected abstract boolean checkExists(String path);
protected abstract TargetChildListener createTargetChildListener(String path, ChildListener listener);
@@ -141,4 +167,6 @@ public abstract class AbstractZookeeperClient<TargetChildListener> implements Zo
protected abstract void removeTargetChildListener(String path, TargetChildListener listener);
+ protected abstract String doGetContent(String path);
+
}
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkClientWrapper.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkClientWrapper.java
index 17aa372..ae8a3ef 100644
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkClientWrapper.java
+++ b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkClientWrapper.java
@@ -86,6 +86,16 @@ public class ZkClientWrapper {
client.createEphemeral(path);
}
+ public void createPersistent(String path, String data) {
+ Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
+ client.createPersistent(path, data);
+ }
+
+ public void createEphemeral(String path, String data) {
+ Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
+ client.createEphemeral(path, data);
+ }
+
public void delete(String path) {
Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
client.delete(path);
@@ -96,6 +106,11 @@ public class ZkClientWrapper {
return client.getChildren(path);
}
+ public String getData(String path) {
+ Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
+ return client.readData(path);
+ }
+
public boolean exists(String path) {
Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
return client.exists(path);
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClient.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClient.java
index 4f7faeb..0866efb 100644
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClient.java
+++ b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClient.java
@@ -77,6 +77,22 @@ public class ZkclientZookeeperClient extends AbstractZookeeperClient<IZkChildLis
}
@Override
+ protected void createPersistent(String path, String data) {
+ try {
+ client.createPersistent(path, data);
+ } catch (ZkNodeExistsException e) {
+ }
+ }
+
+ @Override
+ protected void createEphemeral(String path, String data) {
+ try {
+ client.createEphemeral(path, data);
+ } catch (ZkNodeExistsException e) {
+ }
+ }
+
+ @Override
public void delete(String path) {
try {
client.delete(path);
@@ -108,6 +124,15 @@ public class ZkclientZookeeperClient extends AbstractZookeeperClient<IZkChildLis
}
@Override
+ public String doGetContent(String path) {
+ try {
+ return client.getData(path);
+ } catch (ZkNoNodeException e) {
+ return null;
+ }
+ }
+
+ @Override
public void doClose() {
client.close();
}
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClientTest.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClientTest.java
index 39ab70b..95506c7 100644
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClientTest.java
+++ b/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClientTest.java
@@ -30,6 +30,8 @@ import java.util.List;
import java.util.concurrent.CountDownLatch;
import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
@@ -113,9 +115,35 @@ public class CuratorZookeeperClientTest {
assertThat(connected, is(true));
}
+ @Test
+ public void testCreateContent4Persistent() {
+ String path = "/curatorTest4CrContent/content.data";
+ String content = "createContentTest";
+ curatorClient.delete(path);
+ assertThat(curatorClient.checkExists(path), is(false));
+ assertNull(curatorClient.getContent(path));
+
+ curatorClient.create(path, content, false);
+ assertThat(curatorClient.checkExists(path), is(true));
+ assertEquals(curatorClient.getContent(path), content);
+ }
+
+ @Test
+ public void testCreateContent4Temp() {
+ String path = "/curatorTest4CrContent/content.data";
+ String content = "createContentTest";
+ curatorClient.delete(path);
+ assertThat(curatorClient.checkExists(path), is(false));
+ assertNull(curatorClient.getContent(path));
+
+ curatorClient.create(path, content, true);
+ assertThat(curatorClient.checkExists(path), is(true));
+ assertEquals(curatorClient.getContent(path), content);
+ }
+
@After
public void tearDown() throws Exception {
curatorClient.close();
zkServer.stop();
}
-}
\ No newline at end of file
+}
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClientTest.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClientTest.java
index 01eb787..6a45a8f 100644
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClientTest.java
+++ b/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClientTest.java
@@ -31,6 +31,8 @@ import java.util.concurrent.CountDownLatch;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
public class ZkclientZookeeperClientTest {
@@ -104,9 +106,35 @@ public class ZkclientZookeeperClientTest {
assertThat(zookeeperClientChildren, hasSize(5));
}
+ @Test
+ public void testCreateContentPersistent() {
+ String path = "/ZkclientZookeeperClient/content.data";
+ String content = "createContentTest";
+ zkclientZookeeperClient.delete(path);
+ assertThat(zkclientZookeeperClient.checkExists(path), is(false));
+ assertNull(zkclientZookeeperClient.getContent(path));
+
+ zkclientZookeeperClient.create(path, content, false);
+ assertThat(zkclientZookeeperClient.checkExists(path), is(true));
+ assertEquals(zkclientZookeeperClient.getContent(path), content);
+ }
+
+ @Test
+ public void testCreateContentTem() {
+ String path = "/ZkclientZookeeperClient/content.data";
+ String content = "createContentTest";
+ zkclientZookeeperClient.delete(path);
+ assertThat(zkclientZookeeperClient.checkExists(path), is(false));
+ assertNull(zkclientZookeeperClient.getContent(path));
+
+ zkclientZookeeperClient.create(path, content, true);
+ assertThat(zkclientZookeeperClient.checkExists(path), is(true));
+ assertEquals(zkclientZookeeperClient.getContent(path), content);
+ }
+
@After
public void tearDown() throws Exception {
zkclientZookeeperClient.close();
zkServer.stop();
}
-}
\ No newline at end of file
+}
diff --git a/dubbo-rpc/dubbo-rpc-webservice/src/test/java/org/apache/dubbo/rpc/protocol/webservice/WebserviceProtocolTest.java b/dubbo-rpc/dubbo-rpc-webservice/src/test/java/org/apache/dubbo/rpc/protocol/webservice/WebserviceProtocolTest.java
index 5763026..632e12c 100644
--- a/dubbo-rpc/dubbo-rpc-webservice/src/test/java/org/apache/dubbo/rpc/protocol/webservice/WebserviceProtocolTest.java
+++ b/dubbo-rpc/dubbo-rpc-webservice/src/test/java/org/apache/dubbo/rpc/protocol/webservice/WebserviceProtocolTest.java
@@ -26,7 +26,7 @@ import org.junit.Test;
import static junit.framework.Assert.assertEquals;
/**
- * @author kimmking
+ *
*/
public class WebserviceProtocolTest {
@@ -68,4 +68,4 @@ public class WebserviceProtocolTest {
}
-}
\ No newline at end of file
+}