Class MetaData

java.lang.Object
org.datanucleus.metadata.MetaData
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
AbstractClassMetaData, AbstractElementMetaData, AbstractMemberMetaData, ColumnMetaData, ConstraintMetaData, ContainerMetaData, DatastoreIdentityMetaData, DiscriminatorMetaData, EmbeddedMetaData, EventListenerMetaData, FetchGroupMemberMetaData, FetchGroupMetaData, FetchPlanMetaData, FileMetaData, ImplementsMetaData, InheritanceMetaData, JoinMetaData, MultitenancyMetaData, OrderMetaData, PackageMetaData, PersistenceFileMetaData, PersistenceUnitMetaData, PrimaryKeyMetaData, QueryMetaData, QueryResultMetaData, SequenceMetaData, SoftDeleteMetaData, StoredProcQueryMetaData, StoredProcQueryParameterMetaData, TableGeneratorMetaData, VersionMetaData

public class MetaData extends Object implements Serializable
Base class for all MetaData.

MetaData Lifecycle

The states represent the lifecycle of a MetaData object. The lifecycle goes as follows :
  1. MetaData object is created (values passed in from a parsed file, or manually generated)
  2. MetaData object is populated (maybe pass in a class that it represents, creating any additional information that wasn't in the initial data).
  3. MetaData object is initialised (any internal arrays are set up, and additions of data is blocked from this point).
  4. MetaData object is added to with runtime information like actual column names and types in use.

MetaData Extensibility

All MetaData elements are extensible with extensions. We only store the DataNucleus vendor extensions here.

See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • VENDOR_NAME

      public static final String VENDOR_NAME
      Vendor name (DataNucleus) used for extensions.
      See Also:
    • EXTENSION_CLASS_READ_ONLY

      public static final String EXTENSION_CLASS_READ_ONLY
      Class : read only.
      See Also:
    • EXTENSION_CLASS_MULTITENANT

      public static final String EXTENSION_CLASS_MULTITENANT
      Class : when using multitenancy for this class.
      See Also:
    • EXTENSION_CLASS_MULTITENANCY_COLUMN_NAME

      public static final String EXTENSION_CLASS_MULTITENANCY_COLUMN_NAME
      Class : when using multitenancy, defines the column name used for the mutitenancy discriminator.
      See Also:
    • EXTENSION_CLASS_MULTITENANCY_COLUMN_LENGTH

      public static final String EXTENSION_CLASS_MULTITENANCY_COLUMN_LENGTH
      Class : when using multitenancy, defines the length of column used for the mutitenancy discriminator.
      See Also:
    • EXTENSION_CLASS_MULTITENANCY_JDBC_TYPE

      public static final String EXTENSION_CLASS_MULTITENANCY_JDBC_TYPE
      Class : when using multitenancy, defines the jdbc-type used for the mutitenancy discriminator column.
      See Also:
    • EXTENSION_CLASS_SOFTDELETE

      public static final String EXTENSION_CLASS_SOFTDELETE
      Class : when the class will use soft deletion (deletion flag column) rather than actually deleting objects.
      See Also:
    • EXTENSION_CLASS_SOFTDELETE_COLUMN_NAME

      public static final String EXTENSION_CLASS_SOFTDELETE_COLUMN_NAME
      Class : when the class will use soft deletion, specifies the column name to use.
      See Also:
    • EXTENSION_CLASS_CREATEUSER

      public static final String EXTENSION_CLASS_CREATEUSER
      Class : when the class will have a create-user column for auditing.
      See Also:
    • EXTENSION_CLASS_CREATEUSER_COLUMN_NAME

      public static final String EXTENSION_CLASS_CREATEUSER_COLUMN_NAME
      Class : when the class will have a create-user column for auditing, specifies the column name to use.
      See Also:
    • EXTENSION_CLASS_CREATEUSER_COLUMN_LENGTH

      public static final String EXTENSION_CLASS_CREATEUSER_COLUMN_LENGTH
      Class : when the class will have a create-user column for auditing, defines the length of column to use.
      See Also:
    • EXTENSION_CLASS_UPDATEUSER

      public static final String EXTENSION_CLASS_UPDATEUSER
      Class : when the class will have a update-user column for auditing.
      See Also:
    • EXTENSION_CLASS_UPDATEUSER_COLUMN_NAME

      public static final String EXTENSION_CLASS_UPDATEUSER_COLUMN_NAME
      Class : when the class will have a update-user column for auditing, specifies the column name to use.
      See Also:
    • EXTENSION_CLASS_UPDATEUSER_COLUMN_LENGTH

      public static final String EXTENSION_CLASS_UPDATEUSER_COLUMN_LENGTH
      Class : when the class will have a update-user column for auditing, defines the length of column to use.
      See Also:
    • EXTENSION_CLASS_CREATETIMESTAMP

      public static final String EXTENSION_CLASS_CREATETIMESTAMP
      Class : when the class will have a create-timestamp column for auditing.
      See Also:
    • EXTENSION_CLASS_CREATETIMESTAMP_COLUMN_NAME

      public static final String EXTENSION_CLASS_CREATETIMESTAMP_COLUMN_NAME
      Class : when the class will have a create-timestamp column for auditing, specifies the column name to use.
      See Also:
    • EXTENSION_CLASS_UPDATETIMESTAMP

      public static final String EXTENSION_CLASS_UPDATETIMESTAMP
      Class : when the class will have a update-timestamp column for auditing.
      See Also:
    • EXTENSION_CLASS_UPDATETIMESTAMP_COLUMN_NAME

      public static final String EXTENSION_CLASS_UPDATETIMESTAMP_COLUMN_NAME
      Class : when the class will have a update-timestamp column for auditing, specifies the column name to use.
      See Also:
    • EXTENSION_CLASS_VERSION_FIELD_NAME

      public static final String EXTENSION_CLASS_VERSION_FIELD_NAME
      Class : define the name of a member that will store the version of this class.
      See Also:
    • EXTENSION_VERSION_NUMBER_INITIAL_VALUE

      public static final String EXTENSION_VERSION_NUMBER_INITIAL_VALUE
      Class : initial value to use for this class for versioning (when using version-number strategy).
      See Also:
    • EXTENSION_MEMBER_TYPE_CONVERTER_NAME

      public static final String EXTENSION_MEMBER_TYPE_CONVERTER_NAME
      Member : name of type converter to use.
      See Also:
    • EXTENSION_MEMBER_TYPE_CONVERTER_DISABLED

      public static final String EXTENSION_MEMBER_TYPE_CONVERTER_DISABLED
      See Also:
    • EXTENSION_MEMBER_COMPARATOR_NAME

      public static final String EXTENSION_MEMBER_COMPARATOR_NAME
      Member : name of comparator class when of SortedSet/SortedMap type.
      See Also:
    • EXTENSION_MEMBER_IMPLEMENTATION_CLASSES

      public static final String EXTENSION_MEMBER_IMPLEMENTATION_CLASSES
      Member : implementation class names, when the member is of a interface/reference type.
      See Also:
    • EXTENSION_MEMBER_KEY_IMPLEMENTATION_CLASSES

      public static final String EXTENSION_MEMBER_KEY_IMPLEMENTATION_CLASSES
      Member : implementation class names, when the member is of a interface/reference type.
      See Also:
    • EXTENSION_MEMBER_VALUE_IMPLEMENTATION_CLASSES

      public static final String EXTENSION_MEMBER_VALUE_IMPLEMENTATION_CLASSES
      Member : implementation class names, when the member is of a interface/reference type.
      See Also:
    • EXTENSION_MEMBER_ENUM_VALUE_GETTER

      public static final String EXTENSION_MEMBER_ENUM_VALUE_GETTER
      Member : when field is enum, name of the method to get the "value" of the enum.
      See Also:
    • EXTENSION_MEMBER_CALENDAR_ONE_COLUMN

      public static final String EXTENSION_MEMBER_CALENDAR_ONE_COLUMN
      Member : when the field is Calendar, signifies that it should be stored as a single column.
      See Also:
    • EXTENSION_MEMBER_INSERTABLE

      public static final String EXTENSION_MEMBER_INSERTABLE
      Member : whether the field is insertable (for JDO).
      See Also:
    • EXTENSION_MEMBER_UPDATEABLE

      public static final String EXTENSION_MEMBER_UPDATEABLE
      Member : whether the field is updateable (for JDO).
      See Also:
    • EXTENSION_MEMBER_CASCADE_PERSIST

      public static final String EXTENSION_MEMBER_CASCADE_PERSIST
      Member : whether the field is cascade-persist (for JDO).
      See Also:
    • EXTENSION_MEMBER_CASCADE_ATTACH

      public static final String EXTENSION_MEMBER_CASCADE_ATTACH
      Member : whether the field is cascade-attach (for JDO).
      See Also:
    • EXTENSION_MEMBER_CASCADE_DETACH

      public static final String EXTENSION_MEMBER_CASCADE_DETACH
      Member : whether the field is cascade-detach (for JDO).
      See Also:
    • EXTENSION_MEMBER_CASCADE_REFRESH

      public static final String EXTENSION_MEMBER_CASCADE_REFRESH
      Member : whether the field is cascade-refresh (for JDO).
      See Also:
    • EXTENSION_MEMBER_CACHEABLE

      public static final String EXTENSION_MEMBER_CACHEABLE
      Member : whether the field is (L2) cacheable (for JPA).
      See Also:
    • EXTENSION_MEMBER_CONTAINER_ALLOW_NULLS

      public static final String EXTENSION_MEMBER_CONTAINER_ALLOW_NULLS
      Member : whether this member (collection/map/array) should allow null elements/keys/values.
      See Also:
    • EXTENSION_MEMBER_LIST_ORDERING

      public static final String EXTENSION_MEMBER_LIST_ORDERING
      Member : the ordering clause to use for this List field.
      See Also:
    • EXTENSION_MEMBER_STRATEGY_WHEN_NOTNULL

      public static final String EXTENSION_MEMBER_STRATEGY_WHEN_NOTNULL
      Member : when this field has a value generator, only apply it when the field is not set.
      See Also:
    • EXTENSION_MEMBER_RELATION_DISCRIM_COLUMN

      public static final String EXTENSION_MEMBER_RELATION_DISCRIM_COLUMN
      Member : shared relation, column name for relation discriminator column.
      See Also:
    • EXTENSION_MEMBER_RELATION_DISCRIM_VALUE

      public static final String EXTENSION_MEMBER_RELATION_DISCRIM_VALUE
      Member : shared relation, value for this class for relation discriminator column.
      See Also:
    • EXTENSION_MEMBER_RELATION_DISCRIM_PK

      public static final String EXTENSION_MEMBER_RELATION_DISCRIM_PK
      Member : shared relation, where the relation discriminator column is part of the PK.
      See Also:
    • EXTENSION_MEMBER_CREATE_USER

      public static final String EXTENSION_MEMBER_CREATE_USER
      Member : create user extension.
      See Also:
    • EXTENSION_MEMBER_CREATE_TIMESTAMP

      public static final String EXTENSION_MEMBER_CREATE_TIMESTAMP
      Member : create timestamp extension.
      See Also:
    • EXTENSION_MEMBER_UPDATE_USER

      public static final String EXTENSION_MEMBER_UPDATE_USER
      Member : create user extension.
      See Also:
    • EXTENSION_MEMBER_UPDATE_TIMESTAMP

      public static final String EXTENSION_MEMBER_UPDATE_TIMESTAMP
      Member : create timestamp extension.
      See Also:
    • EXTENSION_CLASS_VIEW_DEFINITION

      public static final String EXTENSION_CLASS_VIEW_DEFINITION
      Class : definition of VIEW (when mapping to a view).
      See Also:
    • EXTENSION_CLASS_VIEW_IMPORTS

      public static final String EXTENSION_CLASS_VIEW_IMPORTS
      Class : definition of imports for VIEW (when mapping to a view).
      See Also:
    • EXTENSION_INDEX_COLUMN_ORDERING

      public static final String EXTENSION_INDEX_COLUMN_ORDERING
      Index : orderings of columns in an index, comma separated series of "ASC", "DESC" etc.
      See Also:
    • metaDataState

      protected MetaData.State metaDataState
      State of the MetaData.
    • parent

      protected MetaData parent
      Parent MetaData object, allowing hierarchical MetaData structure.
    • extensions

      protected Map<String,String> extensions
      Extensions for this MetaData element.
  • Constructor Details

    • MetaData

      public MetaData()
    • MetaData

      public MetaData(MetaData parent)
      Constructor. Taking the parent MetaData object (if any).
      Parameters:
      parent - The parent MetaData object.
    • MetaData

      public MetaData(MetaData parent, MetaData copy)
      Copy constructor. Taking the parent MetaData object, and an object to copy from.
      Parameters:
      parent - The parent MetaData object.
      copy - The metadata to copy from
  • Method Details

    • initialise

      public void initialise(ClassLoaderResolver clr)
    • setInitialised

      void setInitialised()
    • setPopulated

      void setPopulated()
    • setUsed

      void setUsed()
    • isPopulated

      public boolean isPopulated()
    • isInitialised

      public boolean isInitialised()
    • isUsed

      public boolean isUsed()
    • getMetaDataManager

      public MetaDataManager getMetaDataManager()
    • setParent

      public void setParent(MetaData md)
    • getParent

      public MetaData getParent()
    • addExtensions

      public MetaData addExtensions(Map<String,String> exts)
    • setExtensions

      public MetaData setExtensions(Map<String,String> exts)
    • addExtension

      public MetaData addExtension(String key, String value)
    • removeExtension

      public MetaData removeExtension(String key)
    • getNoOfExtensions

      public int getNoOfExtensions()
    • getExtensions

      public Map<String,String> getExtensions()
    • hasExtension

      public boolean hasExtension(String key)
    • getValueForExtension

      public String getValueForExtension(String key)
      Accessor for the value of a particular extension.
      Parameters:
      key - The key of the extension
      Returns:
      The value of the extension (null if not existing)
    • getValuesForExtension

      public String[] getValuesForExtension(String key)
      Accessor for the value of a particular extension, but splitting it into separate parts. This is for extension tags that have a value as comma separated.
      Parameters:
      key - The key of the extension
      Returns:
      The value(s) of the extension (null if not existing)