Class XMLAnyAttributeMapping

java.lang.Object
org.eclipse.persistence.core.mappings.CoreMapping<AttributeAccessor,org.eclipse.persistence.internal.sessions.AbstractSession,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
org.eclipse.persistence.mappings.DatabaseMapping
org.eclipse.persistence.oxm.mappings.XMLAnyAttributeMapping
All Implemented Interfaces:
Serializable, Cloneable, org.eclipse.persistence.internal.oxm.mappings.AnyAttributeMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>, org.eclipse.persistence.internal.oxm.mappings.Mapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>, org.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping, XMLMapping

public class XMLAnyAttributeMapping extends DatabaseMapping implements XMLMapping, org.eclipse.persistence.internal.oxm.mappings.AnyAttributeMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>

Purpose:The XMLAnyAttributeMapping is used to map to an attribute in an object to any xml attributes contained on a specific element in the XML Document. The attribute in the object will contain a map of attribute values keyed on QName. In the case that one or more of the attributes found on the specified element is already mapped to another attribute in the object, that attribute will be ignored during the unmarshal operation.

Setting the XPath: TopLink XML mappings make use of XPath statements to find the relevant data in an XML document. The XPath statement is relative to the context node specified in the descriptor. The XPath may contain node type, path, and positional information. The XPath is specified on the mapping using the setXPath method. Note that for XML Any Attribute Mappings the XPath is optional. Not setting the xpath, will cause the mapping to look for any attribute children directly owned by the current Element.

