public class JavaFieldSchema extends GetterBasedSchemaProviderV2
SchemaProvider
for Java POJO objects.
This provider finds all public fields (recursively) in a Java object, and creates schemas and rows that bind to those fields. The field order in the schema is not guaranteed to match the field order in the class. The Java object is expected to have implemented a correct .equals() and .hashCode() methods. The equals method must be completely determined by the schema fields. i.e. if the object has hidden fields that are not reflected in the schema but are compared in equals, then results will be incorrect.
TODO: Validate equals() method is provided, and if not generate a "slow" equals method based on the schema.
Modifier and Type | Class and Description |
---|---|
static class |
JavaFieldSchema.JavaFieldTypeSupplier
FieldValueTypeSupplier that's based on public fields. |
Constructor and Description |
---|
JavaFieldSchema() |
Modifier and Type | Method and Description |
---|---|
java.util.List<FieldValueGetter> |
fieldValueGetters(TypeDescriptor<?> targetTypeDescriptor,
Schema schema)
Delegates to the
GetterBasedSchemaProvider.fieldValueGetters(Class, Schema) for backwards compatibility,
override it if you want to use the richer type signature contained in the TypeDescriptor not subject to the type erasure. |
java.util.List<FieldValueTypeInformation> |
fieldValueTypeInformations(TypeDescriptor<?> targetTypeDescriptor,
Schema schema)
Delegates to the
GetterBasedSchemaProvider.fieldValueTypeInformations(Class, Schema) for backwards
compatibility, override it if you want to use the richer type signature contained in the TypeDescriptor not subject to the type erasure. |
<T> Schema |
schemaFor(TypeDescriptor<T> typeDescriptor)
Lookup a schema for the given type.
|
SchemaUserTypeCreator |
schemaTypeCreator(TypeDescriptor<?> targetTypeDescriptor,
Schema schema)
Delegates to the
GetterBasedSchemaProvider.schemaTypeCreator(Class, Schema) for backwards compatibility,
override it if you want to use the richer type signature contained in the TypeDescriptor not subject to the type erasure. |
fieldValueGetters, fieldValueTypeInformations, schemaTypeCreator
equals, fromRowFunction, hashCode, toRowFunction
public <T> Schema schemaFor(TypeDescriptor<T> typeDescriptor)
SchemaProvider
public java.util.List<FieldValueGetter> fieldValueGetters(TypeDescriptor<?> targetTypeDescriptor, Schema schema)
GetterBasedSchemaProvider
GetterBasedSchemaProvider.fieldValueGetters(Class, Schema)
for backwards compatibility,
override it if you want to use the richer type signature contained in the TypeDescriptor
not subject to the type erasure.fieldValueGetters
in class GetterBasedSchemaProviderV2
public java.util.List<FieldValueTypeInformation> fieldValueTypeInformations(TypeDescriptor<?> targetTypeDescriptor, Schema schema)
GetterBasedSchemaProvider
GetterBasedSchemaProvider.fieldValueTypeInformations(Class, Schema)
for backwards
compatibility, override it if you want to use the richer type signature contained in the TypeDescriptor
not subject to the type erasure.fieldValueTypeInformations
in class GetterBasedSchemaProviderV2
public SchemaUserTypeCreator schemaTypeCreator(TypeDescriptor<?> targetTypeDescriptor, Schema schema)
GetterBasedSchemaProvider
GetterBasedSchemaProvider.schemaTypeCreator(Class, Schema)
for backwards compatibility,
override it if you want to use the richer type signature contained in the TypeDescriptor
not subject to the type erasure.schemaTypeCreator
in class GetterBasedSchemaProviderV2