This is an automated email from the ASF dual-hosted git repository. victory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/master by this push: new ed8bb74 Review code of TypeDefinitionBuilder (#3064) ed8bb74 is described below commit ed8bb74dfa2462bbfad3763a28140b878d7730dd Author: 时无两丶 <442367...@qq.com> AuthorDate: Fri Jan 25 11:34:38 2019 +0800 Review code of TypeDefinitionBuilder (#3064) * Review code of TypeDefinitionBuilder 1. use init method to init builds' list * use single list for all builders. Seems like the builder is thread-safe, we can keep them static and final. * clean code. --- .../metadata/definition/TypeDefinitionBuilder.java | 23 ++++++++++------------ .../definition/builder/ArrayTypeBuilder.java | 10 ++-------- .../definition/builder/CollectionTypeBuilder.java | 13 +++--------- .../definition/builder/EnumTypeBuilder.java | 7 +------ .../definition/builder/MapTypeBuilder.java | 7 +------ 5 files changed, 17 insertions(+), 43 deletions(-) diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java index 797d9f8..53e8c88 100755 --- a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java +++ b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java @@ -26,6 +26,7 @@ import org.apache.dubbo.metadata.definition.model.TypeDefinition; import java.lang.reflect.Type; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -35,20 +36,16 @@ import java.util.Map; */ public class TypeDefinitionBuilder { - private static final ThreadLocal<ArrayList<TypeBuilder>> builders; + private static final TypeBuilder ARRAY_BUILDER = new ArrayTypeBuilder(); + private static final TypeBuilder COLLECTION_BUILDER = new CollectionTypeBuilder(); + private static final TypeBuilder MAP_BUILDER = new MapTypeBuilder(); + private static final TypeBuilder ENUM_BUILDER = new EnumTypeBuilder(); - static { - builders = new ThreadLocal<ArrayList<TypeBuilder>>(); - builders.set(new ArrayList<TypeBuilder>()); - builders.get().add(new ArrayTypeBuilder()); - builders.get().add(new CollectionTypeBuilder()); - builders.get().add(new MapTypeBuilder()); - builders.get().add(new EnumTypeBuilder()); - } + private static final List<TypeBuilder> BUILDERS = Arrays.asList(ARRAY_BUILDER, COLLECTION_BUILDER, MAP_BUILDER, ENUM_BUILDER); public static TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) { TypeBuilder builder = getGenericTypeBuilder(type, clazz); - TypeDefinition td = null; + TypeDefinition td; if (builder != null) { td = builder.build(type, clazz, typeCache); } else { @@ -58,7 +55,7 @@ public class TypeDefinitionBuilder { } private static TypeBuilder getGenericTypeBuilder(Type type, Class<?> clazz) { - for (TypeBuilder builder : builders.get()) { + for (TypeBuilder builder : BUILDERS) { if (builder.accept(type, clazz)) { return builder; } @@ -66,14 +63,14 @@ public class TypeDefinitionBuilder { return null; } - private Map<Class<?>, TypeDefinition> typeCache = new HashMap<Class<?>, TypeDefinition>(); + private Map<Class<?>, TypeDefinition> typeCache = new HashMap<>(); public TypeDefinition build(Type type, Class<?> clazz) { return build(type, clazz, typeCache); } public List<TypeDefinition> getTypeDefinitions() { - return new ArrayList<TypeDefinition>(typeCache.values()); + return new ArrayList<>(typeCache.values()); } } diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/ArrayTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/ArrayTypeBuilder.java index ce53c70..9ad61ce 100755 --- a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/ArrayTypeBuilder.java +++ b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/ArrayTypeBuilder.java @@ -32,12 +32,7 @@ public class ArrayTypeBuilder implements TypeBuilder { if (clazz == null) { return false; } - - if (clazz.isArray()) { - return true; - } - - return false; + return clazz.isArray(); } @Override @@ -47,8 +42,7 @@ public class ArrayTypeBuilder implements TypeBuilder { TypeDefinitionBuilder.build(componentType, componentType, typeCache); final String canonicalName = clazz.getCanonicalName(); - TypeDefinition td = new TypeDefinition(canonicalName); - return td; + return new TypeDefinition(canonicalName); } } 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 14c3b4b..24b1c86 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,20 +28,14 @@ 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) { if (clazz == null) { return false; } - - if (Collection.class.isAssignableFrom(clazz)) { - return true; - } - - return false; + return Collection.class.isAssignableFrom(clazz); } @Override @@ -72,8 +66,7 @@ CollectionTypeBuilder implements TypeBuilder { } } - TypeDefinition td = new TypeDefinition(type.toString()); - return td; + return new TypeDefinition(type.toString()); } } diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/EnumTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/EnumTypeBuilder.java index cca8c9c..d0dea96 100755 --- a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/EnumTypeBuilder.java +++ b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/EnumTypeBuilder.java @@ -32,12 +32,7 @@ public class EnumTypeBuilder implements TypeBuilder { if (clazz == null) { return false; } - - if (clazz.isEnum()) { - return true; - } - - return false; + return clazz.isEnum(); } @Override diff --git a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/MapTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/MapTypeBuilder.java index 4c7cf93..bf2b222 100755 --- a/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/MapTypeBuilder.java +++ b/dubbo-metadata-report/dubbo-metadata-definition/src/main/java/org/apache/dubbo/metadata/definition/builder/MapTypeBuilder.java @@ -34,12 +34,7 @@ public class MapTypeBuilder implements TypeBuilder { if (clazz == null) { return false; } - - if (Map.class.isAssignableFrom(clazz)) { - return true; - } - - return false; + return Map.class.isAssignableFrom(clazz); } @Override