Interface TableMetadata

All Known Implementing Classes:
StaticTableMetadata

@ThreadSafe public interface TableMetadata
Interface for an object the stores structural information about a DynamoDb table.
  • Method Details

    • indexPartitionKey

      String indexPartitionKey(String indexName)
      Returns the attribute name of the partition key for an index.
      Parameters:
      indexName - The name of the index.
      Returns:
      The attribute name representing the partition key for this index.
      Throws:
      IllegalArgumentException - if the index does not exist in the metadata or does not have a partition key associated with it..
    • indexSortKey

      Optional<String> indexSortKey(String indexName)
      Returns the attribute name of the sort key for an index.
      Parameters:
      indexName - The name of the index.
      Returns:
      Optional of the attribute name representing the sort key for this index; empty if the index does not have a sort key.
    • customMetadataObject

      <T> Optional<T> customMetadataObject(String key, Class<? extends T> objectClass)
      Returns a custom metadata object. These objects are used by extensions to the library, therefore the type of object stored is flexible and does not need to be known by the interface.
      Type Parameters:
      T - The flexible type for the object being returned. The compiler will typically infer this.
      Parameters:
      key - A unique key for the metadata object. This namespace is shared by all extensions, so it is recommended best practice to qualify it with the name of your extension.
      objectClass - The java class that the object will be cast to before returning. An exception will be thrown if the stored object cannot be cast to this class.
      Returns:
      An optional containing custom metadata object or empty if the object was not found.
    • indexKeys

      Collection<String> indexKeys(String indexName)
      Returns all the names of attributes associated with the keys of a specified index.
      Parameters:
      indexName - The name of the index.
      Returns:
      A collection of all key attribute names for that index.
    • allKeys

      Deprecated.
      Use keyAttributes() instead.
      Returns all the names of attributes associated with any index (primary or secondary) known for this table. Additionally any additional attributes that are deemed to be 'key-like' in how they should be treated will also be returned. An example of a 'key-like' attribute that is not actually a key is one tagged as a 'version' attribute when using the versioned record extension.
      Returns:
      A collection of all key attribute names for the table.
    • indices

      Returns metadata about all the known indices for this table.
      Returns:
      A collection of IndexMetadata containing information about the indices.
    • customMetadata

      Map<String,Object> customMetadata()
      Returns all custom metadata for this table. These entries are used by extensions to the library, therefore the value type of each metadata object stored in the map is not known and is provided as Object.

      This method should not be used to inspect individual custom metadata objects, instead use customMetadataObject(String, Class) ()} as that will perform a type-safety check on the retrieved object.

      Returns:
      A map of all the custom metadata for this table.
    • keyAttributes

      Returns metadata about all the known 'key' attributes for this table, such as primary and secondary index keys, or any other attribute that forms part of the structure of the table.
      Returns:
      A collection of KeyAttributeMetadata containing information about the keys.
    • scalarAttributeType

      Optional<ScalarAttributeType> scalarAttributeType(String keyAttribute)
      Returns the DynamoDb scalar attribute type associated with a key attribute if one is applicable.
      Parameters:
      keyAttribute - The key attribute name to return the scalar attribute type of.
      Returns:
      Optional ScalarAttributeType of the attribute, or empty if attribute is a non-scalar type.
      Throws:
      IllegalArgumentException - if the keyAttribute is not found.
    • primaryPartitionKey

      default String primaryPartitionKey()
      Returns the attribute name used as the primary partition key for the table.
      Returns:
      The primary partition key attribute name.
      Throws:
      IllegalArgumentException - if the primary partition key is not known.
    • primarySortKey

      default Optional<String> primarySortKey()
      Returns the attribute name used as the primary sort key for the table.
      Returns:
      An optional of the primary sort key attribute name; empty if this key is not known.
    • primaryKeys

      default Collection<String> primaryKeys()
      Returns the names of the attributes that make up the primary key for the table.
      Returns:
      A collection of attribute names that make up the primary key for the table.
    • primaryIndexName

      static String primaryIndexName()
      Returns an arbitrary constant that should be used as the primary index name. This pattern creates a common abstraction and simplifies the implementation of operations that also work on secondary indices such as scan() and query().
      Returns:
      An arbitrary constant that internally represents the primary index name.