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

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

commit d05960c1ecefe622e297cd41a38d68ada3016f28
Author: Dawid Wysakowicz <[email protected]>
AuthorDate: Wed Jul 29 14:21:06 2020 +0200

    [hotfix] Use List instead of ArrayList in TypeExtractor
---
 .../flink/api/java/typeutils/TypeExtractor.java    | 50 +++++++++++-----------
 .../flink/formats/avro/typeutils/AvroTypeInfo.java |  4 +-
 2 files changed, 27 insertions(+), 27 deletions(-)

diff --git 
a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java
 
b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java
index a990f76..318f10d 100644
--- 
a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java
+++ 
b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java
@@ -749,7 +749,7 @@ public class TypeExtractor {
        // ----------------------------------- private methods 
----------------------------------------
 
        private TypeInformation<?> privateCreateTypeInfo(Type t) {
-               ArrayList<Type> typeHierarchy = new ArrayList<>();
+               List<Type> typeHierarchy = new ArrayList<>();
                typeHierarchy.add(t);
                return createTypeInfoWithTypeHierarchy(typeHierarchy, t, null, 
null);
        }
@@ -758,7 +758,7 @@ public class TypeExtractor {
        @SuppressWarnings("unchecked")
        private <IN1, IN2, OUT> TypeInformation<OUT> 
privateCreateTypeInfo(Class<?> baseClass, Class<?> clazz, int returnParamPos,
                        TypeInformation<IN1> in1Type, TypeInformation<IN2> 
in2Type) {
-               ArrayList<Type> typeHierarchy = new ArrayList<>();
+               List<Type> typeHierarchy = new ArrayList<>();
                Type returnType = getParameterType(baseClass, typeHierarchy, 
clazz, returnParamPos);
 
                TypeInformation<OUT> typeInfo;
@@ -778,14 +778,14 @@ public class TypeExtractor {
 
        // for LambdaFunctions
        private <IN1, IN2, OUT> TypeInformation<OUT> privateCreateTypeInfo(Type 
returnType, TypeInformation<IN1> in1Type, TypeInformation<IN2> in2Type) {
-               ArrayList<Type> typeHierarchy = new ArrayList<>();
+               List<Type> typeHierarchy = new ArrayList<>();
 
                // get info from hierarchy
                return createTypeInfoWithTypeHierarchy(typeHierarchy, 
returnType, in1Type, in2Type);
        }
 
        @SuppressWarnings({ "unchecked", "rawtypes" })
-       private <IN1, IN2, OUT> TypeInformation<OUT> 
createTypeInfoWithTypeHierarchy(ArrayList<Type> typeHierarchy, Type t,
+       private <IN1, IN2, OUT> TypeInformation<OUT> 
createTypeInfoWithTypeHierarchy(List<Type> typeHierarchy, Type t,
                        TypeInformation<IN1> in1Type, TypeInformation<IN2> 
in2Type) {
 
                // check if type information can be created using a type factory
@@ -902,7 +902,7 @@ public class TypeExtractor {
                throw new InvalidTypesException("Type Information could not be 
created.");
        }
 
-       private <IN1, IN2> TypeInformation<?> 
createTypeInfoFromInputs(TypeVariable<?> returnTypeVar, ArrayList<Type> 
returnTypeHierarchy,
+       private <IN1, IN2> TypeInformation<?> 
createTypeInfoFromInputs(TypeVariable<?> returnTypeVar, List<Type> 
returnTypeHierarchy,
                        TypeInformation<IN1> in1TypeInfo, TypeInformation<IN2> 
in2TypeInfo) {
 
                Type matReturnTypeVar = 
materializeTypeVariable(returnTypeHierarchy, returnTypeVar);
@@ -921,7 +921,7 @@ public class TypeExtractor {
                }
 
                // create a new type hierarchy for the input
-               ArrayList<Type> inputTypeHierarchy = new ArrayList<>();
+               List<Type> inputTypeHierarchy = new ArrayList<>();
                // copy the function part of the type hierarchy
                for (Type t : returnTypeHierarchy) {
                        Class<?> clazz = typeToClass(t);
@@ -965,11 +965,11 @@ public class TypeExtractor {
         * Return the type information for "returnTypeVar" given that "inType" 
has type information "inTypeInfo".
         * Thus "inType" must contain "returnTypeVar" in a 
"inputTypeHierarchy", otherwise null is returned.
         */
-       private <IN1> TypeInformation<?> 
createTypeInfoFromInput(TypeVariable<?> returnTypeVar, ArrayList<Type> 
inputTypeHierarchy, Type inType, TypeInformation<IN1> inTypeInfo) {
+       private <IN1> TypeInformation<?> 
createTypeInfoFromInput(TypeVariable<?> returnTypeVar, List<Type> 
inputTypeHierarchy, Type inType, TypeInformation<IN1> inTypeInfo) {
                TypeInformation<?> info = null;
 
                // use a factory to find corresponding type information to type 
variable
-               final ArrayList<Type> factoryHierarchy = new 
ArrayList<>(inputTypeHierarchy);
+               final List<Type> factoryHierarchy = new 
ArrayList<>(inputTypeHierarchy);
                final TypeInfoFactory<?> factory = 
getClosestFactory(factoryHierarchy, inType);
                if (factory != null) {
                        // the type that defines the factory is last in factory 
hierarchy
@@ -1055,7 +1055,7 @@ public class TypeExtractor {
                                        return getTypeOfPojoField(inTypeInfo, 
field);
                                }
                                else if (fieldType instanceof ParameterizedType 
|| fieldType instanceof GenericArrayType) {
-                                       ArrayList<Type> 
typeHierarchyWithFieldType = new ArrayList<>(inputTypeHierarchy);
+                                       List<Type> typeHierarchyWithFieldType = 
new ArrayList<>(inputTypeHierarchy);
                                        
typeHierarchyWithFieldType.add(fieldType);
                                        TypeInformation<?> foundInfo = 
createTypeInfoFromInput(returnTypeVar, typeHierarchyWithFieldType, fieldType, 
getTypeOfPojoField(inTypeInfo, field));
                                        if (foundInfo != null) {
@@ -1081,7 +1081,7 @@ public class TypeExtractor {
         *     more subtypes (fields) that defined
         */
        private <IN1, IN2> TypeInformation<?>[] createSubTypesInfo(Type 
originalType, ParameterizedType definingType,
-                       ArrayList<Type> typeHierarchy, TypeInformation<IN1> 
in1Type, TypeInformation<IN2> in2Type, boolean lenient) {
+                       List<Type> typeHierarchy, TypeInformation<IN1> in1Type, 
TypeInformation<IN2> in2Type, boolean lenient) {
                Type[] subtypes = new 
Type[definingType.getActualTypeArguments().length];
 
                // materialize possible type variables
@@ -1099,7 +1099,7 @@ public class TypeExtractor {
 
                TypeInformation<?>[] subTypesInfo = new 
TypeInformation<?>[subtypes.length];
                for (int i = 0; i < subtypes.length; i++) {
-                       final ArrayList<Type> subTypeHierarchy = new 
ArrayList<>(typeHierarchy);
+                       final List<Type> subTypeHierarchy = new 
ArrayList<>(typeHierarchy);
                        subTypeHierarchy.add(subtypes[i]);
                        // sub type could not be determined with materializing
                        // try to derive the type info of the TypeVariable from 
the immediate base child input as a last attempt
@@ -1153,9 +1153,9 @@ public class TypeExtractor {
         */
        @SuppressWarnings("unchecked")
        private <IN1, IN2, OUT> TypeInformation<OUT> createTypeInfoFromFactory(
-                       Type t, ArrayList<Type> typeHierarchy, 
TypeInformation<IN1> in1Type, TypeInformation<IN2> in2Type) {
+                       Type t, List<Type> typeHierarchy, TypeInformation<IN1> 
in1Type, TypeInformation<IN2> in2Type) {
 
-               final ArrayList<Type> factoryHierarchy = new 
ArrayList<>(typeHierarchy);
+               final List<Type> factoryHierarchy = new 
ArrayList<>(typeHierarchy);
                final TypeInfoFactory<? super OUT> factory = 
getClosestFactory(factoryHierarchy, t);
                if (factory == null) {
                        return null;
@@ -1194,7 +1194,7 @@ public class TypeExtractor {
                return getParameterType(baseClass, null, clazz, pos);
        }
 
-       private static Type getParameterType(Class<?> baseClass, 
ArrayList<Type> typeHierarchy, Class<?> clazz, int pos) {
+       private static Type getParameterType(Class<?> baseClass, List<Type> 
typeHierarchy, Class<?> clazz, int pos) {
                if (typeHierarchy != null) {
                        typeHierarchy.add(clazz);
                }
@@ -1219,7 +1219,7 @@ public class TypeExtractor {
                                                "Support for synthetic 
interfaces, lambdas, and generic or raw types is limited at this point");
        }
 
-       private static Type getParameterTypeFromGenericType(Class<?> baseClass, 
ArrayList<Type> typeHierarchy, Type t, int pos) {
+       private static Type getParameterTypeFromGenericType(Class<?> baseClass, 
List<Type> typeHierarchy, Type t, int pos) {
                // base class
                if (t instanceof ParameterizedType && 
baseClass.equals(((ParameterizedType) t).getRawType())) {
                        if (typeHierarchy != null) {
@@ -1249,7 +1249,7 @@ public class TypeExtractor {
        // 
--------------------------------------------------------------------------------------------
 
        private static void validateInputType(Class<?> baseClass, Class<?> 
clazz, int inputParamPos, TypeInformation<?> inTypeInfo) {
-               ArrayList<Type> typeHierarchy = new ArrayList<>();
+               List<Type> typeHierarchy = new ArrayList<>();
 
                // try to get generic parameter
                Type inType;
@@ -1269,7 +1269,7 @@ public class TypeExtractor {
        }
 
        @SuppressWarnings("unchecked")
-       private static void validateInfo(ArrayList<Type> typeHierarchy, Type 
type, TypeInformation<?> typeInfo) {
+       private static void validateInfo(List<Type> typeHierarchy, Type type, 
TypeInformation<?> typeInfo) {
                if (type == null) {
                        throw new InvalidTypesException("Unknown Error. Type is 
null.");
                }
@@ -1490,7 +1490,7 @@ public class TypeExtractor {
        /**
         * @return number of items with equal type or same raw type
         */
-       private static int countTypeInHierarchy(ArrayList<Type> typeHierarchy, 
Type type) {
+       private static int countTypeInHierarchy(List<Type> typeHierarchy, Type 
type) {
                int count = 0;
                for (Type t : typeHierarchy) {
                        if (t == type || (isClassType(type) && t == 
typeToClass(type)) || (isClassType(t) && typeToClass(t) == type)) {
@@ -1507,7 +1507,7 @@ public class TypeExtractor {
         * @param t type for which a factory needs to be found
         * @return closest type information factory or null if there is no 
factory in the type hierarchy
         */
-       private static <OUT> TypeInfoFactory<? super OUT> 
getClosestFactory(ArrayList<Type> typeHierarchy, Type t) {
+       private static <OUT> TypeInfoFactory<? super OUT> 
getClosestFactory(List<Type> typeHierarchy, Type t) {
                TypeInfoFactory<OUT> factory = null;
                while (factory == null && isClassType(t) && 
!(typeToClass(t).equals(Object.class))) {
                        typeHierarchy.add(t);
@@ -1583,17 +1583,17 @@ public class TypeExtractor {
         * @return TypeInformation that describes the passed Class
         */
        public static <X> TypeInformation<X> getForClass(Class<X> clazz) {
-               final ArrayList<Type> typeHierarchy = new ArrayList<>();
+               final List<Type> typeHierarchy = new ArrayList<>();
                typeHierarchy.add(clazz);
                return new TypeExtractor().privateGetForClass(clazz, 
typeHierarchy);
        }
 
-       private <X> TypeInformation<X> privateGetForClass(Class<X> clazz, 
ArrayList<Type> typeHierarchy) {
+       private <X> TypeInformation<X> privateGetForClass(Class<X> clazz, 
List<Type> typeHierarchy) {
                return privateGetForClass(clazz, typeHierarchy, null, null, 
null);
        }
 
        @SuppressWarnings({ "unchecked", "rawtypes" })
-       private <OUT,IN1,IN2> TypeInformation<OUT> 
privateGetForClass(Class<OUT> clazz, ArrayList<Type> typeHierarchy,
+       private <OUT,IN1,IN2> TypeInformation<OUT> 
privateGetForClass(Class<OUT> clazz, List<Type> typeHierarchy,
                        ParameterizedType parameterizedType, 
TypeInformation<IN1> in1Type, TypeInformation<IN2> in2Type) {
                checkNotNull(clazz);
 
@@ -1772,7 +1772,7 @@ public class TypeExtractor {
        }
 
        @SuppressWarnings("unchecked")
-       protected <OUT, IN1, IN2> TypeInformation<OUT> analyzePojo(Class<OUT> 
clazz, ArrayList<Type> typeHierarchy,
+       protected <OUT, IN1, IN2> TypeInformation<OUT> analyzePojo(Class<OUT> 
clazz, List<Type> typeHierarchy,
                        ParameterizedType parameterizedType, 
TypeInformation<IN1> in1Type, TypeInformation<IN2> in2Type) {
 
                if (!Modifier.isPublic(clazz.getModifiers())) {
@@ -1809,7 +1809,7 @@ public class TypeExtractor {
                                return null;
                        }
                        try {
-                               ArrayList<Type> fieldTypeHierarchy = new 
ArrayList<>(typeHierarchy);
+                               List<Type> fieldTypeHierarchy = new 
ArrayList<>(typeHierarchy);
                                fieldTypeHierarchy.add(fieldType);
                                TypeInformation<?> ti = 
createTypeInfoWithTypeHierarchy(fieldTypeHierarchy, fieldType, in1Type, 
in2Type);
                                pojoFields.add(new PojoField(field, ti));
@@ -1937,7 +1937,7 @@ public class TypeExtractor {
                checkNotNull(value);
 
                // check if type information can be produced using a factory
-               final ArrayList<Type> typeHierarchy = new ArrayList<>();
+               final List<Type> typeHierarchy = new ArrayList<>();
                typeHierarchy.add(value.getClass());
                final TypeInformation<X> typeFromFactory = 
createTypeInfoFromFactory(value.getClass(), typeHierarchy, null, null);
                if (typeFromFactory != null) {
diff --git 
a/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/typeutils/AvroTypeInfo.java
 
b/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/typeutils/AvroTypeInfo.java
index a898fc7..0fcee4f 100644
--- 
a/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/typeutils/AvroTypeInfo.java
+++ 
b/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/typeutils/AvroTypeInfo.java
@@ -64,7 +64,7 @@ public class AvroTypeInfo<T extends SpecificRecordBase> 
extends PojoTypeInfo<T>
        @Internal
        private static <T extends SpecificRecordBase> List<PojoField> 
generateFieldsFromAvroSchema(Class<T> typeClass) {
                        PojoTypeExtractor pte = new PojoTypeExtractor();
-                       ArrayList<Type> typeHierarchy = new ArrayList<>();
+                       List<Type> typeHierarchy = new ArrayList<>();
                        typeHierarchy.add(typeClass);
                        TypeInformation<T> ti = pte.analyzePojo(typeClass, 
typeHierarchy, null, null, null);
 
@@ -96,7 +96,7 @@ public class AvroTypeInfo<T extends SpecificRecordBase> 
extends PojoTypeInfo<T>
                }
 
                @Override
-               public <OUT, IN1, IN2> TypeInformation<OUT> 
analyzePojo(Class<OUT> clazz, ArrayList<Type> typeHierarchy,
+               public <OUT, IN1, IN2> TypeInformation<OUT> 
analyzePojo(Class<OUT> clazz, List<Type> typeHierarchy,
                                ParameterizedType parameterizedType, 
TypeInformation<IN1> in1Type, TypeInformation<IN2> in2Type) {
                        return super.analyzePojo(clazz, typeHierarchy, 
parameterizedType, in1Type, in2Type);
                }

Reply via email to