Class DefaultEnhancedDocument
java.lang.Object
software.amazon.awssdk.enhanced.dynamodb.internal.document.DefaultEnhancedDocument
- All Implemented Interfaces:
EnhancedDocument
Default implementation of
EnhancedDocument used by the SDK to create Enhanced Documents. Attributes are initially saved
as a String-Object Map when documents are created using the builder. Conversion to an AttributeValueMap is done lazily when
values are accessed. When the document is retrieved from DynamoDB, the AttributeValueMap is internally saved as the attribute
value map. Custom objects or collections are saved in the enhancedTypeMap to preserve the generic class information. Note that
no default ConverterProviders are assigned, so ConverterProviders must be passed in the builder when creating enhanced
documents.-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface software.amazon.awssdk.enhanced.dynamodb.document.EnhancedDocument
EnhancedDocument.Builder -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic EnhancedDocument.Builderbuilder()static <T> AttributeConverter<T> converterForClass(EnhancedType<T> type, ChainConverterProvider chainConverterProvider) boolean<T> TReturns the value of the specified attribute in the current document as a specified class type; or null if the attribute either doesn't exist or the attribute value is null.<T> Tget(String attributeName, EnhancedType<T> type) Returns the value of the specified attribute in the current document as a specifiedEnhancedType; or null if the attribute either doesn't exist or the attribute value is null.getBoolean(String attributeName) Gets theBooleanvalue for the specified attribute.Gets theSdkBytesvalue of specified attribute in the document.getBytesSet(String attributeName) Gets the Set of String values of the given attribute in the current document.Gets the JSON document value of the specified attribute.<T> List<T> getList(String attributeName, EnhancedType<T> type) Gets the List of values of type T for the given attribute in the current document.getListOfUnknownType(String attributeName) Retrieves a list ofAttributeValueobjects for a specified attribute in a document.<K,V> Map <K, V> getMap(String attributeName, EnhancedType<K> keyType, EnhancedType<V> valueType) Returns a map of a specific Key-type and Value-type based on the given attribute name, key type, and value type.getMapOfUnknownType(String attributeName) Retrieves a Map with String keys and corresponding AttributeValue objects as values for a specified attribute in a document.Gets theSdkNumbervalue of specified attribute in the document.getNumberSet(String attributeName) Gets the Set of String values of the given attribute in the current document.Gets the String value of specified attribute in the document.getStringSet(String attributeName) Gets the Set of String values of the given attribute in the current document.inthashCode()booleanChecks if the document is anullvalue.booleanChecks if the attribute exists in the document.Converts an existing EnhancedDocument into a builder object that can be used to modify its values and then create a new EnhancedDocument.toJson()toMap()This method converts a document into a key-value map with the keys as String objects and the values as AttributeValue objects.
-
Constructor Details
-
DefaultEnhancedDocument
-
-
Method Details
-
builder
-
converterForClass
public static <T> AttributeConverter<T> converterForClass(EnhancedType<T> type, ChainConverterProvider chainConverterProvider) -
toBuilder
Description copied from interface:EnhancedDocumentConverts an existing EnhancedDocument into a builder object that can be used to modify its values and then create a new EnhancedDocument.- Specified by:
toBuilderin interfaceEnhancedDocument- Returns:
- A
EnhancedDocument.Builderinitialized with the values of this EnhancedDocument.
-
attributeConverterProviders
- Specified by:
attributeConverterProvidersin interfaceEnhancedDocument- Returns:
- List of AttributeConverterProvider defined for the given Document.
-
isNull
Description copied from interface:EnhancedDocumentChecks if the document is anullvalue.- Specified by:
isNullin interfaceEnhancedDocument- Parameters:
attributeName- Name of the attribute that needs to be checked.- Returns:
- true if the specified attribute exists with a null value; false otherwise.
-
isPresent
Description copied from interface:EnhancedDocumentChecks if the attribute exists in the document.- Specified by:
isPresentin interfaceEnhancedDocument- Parameters:
attributeName- Name of the attribute that needs to be checked.- Returns:
- true if the specified attribute exists with a null/non-null value; false otherwise.
-
get
Description copied from interface:EnhancedDocumentReturns the value of the specified attribute in the current document as a specifiedEnhancedType; or null if the attribute either doesn't exist or the attribute value is null.Retrieving String Type for a document
Retrieving Custom Type for which Convertor Provider was defined while creating the documentString resultCustom = document.get("key", EnhancedType.of(String.class));Retrieving list of strings in a documentCustom resultCustom = document.get("key", EnhancedType.of(Custom.class));Retrieving a Map with List of strings in its valuesList<String> resultList = document.get("key", EnhancedType.listOf(String.class));Map<String, List<String>>> resultNested = document.get("key", new EnhancedType<Map<String, List<String>>>(){});- Specified by:
getin interfaceEnhancedDocument- Type Parameters:
T- The type of the attribute value.- Parameters:
attributeName- Name of the attribute.type- EnhancedType of the value- Returns:
- Attribute value of type T }
-
getString
Description copied from interface:EnhancedDocumentGets the String value of specified attribute in the document.- Specified by:
getStringin interfaceEnhancedDocument- Parameters:
attributeName- Name of the attribute.- Returns:
- value of the specified attribute in the current document as a string; or null if the attribute either doesn't exist or the attribute value is null
-
getNumber
Description copied from interface:EnhancedDocumentGets theSdkNumbervalue of specified attribute in the document.- Specified by:
getNumberin interfaceEnhancedDocument- Parameters:
attributeName- Name of the attribute.- Returns:
- value of the specified attribute in the current document as a number; or null if the attribute either doesn't exist or the attribute value is null
-
get
Description copied from interface:EnhancedDocumentReturns the value of the specified attribute in the current document as a specified class type; or null if the attribute either doesn't exist or the attribute value is null.Retrieving String Type for a document
Retrieving Custom Type for which Convertor Provider was defined while creating the documentString resultCustom = document.get("key", String.class);Custom resultCustom = document.get("key", Custom.class);Note : This API should not be used to retrieve values of List and Map types. Instead, getList and getMap APIs should be used to retrieve attributes of type List and Map, respectively.
- Specified by:
getin interfaceEnhancedDocument- Type Parameters:
T- The type of the attribute value.- Parameters:
attributeName- Name of the attribute.clazz- Class type of value.- Returns:
- Attribute value of type T }
-
getBytes
Description copied from interface:EnhancedDocumentGets theSdkBytesvalue of specified attribute in the document.- Specified by:
getBytesin interfaceEnhancedDocument- Parameters:
attributeName- Name of the attribute.- Returns:
- the value of the specified attribute in the current document as SdkBytes; or null if the attribute either doesn't exist or the attribute value is null.
-
getStringSet
Description copied from interface:EnhancedDocumentGets the Set of String values of the given attribute in the current document.- Specified by:
getStringSetin interfaceEnhancedDocument- Parameters:
attributeName- the name of the attribute.- Returns:
- the value of the specified attribute in the current document as a set of strings; or null if the attribute either does not exist or the attribute value is null.
-
getNumberSet
Description copied from interface:EnhancedDocumentGets the Set of String values of the given attribute in the current document.- Specified by:
getNumberSetin interfaceEnhancedDocument- Parameters:
attributeName- Name of the attribute.- Returns:
- value of the specified attribute in the current document as a set of SdkNumber; or null if the attribute either doesn't exist or the attribute value is null.
-
getBytesSet
Description copied from interface:EnhancedDocumentGets the Set of String values of the given attribute in the current document.- Specified by:
getBytesSetin interfaceEnhancedDocument- Parameters:
attributeName- Name of the attribute.- Returns:
- value of the specified attribute in the current document as a set of SdkBytes; or null if the attribute doesn't exist.
-
getList
Description copied from interface:EnhancedDocumentGets the List of values of type T for the given attribute in the current document.- Specified by:
getListin interfaceEnhancedDocument- Type Parameters:
T- Type T of List elements- Parameters:
attributeName- Name of the attribute.type-EnhancedTypeof Type T.- Returns:
- value of the specified attribute in the current document as a list of type T, or null if the attribute does not exist.
-
getMap
public <K,V> Map<K,V> getMap(String attributeName, EnhancedType<K> keyType, EnhancedType<V> valueType) Description copied from interface:EnhancedDocumentReturns a map of a specific Key-type and Value-type based on the given attribute name, key type, and value type. Example usage: When getting an attribute as a map ofUUIDkeys andIntegervalues, use this API as shown below:Map<String, Integer> result = document.getMap("key", EnhancedType.of(String.class), EnhancedType.of(Integer.class));- Specified by:
getMapin interfaceEnhancedDocument- Type Parameters:
K- The type of the Map keys.V- The type of the Map values.- Parameters:
attributeName- The name of the attribute that needs to be get as Map.keyType- Enhanced Type of Key attribute, like String, UUID etc that can be represented as String Keys.valueType- Enhanced Type of Values , which have converters defineds inEnhancedDocument.Builder.attributeConverterProviders(AttributeConverterProvider...)for the document- Returns:
- Map of type K and V with the given attribute name, key type, and value type.
-
getJson
Description copied from interface:EnhancedDocumentGets the JSON document value of the specified attribute.- Specified by:
getJsonin interfaceEnhancedDocument- Parameters:
attributeName- Name of the attribute.- Returns:
- value of the specified attribute in the current document as a JSON string; or null if the attribute either doesn't exist or the attribute value is null.
-
getBoolean
Description copied from interface:EnhancedDocumentGets theBooleanvalue for the specified attribute.- Specified by:
getBooleanin interfaceEnhancedDocument- Parameters:
attributeName- Name of the attribute.- Returns:
- value of the specified attribute in the current document as a Boolean representation; or null if the attribute either doesn't exist or the attribute value is null.
-
getListOfUnknownType
Description copied from interface:EnhancedDocumentRetrieves a list ofAttributeValueobjects for a specified attribute in a document. This API should be used when the elements of the list are a combination of different types such as Strings, Maps, and Numbers. If all elements in the list are of a known fixed type, useEnhancedDocument.getList(String, EnhancedType)instead.- Specified by:
getListOfUnknownTypein interfaceEnhancedDocument- Parameters:
attributeName- Name of the attribute.- Returns:
- value of the specified attribute in the current document as a List of
AttributeValue
-
getMapOfUnknownType
Description copied from interface:EnhancedDocumentRetrieves a Map with String keys and corresponding AttributeValue objects as values for a specified attribute in a document. This API is particularly useful when the values of the map are of different types such as strings, maps, and numbers. However, if all the values in the map for a given attribute key are of a known fixed type, it is recommended to use the method EnhancedDocument#getMap(String, EnhancedType, EnhancedType) instead.- Specified by:
getMapOfUnknownTypein interfaceEnhancedDocument- Parameters:
attributeName- Name of the attribute.- Returns:
- value of the specified attribute in the current document as a
AttributeValue
-
toJson
- Specified by:
toJsonin interfaceEnhancedDocument- Returns:
- document as a JSON string. Note all binary data will become base-64 encoded in the resultant string.
-
toMap
Description copied from interface:EnhancedDocumentThis method converts a document into a key-value map with the keys as String objects and the values as AttributeValue objects. It can be particularly useful for documents with attributes of unknown types, as it allows for further processing or manipulation of the document data in a AttributeValue format.- Specified by:
toMapin interfaceEnhancedDocument- Returns:
- Document as a String AttributeValue Key-Value Map
-
equals
-
hashCode
-