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="