Class EISDescriptor

java.lang.Object
org.eclipse.persistence.core.descriptors.CoreDescriptor<AttributeGroup,DescriptorEventManager,org.eclipse.persistence.internal.helper.DatabaseField,InheritancePolicy,org.eclipse.persistence.internal.descriptors.InstantiationPolicy,Vector,org.eclipse.persistence.internal.descriptors.ObjectBuilder>
org.eclipse.persistence.descriptors.ClassDescriptor
org.eclipse.persistence.eis.EISDescriptor
All Implemented Interfaces:
Serializable, Cloneable

public class EISDescriptor extends ClassDescriptor

An EISDescriptor defines the mapping from a JCA data structure to a Java object. There are two types of EIS descriptors:

  • Root - indicates to the EclipseLink runtime that the EIS descriptor's reference class is a parent class: no other class will reference it by way of a composite object mapping or composite collection mapping. For an EIS root descriptor, EIS interactions can be defined to invoke methods on an EIS
  • Composite - indicates to the EclipseLink runtime that the EIS descriptor's reference class may be referenced by a composite object mapping or composite collection mapping
See Also:
Author:
James
  • Field Details

  • Constructor Details

    • EISDescriptor

      public EISDescriptor()
      Default constructor.
  • Method Details

    • validateMappingType

      protected void validateMappingType(DatabaseMapping mapping)
      Overrides:
      validateMappingType in class ClassDescriptor
    • setDataTypeName

      public void setDataTypeName(String dataTypeName) throws DescriptorException
      PUBLIC: Specify the data type name for the class of objects the descriptor maps. This may be the XML schema complex type name, or the JCA record name for the type being mapped.
      Throws:
      DescriptorException
    • getNamespaceResolver

      public NamespaceResolver getNamespaceResolver()
      PUBLIC: Return the XML namespace resolver. XML type EIS descriptor can use a namespace resolver to support XML schema namespaces.
    • getInheritancePolicy

      public InheritancePolicy getInheritancePolicy()
      PUBLIC: The inheritance policy is used to define how a descriptor takes part in inheritance. All inheritance properties for both child and parent classes is configured in inheritance policy. Caution must be used in using this method as it lazy initializes an inheritance policy. Calling this on a descriptor that does not use inheritance will cause problems, #hasInheritance() must always first be called.
      Overrides:
      getInheritancePolicy in class ClassDescriptor
    • setNamespaceResolver

      public void setNamespaceResolver(NamespaceResolver namespaceResolver)
      PUBLIC: Set the XML namespace resolver. XML type EIS descriptor can use a namespace resolver to support XML schema namespaces.
    • setQueryManager

      public void setQueryManager(DescriptorQueryManager queryManager)
      INTERNAL: Avoid SDK initialization.
      Overrides:
      setQueryManager in class ClassDescriptor
    • preInitialize

      public void preInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Configure the object builder for the correct dataFormat.
      Overrides:
      preInitialize in class ClassDescriptor
    • initialize

      public void initialize(DescriptorQueryManager queryManager, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Initialize the query manager specific to the descriptor type. Allow the platform to initialize the CRUD queries to defaults.
      Overrides:
      initialize in class ClassDescriptor
    • isXMLFormat

      public boolean isXMLFormat()
    • isMappedFormat

      public boolean isMappedFormat()
    • isIndexedFormat

      public boolean isIndexedFormat()
    • getDataFormat

      public String getDataFormat()
      PUBLIC: Return the data format that the descriptor maps to.
    • getDataTypeName

      public String getDataTypeName() throws DescriptorException
      PUBLIC: Specify the data type name for the class of objects the descriptor maps. This may be the XML schema complex type name, or the JCA record name for the type being mapped.
      Throws:
      DescriptorException
    • setDataFormat

      public void setDataFormat(String dataFormat)
      PUBLIC: Configure the data format that the descriptor maps to.
    • useMappedRecordFormat

      public void useMappedRecordFormat()
      PUBLIC: Configure the data format to use mapped records.
    • useIndexedRecordFormat

      public void useIndexedRecordFormat()
      PUBLIC: Configure the data format to use indexed records.
    • useXMLRecordFormat

      public void useXMLRecordFormat()
      PUBLIC: Configure the data format to use xml records.
    • buildNestedRowFromFieldValue

      public org.eclipse.persistence.internal.sessions.AbstractRecord buildNestedRowFromFieldValue(Object fieldValue)
      INTERNAL: Build the nested row.
      Overrides:
      buildNestedRowFromFieldValue in class ClassDescriptor
    • buildNestedRowsFromFieldValue

      public Vector buildNestedRowsFromFieldValue(Object fieldValue, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Build the nested rows.
      Overrides:
      buildNestedRowsFromFieldValue in class ClassDescriptor
    • buildDirectValuesFromFieldValue

      public Vector buildDirectValuesFromFieldValue(Object fieldValue)
      INTERNAL: Extract the direct values from the specified field value. Return them in a vector. The field value could be a vector or could be a text value if only a single value.
      Overrides:
      buildDirectValuesFromFieldValue in class ClassDescriptor
    • buildFieldValueFromDirectValues

      public Object buildFieldValueFromDirectValues(Vector directValues, String elementDataTypeName, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Build the appropriate field value for the specified set of direct values. The database better be expecting a Vector.
      Overrides:
      buildFieldValueFromDirectValues in class ClassDescriptor
    • buildFieldValueFromNestedRow

      public Object buildFieldValueFromNestedRow(org.eclipse.persistence.internal.sessions.AbstractRecord nestedRow, org.eclipse.persistence.internal.sessions.AbstractSession session) throws DatabaseException
      INTERNAL: Build and return the field value from the specified nested database row.
      Overrides:
      buildFieldValueFromNestedRow in class ClassDescriptor
      Throws:
      DatabaseException
    • buildFieldValueFromNestedRows

      public Object buildFieldValueFromNestedRows(Vector nestedRows, String structureName, org.eclipse.persistence.internal.sessions.AbstractSession session) throws DatabaseException
      INTERNAL: Build and return the appropriate field value for the specified set of nested rows.
      Overrides:
      buildFieldValueFromNestedRows in class ClassDescriptor
      Throws:
      DatabaseException
    • buildField

      public org.eclipse.persistence.internal.helper.DatabaseField buildField(String fieldName)
      INTERNAL: XML type descriptors should use XMLFields.
      Overrides:
      buildField in class ClassDescriptor
    • buildField

      public org.eclipse.persistence.internal.helper.DatabaseField buildField(org.eclipse.persistence.internal.helper.DatabaseField field)
      INTERNAL: If the field is an XMLField then set the namespace resolver from the descriptor. This allows the resolver to only be set in the descriptor.
      Overrides:
      buildField in class ClassDescriptor
    • newDirectMapping

      public AbstractDirectMapping newDirectMapping()
      Return a new direct/basic mapping for this type of descriptor.
      Overrides:
      newDirectMapping in class ClassDescriptor
    • newAggregateMapping

      public AggregateMapping newAggregateMapping()
      Return a new aggregate/embedded mapping for this type of descriptor.
      Overrides:
      newAggregateMapping in class ClassDescriptor
    • newAggregateCollectionMapping

      public DatabaseMapping newAggregateCollectionMapping()
      Return a new aggregate collection/element collection mapping for this type of descriptor.
      Overrides:
      newAggregateCollectionMapping in class ClassDescriptor
    • newDirectCollectionMapping

      public DatabaseMapping newDirectCollectionMapping()
      Return a new direct collection/element collection mapping for this type of descriptor.
      Overrides:
      newDirectCollectionMapping in class ClassDescriptor
    • newOneToOneMapping

      public ObjectReferenceMapping newOneToOneMapping()
      Return a new one to one mapping for this type of descriptor.
      Overrides:
      newOneToOneMapping in class ClassDescriptor
    • newManyToOneMapping

      public ObjectReferenceMapping newManyToOneMapping()
      Return a new many to one mapping for this type of descriptor.
      Overrides:
      newManyToOneMapping in class ClassDescriptor
    • newOneToManyMapping

      public CollectionMapping newOneToManyMapping()
      Return a new one to many mapping for this type of descriptor.
      Overrides:
      newOneToManyMapping in class ClassDescriptor
    • newUnidirectionalOneToManyMapping

      public CollectionMapping newUnidirectionalOneToManyMapping()
      Return a new one to many mapping for this type of descriptor.
      Overrides:
      newUnidirectionalOneToManyMapping in class ClassDescriptor
    • newManyToManyMapping

      public CollectionMapping newManyToManyMapping()
      Return a new one to many mapping for this type of descriptor.
      Overrides:
      newManyToManyMapping in class ClassDescriptor
    • addDirectMapping

      public DatabaseMapping addDirectMapping(String attributeName, String fieldName)
      PUBLIC: Add a direct mapping to the receiver. The new mapping specifies that an instance variable of the class of objects which the receiver describes maps in the default manner for its type to the indicated database field.
      Overrides:
      addDirectMapping in class ClassDescriptor
      Parameters:
      attributeName - instanceVariableName is the name of an instance variable of the class which the receiver describes.
      fieldName - fieldName is the name of the xml element or attribute which corresponds with the designated instance variable.
      Returns:
      The newly created DatabaseMapping is returned.
    • addDirectMapping

      public DatabaseMapping addDirectMapping(String attributeName, String getMethodName, String setMethodName, String fieldName)
      PUBLIC: Add a direct to node mapping to the receiver. The new mapping specifies that a variable accessed by the get and set methods of the class of objects which the receiver describes maps in the default manner for its type to the indicated database field.
      Overrides:
      addDirectMapping in class ClassDescriptor
    • addPrimaryKeyFieldName

      public void addPrimaryKeyFieldName(String fieldName)
      PUBLIC: Specify the primary key field. This should be called for each field that make up the primary key. For EIS XML Descriptors use the addPrimaryKeyField(DatabaseField) API and supply an org.eclipse.persistence.oxm.XMLField parameter instead of using this method
      Overrides:
      addPrimaryKeyFieldName in class ClassDescriptor
      See Also:
    • setSequenceNumberFieldName

      public void setSequenceNumberFieldName(String fieldName)
      PUBLIC: Set the sequence number field name. This is the field in the descriptors table that needs its value to be generated. This is normally the primary key field of the descriptor. For EIS XML Descriptors use the setSequenceNumberFieldName(DatabaseField) API and supply an org.eclipse.persistence.oxm.XMLField parameter instead of using this method
      Overrides:
      setSequenceNumberFieldName in class ClassDescriptor
    • buildCallFromStatement

      public org.eclipse.persistence.internal.databaseaccess.DatasourceCall buildCallFromStatement(org.eclipse.persistence.internal.expressions.SQLStatement statement, DatabaseQuery query, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Override this method to throw an exception. SQL should not be generated for EIS Calls.
      Overrides:
      buildCallFromStatement in class ClassDescriptor
    • initialize

      public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
      Description copied from class: ClassDescriptor
      INTERNAL: Initialize the mappings as a separate step. This is done as a separate step to ensure that inheritance has been first resolved.
      Overrides:
      initialize in class ClassDescriptor
      Throws:
      DescriptorException
    • initializeAggregateInheritancePolicy

      public void initializeAggregateInheritancePolicy(org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: This is needed by regular aggregate descriptors * but not by EIS aggregate descriptors.
      Overrides:
      initializeAggregateInheritancePolicy in class ClassDescriptor
    • requiresInitialization

      public boolean requiresInitialization(org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: XML descriptors are initialized normally, since they do not need to be cloned by ESI aggregate mappings.
      Overrides:
      requiresInitialization in class ClassDescriptor
    • extractDefaultTable

      protected org.eclipse.persistence.internal.helper.DatabaseTable extractDefaultTable()
      Aggregates use a dummy table as default.
      Overrides:
      extractDefaultTable in class ClassDescriptor
    • isReturnTypeRequiredForReturningPolicy

      public boolean isReturnTypeRequiredForReturningPolicy()
      INTERNAL: Indicates if a return type is required for the field set on the returning policy. For EIS descriptors, this should always return false.
      Overrides:
      isReturnTypeRequiredForReturningPolicy in class ClassDescriptor
    • isEISDescriptor

      public boolean isEISDescriptor()
      PUBLIC: Return if the descriptor maps to an EIS or NoSQL datasource.
      Overrides:
      isEISDescriptor in class ClassDescriptor
    • shouldUseFullChangeSetsForNewObjects

      public boolean shouldUseFullChangeSetsForNewObjects()
      INTERNAL: Return if change sets are required for new objects.
      Overrides:
      shouldUseFullChangeSetsForNewObjects in class ClassDescriptor