Skip to content

Commit

Permalink
annotation cannt be serializable,so change to String (#7908)
Browse files Browse the repository at this point in the history
* annotation cannt be serializable,so change to String

* delete unuse import

* fix checkstyle

* codestyle fix

Co-authored-by: kalman03 <kalman03@qq.com>
  • Loading branch information
jingxiang and kalman03 committed Jun 24, 2021
1 parent fd4ae9b commit 99ccb57
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 18 deletions.
Expand Up @@ -16,19 +16,17 @@
*/
package org.apache.dubbo.metadata.definition;

import com.google.gson.Gson;
import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
import org.apache.dubbo.metadata.definition.model.MethodDefinition;
import org.apache.dubbo.metadata.definition.model.ServiceDefinition;
import org.apache.dubbo.metadata.definition.model.TypeDefinition;
import org.apache.dubbo.metadata.definition.util.ClassUtils;

import com.google.gson.Gson;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

Expand Down Expand Up @@ -65,7 +63,7 @@ public static <T extends ServiceDefinition> void build(T sd, final Class<?> inte
sd.setCanonicalName(interfaceClass.getCanonicalName());
sd.setCodeSource(ClassUtils.getCodeSource(interfaceClass));
Annotation[] classAnnotations = interfaceClass.getAnnotations();
sd.setAnnotations(classAnnotations == null ? Collections.emptyList() : Arrays.asList(classAnnotations));
sd.setAnnotations(annotationToStringList(classAnnotations));

TypeDefinitionBuilder builder = new TypeDefinitionBuilder();
List<Method> methods = ClassUtils.getPublicNonStaticMethods(interfaceClass);
Expand All @@ -74,7 +72,7 @@ public static <T extends ServiceDefinition> void build(T sd, final Class<?> inte
md.setName(method.getName());

Annotation[] methodAnnotations = method.getAnnotations();
md.setAnnotations(methodAnnotations == null ? Collections.emptyList() : Arrays.asList(methodAnnotations));
md.setAnnotations(annotationToStringList(methodAnnotations));

// Process parameter types.
Class<?>[] paramTypes = method.getParameterTypes();
Expand All @@ -97,6 +95,17 @@ public static <T extends ServiceDefinition> void build(T sd, final Class<?> inte
sd.setTypes(builder.getTypeDefinitions());
}

private static List<String> annotationToStringList(Annotation[] annotations) {
List<String> list = new ArrayList<>();
if (annotations == null) {
return list;
}
for (Annotation annotation : annotations) {
list.add(annotation.toString());
}
return list;
}

/**
* Describe a Java interface in Json schema.
*
Expand Down
Expand Up @@ -16,17 +16,16 @@
*/
package org.apache.dubbo.metadata.definition.model;

import static org.apache.dubbo.metadata.definition.model.TypeDefinition.formatType;
import static org.apache.dubbo.metadata.definition.model.TypeDefinition.formatTypes;

import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

import static org.apache.dubbo.metadata.definition.model.TypeDefinition.formatType;
import static org.apache.dubbo.metadata.definition.model.TypeDefinition.formatTypes;

/**
* 2015/1/27.
*/
Expand All @@ -36,8 +35,8 @@ public class MethodDefinition implements Serializable {
private String[] parameterTypes;
private String returnType;
private List<TypeDefinition> parameters;
private List<Annotation> annotations;
private List<String> annotations;

public String getName() {
return name;
}
Expand Down Expand Up @@ -73,14 +72,14 @@ public void setReturnType(String returnType) {
this.returnType = formatType(returnType);
}

public List<Annotation> getAnnotations() {
public List<String> getAnnotations() {
if (annotations == null) {
annotations = Collections.emptyList();
}
return annotations;
}

public void setAnnotations(List<Annotation> annotations) {
public void setAnnotations(List<String> annotations) {
this.annotations = annotations;
}

Expand Down
Expand Up @@ -17,7 +17,6 @@
package org.apache.dubbo.metadata.definition.model;

import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
Expand All @@ -32,7 +31,7 @@ public class ServiceDefinition implements Serializable {
private String codeSource;
private List<MethodDefinition> methods;
private List<TypeDefinition> types;
private List<Annotation> annotations;
private List<String> annotations;

public String getCanonicalName() {
return canonicalName;
Expand All @@ -56,7 +55,7 @@ public List<TypeDefinition> getTypes() {
return types;
}

public List<Annotation> getAnnotations() {
public List<String> getAnnotations() {
if (annotations == null) {
annotations = Collections.emptyList();
}
Expand All @@ -83,7 +82,7 @@ public void setTypes(List<TypeDefinition> types) {
this.types = types;
}

public void setAnnotations(List<Annotation> annotations) {
public void setAnnotations(List<String> annotations) {
this.annotations = annotations;
}

Expand Down

0 comments on commit 99ccb57

Please sign in to comment.