Class ORMetadata

    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract boolean equals​(java.lang.Object objectToCompare)
      INTERNAL: For merging and overriding to work properly, all ORMetadata must be able to compare themselves for metadata equality.
      protected MetadataAccessibleObject getAccessibleObject()
      INTERNAL: Returns the accessible object for this accessor.
      java.lang.String getAccessibleObjectName()
      INTERNAL: Returns the name of the accessible object.
      MetadataAnnotation getAnnotation()
      INTERNAL: This is a value is that is used when logging messages for overriding.
      protected java.lang.String getBoxedType​(java.lang.String type)
      INTERNAL: Quick lookup of a primitive boxed type.
      protected org.eclipse.persistence.internal.helper.DatabaseType getDatabaseTypeEnum​(java.lang.String type)
      Return the DataType enum constant for the String type name.
      XMLEntityMappings getEntityMappings()
      INTERNAL:
      protected java.lang.String getFullyQualifiedClassName​(java.lang.String className)
      INTERNAL: Return the fully qualified className using the package (if any) setting from XML.
      protected java.lang.String getIdentifier()
      INTERNAL: Sub classes that can uniquely be identified must override this method to allow the overriding and merging to uniquely identify objects.
      protected java.lang.Class getJavaClass​(MetadataClass metadataClass)
      INTERNAL: Return the Java class for the metadata class using the metadata loader.
      java.lang.String getJavaClassName​(MetadataClass metadataClass)
      INTERNAL: Return the Java class name for the metadata class.
      java.lang.ClassLoader getLoader()
      INTERNAL: This method will return the current loader from the metadata factory used to created this ORMetadata.
      java.lang.Object getLocation()
      INTERNAL:
      MetadataLogger getLogger()
      INTERNAL: Return the metadata logger.
      MetadataClass getMetadataClass​(java.lang.Class javaClass)
      INTERNAL: Return the MetadataClass for the class.
      MetadataClass getMetadataClass​(java.lang.String className)
      INTERNAL: Return the MetadataClass for the class name.
      MetadataClass getMetadataClass​(java.lang.String className, boolean isLazy)
      INTERNAL: Return the MetadataClass for the class name.
      MetadataFactory getMetadataFactory()
      INTERNAL:
      protected java.lang.String getName​(java.lang.String name, java.lang.String defaultName, java.lang.String context)
      INTERNAL: Helper method to return a field name from a candidate field name and a default field name.
      protected java.lang.Class getPrimitiveClassForName​(java.lang.String className)
      INTERNAL:
      MetadataProject getProject()
      INTERNAL: Return the MetadataProject.
      protected java.lang.String getText()
      INTERNAL: Any ORMetadata that supported mixed types, that is, text or other metadata should override this method.
      protected java.lang.String getXMLElement()
      INTERNAL: This is a value is that is used when logging messages for overriding.
      protected boolean hasIdentifier()
      INTERNAL:
      protected boolean hasText()
      INTERNAL: Any ORMetadata that supported mixed types, that is, text or other metadata should override this method.
      protected MetadataClass initXMLClassName​(java.lang.String className)
      INTERNAL: This method should only be called on those objects that were loaded from XML and that need to initialize a class name.
      void initXMLObject​(MetadataAccessibleObject accessibleObject, XMLEntityMappings entityMappings)
      INTERNAL: Any subclass that cares to do any more initialization (e.g.
      protected void initXMLObject​(ORMetadata metadata, MetadataAccessibleObject accessibleObject)
      INTERNAL:
      protected void initXMLObjects​(java.util.List metadatas, MetadataAccessibleObject accessibleObject)
      INTERNAL: It is assumed this is a list of ORMetadata
      protected java.lang.String initXMLTextObject​(java.util.List metadatas)
      INTERNAL: This is to support legacy orm instance docs.
      boolean loadedFromAnnotation()
      INTERNAL: Note: That annotations can default so the annotation may be null.
      boolean loadedFromEclipseLinkXML()
      INTERNAL:
      boolean loadedFromXML()
      INTERNAL:
      protected void merge​(ORMetadata metadata)
      INTERNAL: Subclasses that care to handle deeper merges should extend this method.
      protected java.util.List mergeORObjectLists​(java.util.List list1, java.util.List list2)
      INTERNAL: Convenience method to merge two lists of metadata objects.
      protected ORMetadata mergeORObjects​(ORMetadata obj1, ORMetadata obj2)
      INTERNAL: Convenience method to merge two objects that were loaded from XML.
      protected java.lang.Object mergeSimpleObjects​(java.lang.Object obj1, java.lang.Object obj2, ORMetadata otherMetadata, java.lang.String xmlElement)
      INTERNAL: Convenience method to merge two objects that were loaded from XML.
      protected EntityAccessor reloadEntity​(EntityAccessor entity, MetadataDescriptor descriptor)
      INTERNAL: This method should be called to reload an entity (that was either loaded from XML or an annotation) as a way of cloning it.
      protected MappedSuperclassAccessor reloadMappedSuperclass​(MappedSuperclassAccessor mappedSuperclass, MetadataDescriptor descriptor)
      INTERNAL: This method should be called to reload a mapped superclass (that was either loaded from XML or an annotation) as a way of cloning it.
      void setAccessibleObject​(MetadataAccessibleObject accessibleObject)
      INTERNAL: Set the accessible object for this accessor.
      void setEntityMappings​(XMLEntityMappings entityMappings)
      INTERNAL: Set the entity mappings (mapping file) for this OR object.
      protected void setFieldName​(org.eclipse.persistence.internal.helper.DatabaseField field, java.lang.String name)
      INTERNAL: All field names should be set through this method to ensure delimited identifiers and upper casing defaults are set.
      protected void setFieldName​(org.eclipse.persistence.internal.helper.DatabaseField field, java.lang.String defaultName, java.lang.String context)
      INTERNAL: Go through this method if you can default a name.
      void setProject​(MetadataProject project)
      INTERNAL: Set the metadata project.
      boolean shouldOverride​(ORMetadata existing)
      INTERNAL: Method to determine if this ORMetadata should override another.
      protected boolean valuesMatch​(java.lang.Object value1, java.lang.Object value2)
      INTERNAL:
      protected boolean valuesMatch​(java.util.List<java.lang.Object> list1, java.util.List<java.lang.Object> list2)
      INTERNAL: Two lists are the same if they are the same size and their ordered elements are the same.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ORMetadata

        protected ORMetadata()
        INTERNAL: Used for defaulting case.
      • ORMetadata

        public ORMetadata​(java.lang.String xmlElement)
        INTERNAL: Used for OX loading.
      • ORMetadata

        protected ORMetadata​(MetadataAccessibleObject accessibleObject,
                             MetadataProject project,
                             java.lang.Object location)
        INTERNAL: Used for defaulting. At minimum, all metadata should have this information available to them at process time (to ensure no errors during processing). Depending on the metadata processing needs you can get away with not having them set, however, any dependencies on the loader, metadata logger or the metadata project etc. will require these.
      • ORMetadata

        public ORMetadata​(ORMetadata orm)
        INTERNAL: Used for annotation loading and switching from one metadata object to a more specific one.
    • Method Detail

      • equals

        public abstract boolean equals​(java.lang.Object objectToCompare)
        INTERNAL: For merging and overriding to work properly, all ORMetadata must be able to compare themselves for metadata equality. equals plays a big role in the shouldOverride() method from this class.
        Overrides:
        equals in class java.lang.Object
      • getAccessibleObject

        protected MetadataAccessibleObject getAccessibleObject()
        INTERNAL: Returns the accessible object for this accessor.
      • getAccessibleObjectName

        public java.lang.String getAccessibleObjectName()
        INTERNAL: Returns the name of the accessible object. If it is a field, it will return the field name. For a method it will return the method name.
      • getBoxedType

        protected java.lang.String getBoxedType​(java.lang.String type)
        INTERNAL: Quick lookup of a primitive boxed type.
      • getLoader

        public java.lang.ClassLoader getLoader()
        INTERNAL: This method will return the current loader from the metadata factory used to created this ORMetadata.
      • getDatabaseTypeEnum

        protected org.eclipse.persistence.internal.helper.DatabaseType getDatabaseTypeEnum​(java.lang.String type)
        Return the DataType enum constant for the String type name. If not a type defined by the enums, then return a record type.
      • getFullyQualifiedClassName

        protected java.lang.String getFullyQualifiedClassName​(java.lang.String className)
        INTERNAL: Return the fully qualified className using the package (if any) setting from XML.
      • getJavaClass

        protected java.lang.Class getJavaClass​(MetadataClass metadataClass)
        INTERNAL: Return the Java class for the metadata class using the metadata loader. Callers to this method should only do so when the application loader (from deploy) is available. This method should not be called with the temp loader, see getJavaClassName instead which will provide a valid string class name that can be initialized at runtime instead.
      • getJavaClassName

        public java.lang.String getJavaClassName​(MetadataClass metadataClass)
        INTERNAL: Return the Java class name for the metadata class. This is the class name name metadata processing should set on descriptors and mappings to be initialized during the convertClassNamesToClasses call at runtime.
      • getLocation

        public java.lang.Object getLocation()
        INTERNAL:
      • getLogger

        public MetadataLogger getLogger()
        INTERNAL: Return the metadata logger.
      • getMetadataClass

        public MetadataClass getMetadataClass​(java.lang.Class javaClass)
        INTERNAL: Return the MetadataClass for the class.
      • getMetadataClass

        public MetadataClass getMetadataClass​(java.lang.String className)
        INTERNAL: Return the MetadataClass for the class name.
      • getMetadataClass

        public MetadataClass getMetadataClass​(java.lang.String className,
                                              boolean isLazy)
        INTERNAL: Return the MetadataClass for the class name.
      • getMetadataFactory

        public MetadataFactory getMetadataFactory()
        INTERNAL:
      • getName

        protected java.lang.String getName​(java.lang.String name,
                                           java.lang.String defaultName,
                                           java.lang.String context)
        INTERNAL: Helper method to return a field name from a candidate field name and a default field name. Requires the context from where this method is called to output the correct logging message when defaulting the field name. In some cases, both the name and defaultName could be "" or null, therefore, don't log a message and return name.
      • getPrimitiveClassForName

        protected java.lang.Class getPrimitiveClassForName​(java.lang.String className)
        INTERNAL:
      • getProject

        public MetadataProject getProject()
        INTERNAL: Return the MetadataProject.
      • getText

        protected java.lang.String getText()
        INTERNAL: Any ORMetadata that supported mixed types, that is, text or other metadata should override this method.
      • hasIdentifier

        protected boolean hasIdentifier()
        INTERNAL:
      • hasText

        protected boolean hasText()
        INTERNAL: Any ORMetadata that supported mixed types, that is, text or other metadata should override this method.
      • initXMLClassName

        protected MetadataClass initXMLClassName​(java.lang.String className)
        INTERNAL: This method should only be called on those objects that were loaded from XML and that need to initialize a class name. The assumption here is that an entity mappings object will be available.
      • initXMLObject

        public void initXMLObject​(MetadataAccessibleObject accessibleObject,
                                  XMLEntityMappings entityMappings)
        INTERNAL: Any subclass that cares to do any more initialization (e.g. initialize a class) should override this method.
      • initXMLObjects

        protected void initXMLObjects​(java.util.List metadatas,
                                      MetadataAccessibleObject accessibleObject)
        INTERNAL: It is assumed this is a list of ORMetadata
      • initXMLTextObject

        protected java.lang.String initXMLTextObject​(java.util.List metadatas)
        INTERNAL: This is to support legacy orm instance docs. In some cases, previous simple text elements may have been changed to a list of ORMetadata through spec churn. (e.g. ). Method helps support backwards compatibility. If the text object is initialized the metadata list is set to null to ease further processing (logging, warnings, overrides etc.)
      • loadedFromAnnotation

        public boolean loadedFromAnnotation()
        INTERNAL: Note: That annotations can default so the annotation may be null.
      • loadedFromEclipseLinkXML

        public boolean loadedFromEclipseLinkXML()
        INTERNAL:
      • loadedFromXML

        public boolean loadedFromXML()
        INTERNAL:
      • merge

        protected void merge​(ORMetadata metadata)
        INTERNAL: Subclasses that care to handle deeper merges should extend this method.
      • mergeORObjectLists

        protected java.util.List mergeORObjectLists​(java.util.List list1,
                                                    java.util.List list2)
        INTERNAL: Convenience method to merge two lists of metadata objects. This does not check for duplicates or any overrides at this time. Just appends all items from list2 to list1.
      • mergeORObjects

        protected ORMetadata mergeORObjects​(ORMetadata obj1,
                                            ORMetadata obj2)
        INTERNAL: Convenience method to merge two objects that were loaded from XML. The merge is complete. If value2 is specified it will override value1, otherwise, value1 does not change.
      • mergeSimpleObjects

        protected java.lang.Object mergeSimpleObjects​(java.lang.Object obj1,
                                                      java.lang.Object obj2,
                                                      ORMetadata otherMetadata,
                                                      java.lang.String xmlElement)
        INTERNAL: Convenience method to merge two objects that were loaded from XML. The merge is complete. If value2 is specified it will override value1, otherwise, value1 does not.
      • reloadEntity

        protected EntityAccessor reloadEntity​(EntityAccessor entity,
                                              MetadataDescriptor descriptor)
        INTERNAL: This method should be called to reload an entity (that was either loaded from XML or an annotation) as a way of cloning it. This is needed when we process TABLE_PER_CLASS inheritance. We must process the parent classes for every subclasses descriptor. The processing is similar to that of processing a mapped superclass, in that we process the parents with the subclasses context (that is, the descriptor we are given).
      • reloadMappedSuperclass

        protected MappedSuperclassAccessor reloadMappedSuperclass​(MappedSuperclassAccessor mappedSuperclass,
                                                                  MetadataDescriptor descriptor)
        INTERNAL: This method should be called to reload a mapped superclass (that was either loaded from XML or an annotation) as a way of cloning it. This is needed when processing TABLE_PER_CLASS inheritance and when building individual entity accessor's mapped superclass list.
      • setAccessibleObject

        public void setAccessibleObject​(MetadataAccessibleObject accessibleObject)
        INTERNAL: Set the accessible object for this accessor.
      • setEntityMappings

        public void setEntityMappings​(XMLEntityMappings entityMappings)
        INTERNAL: Set the entity mappings (mapping file) for this OR object.
      • setFieldName

        protected void setFieldName​(org.eclipse.persistence.internal.helper.DatabaseField field,
                                    java.lang.String name)
        INTERNAL: All field names should be set through this method to ensure delimited identifiers and upper casing defaults are set.
      • setFieldName

        protected void setFieldName​(org.eclipse.persistence.internal.helper.DatabaseField field,
                                    java.lang.String defaultName,
                                    java.lang.String context)
        INTERNAL: Go through this method if you can default a name. Provide the defaulting context to log to the correct context message to the user.
      • setProject

        public void setProject​(MetadataProject project)
        INTERNAL: Set the metadata project.
      • shouldOverride

        public boolean shouldOverride​(ORMetadata existing)
        INTERNAL: Method to determine if this ORMetadata should override another. Assumes all ORMetadata that call this method have correctly implemented their equals method.
      • valuesMatch

        protected boolean valuesMatch​(java.util.List<java.lang.Object> list1,
                                      java.util.List<java.lang.Object> list2)
        INTERNAL: Two lists are the same if they are the same size and their ordered elements are the same.
      • valuesMatch

        protected boolean valuesMatch​(java.lang.Object value1,
                                      java.lang.Object value2)
        INTERNAL: