public class MetaTableSchema<T> extends Object implements TableSchema<T>
TableSchema that can be instantiated as an uninitialized reference and then lazily
initialized later with a concrete TableSchema at which point it will behave as the real object.
This allows an immutable TableSchema to be declared and used in a self-referential recursive way within its
builder/definition path. Any attempt to use the MetaTableSchema as a concrete TableSchema before
calling initialize(TableSchema) will cause an exception to be thrown.
| Modifier and Type | Method and Description |
|---|---|
List<String> |
attributeNames()
Returns a complete list of attribute names that are mapped by this
TableSchema |
AttributeValue |
attributeValue(T item,
String attributeName)
Returns a single attribute value from the modelled object.
|
TableSchema<T> |
concreteTableSchema() |
AttributeConverter<T> |
converterForAttribute(Object key)
AttributeConverter that is applied to the given key. |
static <T> MetaTableSchema<T> |
create(Class<T> itemClass) |
void |
initialize(TableSchema<T> realTableSchema) |
boolean |
isAbstract()
A boolean value that represents whether this
TableSchema is abstract which means that it cannot be used
to directly create records as it is lacking required structural elements to map to a table, such as a primary
key, but can be referred to and embedded by other schemata. |
boolean |
isInitialized() |
Map<String,AttributeValue> |
itemToMap(T item,
boolean ignoreNulls)
Takes a modelled object and converts it into a raw map of
AttributeValue that the DynamoDb low-level
SDK can work with. |
Map<String,AttributeValue> |
itemToMap(T item,
Collection<String> attributes)
Takes a modelled object and extracts a specific set of attributes which are then returned as a map of
AttributeValue that the DynamoDb low-level SDK can work with. |
EnhancedType<T> |
itemType()
Returns the
EnhancedType that represents the 'Type' of the Java object this table schema object maps to
and from. |
T |
mapToItem(Map<String,AttributeValue> attributeMap)
Takes a raw DynamoDb SDK representation of a record in a table and maps it to a Java object.
|
TableMetadata |
tableMetadata()
Returns the object that describes the structure of the table being modelled by the mapper.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitbuilder, builder, builder, builder, documentSchemaBuilder, fromBean, fromClass, fromImmutableClass, mapToItempublic static <T> MetaTableSchema<T> create(Class<T> itemClass)
public T mapToItem(Map<String,AttributeValue> attributeMap)
TableSchemaIf attributes are missing from the map, that will not cause an error, however if attributes are found in the map which the mapper does not know how to map, an exception will be thrown.
If all attribute values in the attributeMap are null, null will be returned. Use TableSchema.mapToItem(Map, boolean)
instead if you need to preserve empty object.
API Implementors Note:
TableSchema.mapToItem(Map, boolean) must be implemented if preserveEmptyObject behavior is desired.
mapToItem in interface TableSchema<T>attributeMap - A map of String to AttributeValue that contains all the raw attributes to map.TableSchema.mapToItem(Map, boolean)public Map<String,AttributeValue> itemToMap(T item, boolean ignoreNulls)
TableSchemaAttributeValue that the DynamoDb low-level
SDK can work with.itemToMap in interface TableSchema<T>item - The modelled Java object to convert into a map of attributes.ignoreNulls - If set to true; any null values in the Java object will not be added to the output map.
If set to false; null values in the Java object will be added as AttributeValue of
type 'nul' to the output map.AttributeValue representing all the modelled attributes in the model object.public Map<String,AttributeValue> itemToMap(T item, Collection<String> attributes)
TableSchemaAttributeValue that the DynamoDb low-level SDK can work with. This method is typically used to extract
just the key attributes of a modelled item and will not ignore nulls on the modelled object.itemToMap in interface TableSchema<T>item - The modelled Java object to extract the map of attributes from.attributes - A collection of attribute names to extract into the output map.AttributeValue representing the requested modelled attributes in the model
object.public AttributeValue attributeValue(T item, String attributeName)
TableSchemaattributeValue in interface TableSchema<T>item - The modelled Java object to extract the attribute from.attributeName - The attribute name describing which attribute to extract.AttributeValue representing the requested modelled attribute in the model object or
null if the attribute has not been set with a value in the modelled object.public TableMetadata tableMetadata()
TableSchematableMetadata in interface TableSchema<T>TableMetadata object that contains structural information about the table being modelled.public EnhancedType<T> itemType()
TableSchemaEnhancedType that represents the 'Type' of the Java object this table schema object maps to
and from.itemType in interface TableSchema<T>EnhancedType of the modelled item this TableSchema maps to.public List<String> attributeNames()
TableSchemaTableSchemaattributeNames in interface TableSchema<T>public boolean isAbstract()
TableSchemaTableSchema is abstract which means that it cannot be used
to directly create records as it is lacking required structural elements to map to a table, such as a primary
key, but can be referred to and embedded by other schemata.isAbstract in interface TableSchema<T>public AttributeConverter<T> converterForAttribute(Object key)
TableSchemaAttributeConverter that is applied to the given key.converterForAttribute in interface TableSchema<T>key - Attribute of the modelled item.public void initialize(TableSchema<T> realTableSchema)
public TableSchema<T> concreteTableSchema()
public boolean isInitialized()
Copyright © 2023. All rights reserved.