Class XMLMetadataSource

  • All Implemented Interfaces:
    MetadataSource

    public class XMLMetadataSource
    extends MetadataSourceAdapter

    Purpose: Support reading metadata for a persistence unit in an XML format from a URL and if the property is undefined, it will look for a file.

    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Object getConfigPropertyLogDebug​(java.lang.String propertyName, java.util.Map properties, SessionLog log)
      Check the provided map for an object with the given name.
      org.eclipse.persistence.internal.jpa.metadata.xml.XMLEntityMappings getEntityMappings​(java.util.Map<java.lang.String,​java.lang.Object> properties, java.lang.ClassLoader classLoader, SessionLog log)
      This method is responsible for returning the object representation of the MetadataSource.
      java.io.Reader getEntityMappingsReader​(java.util.Map<java.lang.String,​java.lang.Object> properties, java.lang.ClassLoader classLoader, SessionLog log)
      This method returns a Reader for an EclipseLink-ORM.xml.
      protected static java.net.URL getFileURL​(java.lang.String fileName, java.lang.ClassLoader classLoader, SessionLog log)  
      java.util.Map<java.lang.String,​java.lang.Object> getPropertyOverrides​(java.util.Map<java.lang.String,​java.lang.Object> properties, java.lang.ClassLoader classLoader, SessionLog log)
      PUBLIC: This method is responsible for returning additional persistence unit property overrides.
      java.lang.String getRepositoryName()
      Used by getEntityMappings when creating the XMLEntityMappings as a way of describing where it was read from.
      • Methods inherited from class java.lang.Object

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

      • XMLMetadataSource

        public XMLMetadataSource()
    • Method Detail

      • getEntityMappingsReader

        public java.io.Reader getEntityMappingsReader​(java.util.Map<java.lang.String,​java.lang.Object> properties,
                                                      java.lang.ClassLoader classLoader,
                                                      SessionLog log)
        This method returns a Reader for an EclipseLink-ORM.xml. It will use the PersistenceUnitProperties.METADATA_SOURCE_XML_URL property if available to create an InputStreamReader from a URL, and if not available, use the PersistenceUnitProperties.METADATA_SOURCE_XML_FILE property will be used to get a file resource from the classloader. It will throw a ValidationException if no reader can be returned.
        Parameters:
        properties -
        classLoader -
        log - - SessionLog used for status messages.
        Returns:
        Reader - a InputStreamReader with data in the form of an EclipseLink-orm.xml
        See Also:
        getEntityMappings(java.util.Map<java.lang.String, java.lang.Object>, java.lang.ClassLoader, org.eclipse.persistence.logging.SessionLog)
      • getEntityMappings

        public org.eclipse.persistence.internal.jpa.metadata.xml.XMLEntityMappings getEntityMappings​(java.util.Map<java.lang.String,​java.lang.Object> properties,
                                                                                                     java.lang.ClassLoader classLoader,
                                                                                                     SessionLog log)
        This method is responsible for returning the object representation of the MetadataSource. This implementation makes a call to getEntityMappingsReader to get a Reader which is passed to an XMLUnmarshaller, and closes the reader in a finally block.
        Specified by:
        getEntityMappings in interface MetadataSource
        Overrides:
        getEntityMappings in class MetadataSourceAdapter
        Returns:
        XMLEntityMappings - object representation of the EclipseLink-orm.xml for this repository
      • getRepositoryName

        public java.lang.String getRepositoryName()
        Used by getEntityMappings when creating the XMLEntityMappings as a way of describing where it was read from. Currently returns the current class's simple name.
        Returns:
        String - repository name to store in the XMLEntityMappings returned from getEntityMappings
      • getPropertyOverrides

        public java.util.Map<java.lang.String,​java.lang.Object> getPropertyOverrides​(java.util.Map<java.lang.String,​java.lang.Object> properties,
                                                                                           java.lang.ClassLoader classLoader,
                                                                                           SessionLog log)
        PUBLIC: This method is responsible for returning additional persistence unit property overrides. It is called on initial deployment of the persistence unit and when the persistence unit is reloaded to allow customization of the persistence unit above and beyond what is packaged in the persistence.xml and what is code into the application.

        IMPORTANT: Although any property can be changed using this approach it is important that users of this feature ensure compatible configurations are supplied. As an example; overriding an application to use RESOURCE_LOCAL when it was coded to use JTA would result in changes not be written to the database. PersistenceUnitProperties.METADATA_SOURCE_PROPERTIES_FILE property will be used to get a file resource from the classloader. Properties are read from the file. If the property either not specified or contains an empty string then returns null.

        Since:
        EclipseLink 2.4
      • getFileURL

        protected static java.net.URL getFileURL​(java.lang.String fileName,
                                                 java.lang.ClassLoader classLoader,
                                                 SessionLog log)
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • getConfigPropertyLogDebug

        public java.lang.Object getConfigPropertyLogDebug​(java.lang.String propertyName,
                                                          java.util.Map properties,
                                                          SessionLog log)
        Check the provided map for an object with the given name. If that object is not available, check the System properties. Log the value returned if logging is enabled
        Parameters:
        propertyName -
        properties -
        log -
        Returns: