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

Reply via email to