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: 时无两丶 <[email protected]>
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