/** * Create new instance of value converter for given class. * * @param valueClass value class * @return value converter or {@code null} */ protected AvroConverter<?, ?> createValueConverter(Class<?> valueClass) { if (valueClass == Boolean.TYPE || valueClass == Boolean.class || valueClass == Integer.TYPE || valueClass == Integer.class || valueClass == Long.TYPE || valueClass == Long.class || valueClass == Double.TYPE || valueClass == Double.class || valueClass == String.class) { return new AvroRegistry.Unconverted<>(valueClass, null); } else if (valueClass == XMLGregorianCalendar.class) { return new XMLGregorianCalendarToDateTimeConverter(datatypeFactory); } else if (valueClass.isEnum()) { Class<Enum> enumClass = (Class<Enum>) valueClass; return new EnumToStringConverter<>(enumClass, getEnumAccessor(enumClass)); } else if (!valueClass.isPrimitive()) { return new ObjectToJsonConverter<>(valueClass, objectMapper); } return null; }
return new AvroRegistry.Unconverted(ByteBuffer.class, AvroUtils._bytes());
return new AvroRegistry.Unconverted(ByteBuffer.class, AvroUtils._bytes());
/** * Internal utility method to add the primitive class to the shared converters and factory adapters to be reused by * all components. */ private static <DatumT> void registerSharedPrimitiveClass(Class<DatumT> primitiveClass, Schema schema) { mapSharedConverter.put(primitiveClass, new Unconverted<>(primitiveClass, schema)); mapSharedIndexedRecordConverter.put(primitiveClass, new LambdaSingleColumnIndexedRecordConverterSupplier<>(primitiveClass, schema)); }