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