See Also:
  • Constructor Details

    • XMLAnyAttributeMapping

      public XMLAnyAttributeMapping()
  • Method Details

    • buildBackupClone

      public void buildBackupClone(Object clone, Object backup, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork)
      INTERNAL: Clone the attribute from the clone and assign it to the backup.
      Specified by:
      buildBackupClone in class DatabaseMapping
    • buildClone

      public void buildClone(Object original, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, Object clone, Integer refreshCascade, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession)
      INTERNAL: Clone the attribute from the original and assign it to the clone.
      Specified by:
      buildClone in class DatabaseMapping
    • buildCloneFromRow

      public void buildCloneFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord Record, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, Object clone, org.eclipse.persistence.internal.identitymaps.CacheKey sharedCacheKey, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork, org.eclipse.persistence.internal.sessions.AbstractSession executionSession)
      Description copied from class: DatabaseMapping
      INTERNAL: A combination of readFromRowIntoObject and buildClone.

      buildClone assumes the attribute value exists on the original and can simply be copied.

      readFromRowIntoObject assumes that one is building an original.

      Both of the above assumptions are false in this method, and actually attempts to do both at the same time.

      Extract value from the row and set the attribute to this value in the working copy clone. In order to bypass the shared cache when in transaction a UnitOfWork must be able to populate working copies directly from the row.

      Specified by:
      buildCloneFromRow in class DatabaseMapping
    • cascadePerformRemoveIfRequired

      public void cascadePerformRemoveIfRequired(Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, Map visitedObjects)
      INTERNAL: Cascade perform delete through mappings that require the cascade
      Specified by:
      cascadePerformRemoveIfRequired in class DatabaseMapping
    • cascadeRegisterNewIfRequired

      public void cascadeRegisterNewIfRequired(Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, Map visitedObjects)
      INTERNAL: Cascade registerNew for Create through mappings that require the cascade
      Specified by:
      cascadeRegisterNewIfRequired in class DatabaseMapping
    • clone

      public Object clone()
      Description copied from class: DatabaseMapping
      INTERNAL: Clones itself.
      Overrides:
      clone in class DatabaseMapping
    • compareForChange

      public org.eclipse.persistence.internal.sessions.ChangeRecord compareForChange(Object clone, Object backup, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: This method was created in VisualAge.
      Specified by:
      compareForChange in class DatabaseMapping
      Returns:
      prototype.changeset.ChangeRecord
    • compareObjects

      public boolean compareObjects(Object firstObject, Object secondObject, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Compare the attributes belonging to this mapping for the objects.
      Specified by:
      compareObjects in class DatabaseMapping
    • fixObjectReferences

      public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session)
      INTERNAL: An object has been serialized from the server to the client. Replace the transient attributes of the remote value holders with client-side objects.
      Specified by:
      fixObjectReferences in class DatabaseMapping
    • getContainerPolicy

      public org.eclipse.persistence.internal.queries.ContainerPolicy getContainerPolicy()
      INTERNAL: Return the mapping's containerPolicy.
      Specified by:
      getContainerPolicy in interface org.eclipse.persistence.internal.oxm.mappings.Mapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
      Overrides:
      getContainerPolicy in class DatabaseMapping
    • getField

      public org.eclipse.persistence.internal.helper.DatabaseField getField()
      Description copied from class: DatabaseMapping
      INTERNAL: Return the field associated with this mapping if there is exactly one. This is required for object relational mapping to print them, but because they are defined in in an Enterprise context they cannot be cast to. Mappings that have a field include direct mappings and object relational mappings.
      Specified by:
      getField in interface org.eclipse.persistence.internal.oxm.mappings.Mapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
      Overrides:
      getField in class DatabaseMapping
    • initialize

      public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
      Description copied from class: DatabaseMapping
      INTERNAL: Allow for initialization of properties and validation.
      Overrides:
      initialize in class DatabaseMapping
      Throws:
      DescriptorException
    • iterate

      public void iterate(org.eclipse.persistence.internal.descriptors.DescriptorIterator iterator)
      INTERNAL: Iterate on the appropriate attribute value.
      Specified by:
      iterate in class DatabaseMapping
    • setXPath

      public void setXPath(String xpath)
    • mergeChangesIntoObject

      public void mergeChangesIntoObject(Object target, org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, Object source, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
      INTERNAL: Merge changes from the source to the target object.
      Specified by:
      mergeChangesIntoObject in class DatabaseMapping
    • mergeIntoObject

      public void mergeIntoObject(Object target, boolean isTargetUninitialized, Object source, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
      INTERNAL: Merge changes from the source to the target object.
      Specified by:
      mergeIntoObject in class DatabaseMapping
    • setContainerPolicy

      public void setContainerPolicy(org.eclipse.persistence.internal.queries.ContainerPolicy cp)
    • setField

      public void setField(org.eclipse.persistence.internal.helper.DatabaseField field)
      Specified by:
      setField in interface org.eclipse.persistence.internal.oxm.mappings.AnyAttributeMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
    • valueFromRow

      public Object valueFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, org.eclipse.persistence.internal.sessions.AbstractSession executionSession, boolean isTargetProtected, Boolean[] wasCacheUsed) throws DatabaseException
      Description copied from class: DatabaseMapping
      INTERNAL: A subclass should implement this method if it wants different behavior. Returns the value for the mapping from the database row. The execution session is the session the query was executed on, and its platform should be used for data conversion.
      Overrides:
      valueFromRow in class DatabaseMapping
      Throws:
      DatabaseException
    • getDescriptor

      protected XMLDescriptor getDescriptor(XMLRecord xmlRecord, org.eclipse.persistence.internal.sessions.AbstractSession session) throws XMLMarshalException
      Throws:
      XMLMarshalException
    • writeFromObjectIntoRow

      public void writeFromObjectIntoRow(Object object, org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType) throws DescriptorException
      Description copied from class: DatabaseMapping
      INTERNAL: A subclass should implement this method if it wants different behavior. Write the attribute value from the object to the row.
      Overrides:
      writeFromObjectIntoRow in class DatabaseMapping
      Throws:
      DescriptorException
    • buildCompositeRow

      protected org.eclipse.persistence.internal.sessions.AbstractRecord buildCompositeRow(Object attributeValue, org.eclipse.persistence.internal.sessions.AbstractSession session, org.eclipse.persistence.internal.sessions.AbstractRecord parentRow)
    • isXMLMapping

      public boolean isXMLMapping()
      Description copied from class: DatabaseMapping
      INTERNAL: All relational mappings should implement this method to return true.
      Overrides:
      isXMLMapping in class DatabaseMapping
    • getFields

      public Vector getFields()
      Description copied from class: DatabaseMapping
      INTERNAL: Returns a vector of all the fields this mapping represents.
      Overrides:
      getFields in class DatabaseMapping
    • useMapClass

      public void useMapClass(Class concreteMapClass)
    • writeSingleValue

      public void writeSingleValue(Object attributeValue, Object parent, XMLRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)
      Description copied from interface: XMLMapping
      INTERNAL: A method that marshals a single value to the provided Record based on this mapping's XPath. Used for Sequenced marshalling.
      Specified by:
      writeSingleValue in interface org.eclipse.persistence.internal.oxm.mappings.Mapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
      Specified by:
      writeSingleValue in interface XMLMapping
      Parameters:
      attributeValue - - The value to be marshalled
      row - - The Record the value is being marshalled too.
    • useMapClassName

      public void useMapClassName(String concreteMapClassName)
      INTERNAL: Indicates the name of the Map class to be used.
      Specified by:
      useMapClassName in interface org.eclipse.persistence.internal.oxm.mappings.AnyAttributeMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
      Parameters:
      concreteMapClassName -
    • isNamespaceDeclarationIncluded

      public boolean isNamespaceDeclarationIncluded()
      Specified by:
      isNamespaceDeclarationIncluded in interface org.eclipse.persistence.internal.oxm.mappings.AnyAttributeMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
    • setNamespaceDeclarationIncluded

      public void setNamespaceDeclarationIncluded(boolean isNamespaceDeclarationIncluded)
      Specified by:
      setNamespaceDeclarationIncluded in interface org.eclipse.persistence.internal.oxm.mappings.AnyAttributeMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
    • isSchemaInstanceIncluded

      public boolean isSchemaInstanceIncluded()
      Specified by:
      isSchemaInstanceIncluded in interface org.eclipse.persistence.internal.oxm.mappings.AnyAttributeMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
    • setSchemaInstanceIncluded

      public void setSchemaInstanceIncluded(boolean isSchemaInstanceIncluded)
      Specified by:
      setSchemaInstanceIncluded in interface org.eclipse.persistence.internal.oxm.mappings.AnyAttributeMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
    • isWriteOnly

      public boolean isWriteOnly()
      Description copied from class: DatabaseMapping
      INTERNAL: Some mappings support no attribute (transformation and multitenant primary key).
      Specified by:
      isWriteOnly in interface XMLMapping
      Overrides:
      isWriteOnly in class DatabaseMapping
    • setIsWriteOnly

      public void setIsWriteOnly(boolean b)
      Specified by:
      setIsWriteOnly in interface org.eclipse.persistence.internal.oxm.mappings.AnyAttributeMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
      Specified by:
      setIsWriteOnly in interface XMLMapping
    • setAttributeValueInObject

      public void setAttributeValueInObject(Object object, Object value) throws DescriptorException
      Description copied from class: DatabaseMapping
      INTERNAL: Set the value of the attribute mapped by this mapping.
      Specified by:
      setAttributeValueInObject in interface org.eclipse.persistence.internal.oxm.mappings.Mapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
      Overrides:
      setAttributeValueInObject in class DatabaseMapping
      Throws:
      DescriptorException
    • preInitialize

      public void preInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
      Description copied from class: DatabaseMapping
      INTERNAL: Allow for initialization of properties and validation.
      Overrides:
      preInitialize in class DatabaseMapping
      Throws:
      DescriptorException
    • getReuseContainer

      public boolean getReuseContainer()
      Return true if the original container on the object should be used if present. If it is not present then the container policy will be used to create the container.
      Specified by:
      getReuseContainer in interface org.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
    • setReuseContainer

      public void setReuseContainer(boolean reuseContainer)
      Specify whether the original container on the object should be used if present. If it is not present then the container policy will be used to create the container.
      Specified by:
      setReuseContainer in interface org.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
    • isDefaultEmptyContainer

      public boolean isDefaultEmptyContainer()
      INTERNAL Return true if an empty container should be set on the object if there is no presence of the collection in the XML document.
      Specified by:
      isDefaultEmptyContainer in interface org.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
    • setDefaultEmptyContainer

      public void setDefaultEmptyContainer(boolean defaultEmptyContainer)
      INTERNAL Indicate whether by default an empty container should be set on the field/property if the collection is not present in the XML document.
      Specified by:
      setDefaultEmptyContainer in interface org.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
    • getWrapperNullPolicy

      public AbstractNullPolicy getWrapperNullPolicy()
      Description copied from interface: org.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
      Get the Wrapper NullPolicy from the Mapping.
      Specified by:
      getWrapperNullPolicy in interface org.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
    • setWrapperNullPolicy

      public void setWrapperNullPolicy(AbstractNullPolicy policy)
      Description copied from interface: org.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
      Set the Wrapper NullPolicy on the Mapping.
      Specified by:
      setWrapperNullPolicy in interface org.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping