You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/07/19 04:54:21 UTC
[dubbo] branch 3.0 updated: merge 2.7 metadata annotations
definition to 3.0 (#8305)
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new cecefc3 merge 2.7 metadata annotations definition to 3.0 (#8305)
cecefc3 is described below
commit cecefc39e1a7ccfdaaadb3c67f4e8add240da9e6
Author: 老夫正年轻 <ka...@163.com>
AuthorDate: Mon Jul 19 12:54:09 2021 +0800
merge 2.7 metadata annotations definition to 3.0 (#8305)
Co-authored-by: kalman03 <ka...@qq.com>
---
.../definition/ServiceDefinitionBuilder.java | 29 ++++++++++++++++++----
.../definition/model/MethodDefinition.java | 14 +++++++++++
.../definition/model/ServiceDefinition.java | 21 ++++++++++++++--
3 files changed, 57 insertions(+), 7 deletions(-)
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java
index 28aec37..db09b76 100755
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java
@@ -16,6 +16,14 @@
*/
package org.apache.dubbo.metadata.definition;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
import org.apache.dubbo.metadata.definition.model.MethodDefinition;
import org.apache.dubbo.metadata.definition.model.ServiceDefinition;
@@ -24,11 +32,6 @@ import org.apache.dubbo.metadata.definition.util.ClassUtils;
import com.google.gson.Gson;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.List;
-import java.util.Map;
-
/**
* 2015/1/27.
*/
@@ -61,6 +64,8 @@ public final class ServiceDefinitionBuilder {
public static <T extends ServiceDefinition> void build(T sd, final Class<?> interfaceClass) {
sd.setCanonicalName(interfaceClass.getCanonicalName());
sd.setCodeSource(ClassUtils.getCodeSource(interfaceClass));
+ Annotation[] classAnnotations = interfaceClass.getAnnotations();
+ sd.setAnnotations(annotationToStringList(classAnnotations));
TypeDefinitionBuilder builder = new TypeDefinitionBuilder();
List<Method> methods = ClassUtils.getPublicNonStaticMethods(interfaceClass);
@@ -68,6 +73,9 @@ public final class ServiceDefinitionBuilder {
MethodDefinition md = new MethodDefinition();
md.setName(method.getName());
+ Annotation[] methodAnnotations = method.getAnnotations();
+ md.setAnnotations(annotationToStringList(methodAnnotations));
+
// Process parameter types.
Class<?>[] paramTypes = method.getParameterTypes();
Type[] genericParamTypes = method.getGenericParameterTypes();
@@ -89,6 +97,17 @@ public final class ServiceDefinitionBuilder {
sd.setTypes(builder.getTypeDefinitions());
}
+ private static List<String> annotationToStringList(Annotation[] annotations) {
+ if (annotations == null) {
+ return Collections.emptyList();
+ }
+ List<String> list = new ArrayList<>();
+ for (Annotation annotation : annotations) {
+ list.add(annotation.toString());
+ }
+ return list;
+ }
+
/**
* Describe a Java interface in Json schema.
*
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/MethodDefinition.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/MethodDefinition.java
index e355859..305bfc3 100755
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/MethodDefinition.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/MethodDefinition.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.metadata.definition.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
@@ -41,6 +42,8 @@ public class MethodDefinition implements Serializable {
@Deprecated
private List<TypeDefinition> parameters;
+ private List<String> annotations;
+
public String getName() {
return name;
}
@@ -76,6 +79,17 @@ public class MethodDefinition implements Serializable {
this.returnType = formatType(returnType);
}
+ public List<String> getAnnotations() {
+ if (annotations == null) {
+ annotations = Collections.emptyList();
+ }
+ return annotations;
+ }
+
+ public void setAnnotations(List<String> annotations) {
+ this.annotations = annotations;
+ }
+
@Override
public String toString() {
return "MethodDefinition [name=" + name + ", parameterTypes=" + Arrays.toString(parameterTypes)
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java
index ed7d03b..40ced04 100755
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java
@@ -16,13 +16,14 @@
*/
package org.apache.dubbo.metadata.definition.model;
-import org.apache.dubbo.metadata.definition.util.ClassUtils;
-
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
+import org.apache.dubbo.metadata.definition.util.ClassUtils;
+
/**
* 2015/1/27.
*/
@@ -49,6 +50,11 @@ public class ServiceDefinition implements Serializable {
*/
private List<TypeDefinition> types;
+ /**
+ * the definitions of annotations
+ */
+ private List<String> annotations;
+
public String getCanonicalName() {
return canonicalName;
}
@@ -91,6 +97,17 @@ public class ServiceDefinition implements Serializable {
this.types = types;
}
+ public List<String> getAnnotations() {
+ if (annotations == null) {
+ annotations = Collections.emptyList();
+ }
+ return annotations;
+ }
+
+ public void setAnnotations(List<String> annotations) {
+ this.annotations = annotations;
+ }
+
@Override
public String toString() {
return "ServiceDefinition [canonicalName=" + canonicalName + ", codeSource=" + codeSource + ", methods="