private static void recursivelyRegisterGenericType(Type fieldType, ExecutionConfig config, Set<Class<?>> alreadySeen) { if (fieldType instanceof ParameterizedType) { // field has generics ParameterizedType parameterizedFieldType = (ParameterizedType) fieldType; for (Type t: parameterizedFieldType.getActualTypeArguments()) { if (TypeExtractionUtils.isClassType(t) ) { recursivelyRegisterType(TypeExtractionUtils.typeToClass(t), config, alreadySeen); } } recursivelyRegisterGenericType(parameterizedFieldType.getRawType(), config, alreadySeen); } else if (fieldType instanceof GenericArrayType) { GenericArrayType genericArrayType = (GenericArrayType) fieldType; recursivelyRegisterGenericType(genericArrayType.getGenericComponentType(), config, alreadySeen); } else if (fieldType instanceof Class) { Class<?> clazz = (Class<?>) fieldType; recursivelyRegisterType(clazz, config, alreadySeen); } }
public static void recursivelyRegisterType(Class<?> type, ExecutionConfig config, Set<Class<?>> alreadySeen) { // don't register or remember primitives if (type == null || type.isPrimitive() || type == Object.class) { return; } // prevent infinite recursion for recursive types if (!alreadySeen.add(type)) { return; } if (type.isArray()) { recursivelyRegisterType(type.getComponentType(), config, alreadySeen); } else { config.registerKryoType(type); // add serializers for Avro type if necessary AvroUtils.getAvroUtils().addAvroSerializersIfRequired(config, type); Field[] fields = type.getDeclaredFields(); for (Field field : fields) { if (Modifier.isStatic(field.getModifiers()) || Modifier.isTransient(field.getModifiers())) { continue; } Type fieldType = field.getGenericType(); recursivelyRegisterGenericType(fieldType, config, alreadySeen); } } }
private static void recursivelyRegisterGenericType(Type fieldType, ExecutionConfig config, Set<Class<?>> alreadySeen) { if (fieldType instanceof ParameterizedType) { // field has generics ParameterizedType parameterizedFieldType = (ParameterizedType) fieldType; for (Type t: parameterizedFieldType.getActualTypeArguments()) { if (TypeExtractionUtils.isClassType(t) ) { recursivelyRegisterType(TypeExtractionUtils.typeToClass(t), config, alreadySeen); } } recursivelyRegisterGenericType(parameterizedFieldType.getRawType(), config, alreadySeen); } else if (fieldType instanceof GenericArrayType) { GenericArrayType genericArrayType = (GenericArrayType) fieldType; recursivelyRegisterGenericType(genericArrayType.getGenericComponentType(), config, alreadySeen); } else if (fieldType instanceof Class) { Class<?> clazz = (Class<?>) fieldType; recursivelyRegisterType(clazz, config, alreadySeen); } }
private static void recursivelyRegisterGenericType(Type fieldType, ExecutionConfig config, Set<Class<?>> alreadySeen) { if (fieldType instanceof ParameterizedType) { // field has generics ParameterizedType parameterizedFieldType = (ParameterizedType) fieldType; for (Type t: parameterizedFieldType.getActualTypeArguments()) { if (TypeExtractionUtils.isClassType(t) ) { recursivelyRegisterType(TypeExtractionUtils.typeToClass(t), config, alreadySeen); } } recursivelyRegisterGenericType(parameterizedFieldType.getRawType(), config, alreadySeen); } else if (fieldType instanceof GenericArrayType) { GenericArrayType genericArrayType = (GenericArrayType) fieldType; recursivelyRegisterGenericType(genericArrayType.getGenericComponentType(), config, alreadySeen); } else if (fieldType instanceof Class) { Class<?> clazz = (Class<?>) fieldType; recursivelyRegisterType(clazz, config, alreadySeen); } }
public static void recursivelyRegisterType(Class<?> type, ExecutionConfig config, Set<Class<?>> alreadySeen) { // don't register or remember primitives if (type == null || type.isPrimitive() || type == Object.class) { return; } // prevent infinite recursion for recursive types if (!alreadySeen.add(type)) { return; } if (type.isArray()) { recursivelyRegisterType(type.getComponentType(), config, alreadySeen); } else { config.registerKryoType(type); // add serializers for Avro type if necessary AvroUtils.getAvroUtils().addAvroSerializersIfRequired(config, type); Field[] fields = type.getDeclaredFields(); for (Field field : fields) { if (Modifier.isStatic(field.getModifiers()) || Modifier.isTransient(field.getModifiers())) { continue; } Type fieldType = field.getGenericType(); recursivelyRegisterGenericType(fieldType, config, alreadySeen); } } }
public static void recursivelyRegisterType(Class<?> type, ExecutionConfig config, Set<Class<?>> alreadySeen) { // don't register or remember primitives if (type == null || type.isPrimitive() || type == Object.class) { return; } // prevent infinite recursion for recursive types if (!alreadySeen.add(type)) { return; } if (type.isArray()) { recursivelyRegisterType(type.getComponentType(), config, alreadySeen); } else { config.registerKryoType(type); // add serializers for Avro type if necessary AvroUtils.getAvroUtils().addAvroSerializersIfRequired(config, type); Field[] fields = type.getDeclaredFields(); for (Field field : fields) { if (Modifier.isStatic(field.getModifiers()) || Modifier.isTransient(field.getModifiers())) { continue; } Type fieldType = field.getGenericType(); recursivelyRegisterGenericType(fieldType, config, alreadySeen); } } }