This is an automated email from the ASF dual-hosted git repository.

fokko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/avro.git


The following commit(s) were added to refs/heads/master by this push:
     new da13265  AVRO-2700: Change Java Collection Usage (#780)
da13265 is described below

commit da132659c4676ede53aabb66ebd943b8232a18f3
Author: belugabehr <[email protected]>
AuthorDate: Sun Mar 29 06:38:29 2020 -0400

    AVRO-2700: Change Java Collection Usage (#780)
    
    * AVRO-2700: Change Java Collection Usage
    
    * Apply spotless
    
    Co-authored-by: David Mollitor <[email protected]>
---
 .../src/main/java/org/apache/avro/Protocol.java    |  9 +++----
 .../java/org/apache/avro/reflect/ReflectData.java  | 11 +++-----
 .../org/apache/avro/specific/SpecificData.java     | 31 +++++++++-------------
 .../avro/compiler/specific/SpecificCompiler.java   |  3 ++-
 4 files changed, 20 insertions(+), 34 deletions(-)

diff --git a/lang/java/avro/src/main/java/org/apache/avro/Protocol.java 
b/lang/java/avro/src/main/java/org/apache/avro/Protocol.java
index 19f31ef..6987d4c 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/Protocol.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/Protocol.java
@@ -247,17 +247,14 @@ public class Protocol extends JsonProperties {
   private String doc;
 
   private Schema.Names types = new Schema.Names();
-  private Map<String, Message> messages = new LinkedHashMap<>();
+  private final Map<String, Message> messages = new LinkedHashMap<>();
   private byte[] md5;
 
   /** An error that can be thrown by any message. */
   public static final Schema SYSTEM_ERROR = Schema.create(Schema.Type.STRING);
 
   /** Union type for generating system errors. */
-  public static final Schema SYSTEM_ERRORS;
-  static {
-    SYSTEM_ERRORS = 
Schema.createUnion(Collections.singletonList(SYSTEM_ERROR));
-  }
+  public static final Schema SYSTEM_ERRORS = 
Schema.createUnion(Collections.singletonList(SYSTEM_ERROR));
 
   private static final Set<String> PROTOCOL_RESERVED = Collections
       .unmodifiableSet(new HashSet<>(Arrays.asList("namespace", "protocol", 
"doc", "messages", "types", "errors")));
@@ -327,7 +324,7 @@ public class Protocol extends JsonProperties {
   /** Create a one-way message. */
   @Deprecated
   public Message createMessage(String name, String doc, Schema request) {
-    return new Message(name, doc, new LinkedHashMap<String, String>(), 
request);
+    return new Message(name, doc, Collections.emptyMap(), request);
   }
 
   /**
diff --git 
a/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectData.java 
b/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectData.java
index 33cc1d7..7226a54 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectData.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectData.java
@@ -713,12 +713,7 @@ public class ReflectData extends SpecificData {
 
   // Return of this class and its superclasses to serialize.
   private static Field[] getCachedFields(Class<?> recordClass) {
-    Field[] fieldsList = FIELDS_CACHE.get(recordClass);
-    if (fieldsList != null)
-      return fieldsList;
-    fieldsList = getFields(recordClass, true);
-    FIELDS_CACHE.put(recordClass, fieldsList);
-    return fieldsList;
+    return FIELDS_CACHE.computeIfAbsent(recordClass, rc -> getFields(rc, 
true));
   }
 
   private static Field[] getFields(Class<?> recordClass, boolean excludeJava) {
@@ -830,8 +825,8 @@ public class ReflectData extends SpecificData {
     for (Type err : method.getGenericExceptionTypes())
       errs.add(getSchema(err, names));
     Schema errors = Schema.createUnion(errs);
-    return protocol.createMessage(method.getName(), null /* doc */, new 
LinkedHashMap<String, String>() /* propMap */,
-        request, response, errors);
+    return protocol.createMessage(method.getName(), null /* doc */, 
Collections.emptyMap() /* propMap */, request,
+        response, errors);
   }
 
   private Schema getSchema(Type type, Map<String, Schema> names) {
diff --git 
a/lang/java/avro/src/main/java/org/apache/avro/specific/SpecificData.java 
b/lang/java/avro/src/main/java/org/apache/avro/specific/SpecificData.java
index 1941dd7..2b4ef41 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/specific/SpecificData.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/specific/SpecificData.java
@@ -23,11 +23,11 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Set;
 import java.util.WeakHashMap;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.LinkedHashMap;
 import java.nio.ByteBuffer;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.ParameterizedType;
@@ -97,14 +97,8 @@ public class SpecificData extends GenericData {
    * e.g., those without a no-arg constructor or those whose fields are all
    * transient.
    */
-  protected Set<Class> stringableClasses = new HashSet<>();
-  {
-    stringableClasses.add(java.math.BigDecimal.class);
-    stringableClasses.add(java.math.BigInteger.class);
-    stringableClasses.add(java.net.URI.class);
-    stringableClasses.add(java.net.URL.class);
-    stringableClasses.add(java.io.File.class);
-  }
+  protected Set<Class> stringableClasses = new 
HashSet<>(Arrays.asList(java.math.BigDecimal.class,
+      java.math.BigInteger.class, java.net.URI.class, java.net.URL.class, 
java.io.File.class));
 
   /** For subclasses. Applications normally use {@link SpecificData#get()}. */
   public SpecificData() {
@@ -247,19 +241,17 @@ public class SpecificData extends GenericData {
       String name = schema.getFullName();
       if (name == null)
         return null;
-      Class c = classCache.get(name);
-      if (c == null) {
+      Class c = classCache.computeIfAbsent(name, n -> {
         try {
-          c = ClassUtils.forName(getClassLoader(), getClassName(schema));
+          return ClassUtils.forName(getClassLoader(), getClassName(schema));
         } catch (ClassNotFoundException e) {
           try { // nested class?
-            c = ClassUtils.forName(getClassLoader(), 
getNestedClassName(schema));
+            return ClassUtils.forName(getClassLoader(), 
getNestedClassName(schema));
           } catch (ClassNotFoundException ex) {
-            c = NO_CLASS;
+            return NO_CLASS;
           }
         }
-        classCache.put(name, c);
-      }
+      });
       return c == NO_CLASS ? null : c;
     case ARRAY:
       return List.class;
@@ -305,8 +297,9 @@ public class SpecificData extends GenericData {
       return Double.class;
     case BOOLEAN:
       return Boolean.class;
+    default:
+      return getClass(schema);
     }
-    return getClass(schema);
   }
 
   /** Returns the Java class name indicated by a schema's name and namespace. 
*/
@@ -332,7 +325,7 @@ public class SpecificData extends GenericData {
   private final ClassValue<Schema> schemaClassCache = new ClassValue<Schema>() 
{
     @Override
     protected Schema computeValue(Class<?> type) {
-      return createSchema(type, new LinkedHashMap<>());
+      return createSchema(type, new HashMap<>());
     }
   };
   // for non-class objects, use a WeakHashMap, but this needs a sync block 
around
@@ -345,7 +338,7 @@ public class SpecificData extends GenericData {
       if (type instanceof Class) {
         return schemaClassCache.get((Class<?>) type);
       }
-      return schemaTypeCache.computeIfAbsent(type, t -> createSchema(t, new 
LinkedHashMap<>()));
+      return schemaTypeCache.computeIfAbsent(type, t -> createSchema(t, new 
HashMap<>()));
     } catch (Exception e) {
       throw (e instanceof AvroRuntimeException) ? (AvroRuntimeException) e : 
new AvroRuntimeException(e);
     }
diff --git 
a/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java
 
b/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java
index 6460fa8..3f3e773 100644
--- 
a/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java
+++ 
b/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java
@@ -29,6 +29,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
@@ -634,7 +635,7 @@ public class SpecificCompiler {
   private Schema addStringType(Schema s) {
     if (stringType != StringType.String)
       return s;
-    return addStringType(s, new LinkedHashMap<>());
+    return addStringType(s, new HashMap<>());
   }
 
   // annotate map and string schemas with string type

Reply via email to