Class PersistenceContext


  • public class PersistenceContext
    extends java.lang.Object
    A wrapper around the JPA and JAXB artifacts used to persist an application. A PersistenceContext provides the capability of using the same persistence unit in JPA to to interact with a Database or other JPA-capable data source and in JAXB to interact with either XML or JSON. A PersistenceContext can wrap either an existing persistence unit (EntityManagerFactory), or it can be used to bootstrap a fully dynamic persistence unit.
    Author:
    douglas.clarke, tom.ware
    • Constructor Summary

      Constructors 
      Constructor Description
      PersistenceContext​(java.lang.String emfName, org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl emf, java.net.URI defaultURI)
      Instantiates a new persistence context.
      PersistenceContext​(java.lang.String emfName, org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl emf, java.net.URI defaultURI, ServiceVersion version)
      Instantiates a new persistence context.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      javax.persistence.Query buildQuery​(java.util.Map<java.lang.String,​java.lang.String> tenantId, java.lang.String name, java.util.Map<?,​?> parameters, java.util.Map<java.lang.String,​?> hints)
      Builds the query.
      void create​(java.util.Map<java.lang.String,​java.lang.String> tenantId, java.lang.Object entity)
      A part of the facade over the JPA API.
      void delete​(java.util.Map<java.lang.String,​java.lang.String> tenantId, java.lang.String type, java.lang.Object id)
      A part of the facade over the JPA API Delete the given entity in JPA and commit the changes
      boolean doesExist​(java.util.Map<java.lang.String,​java.lang.String> tenantId, java.lang.Object entity)
      Does exist.
      boolean equals​(java.lang.Object other)  
      void finalize()
      Finalize.
      java.lang.Object find​(java.lang.String entityName, java.lang.Object id)
      A part of the facade over the JPA API Find an entity with the given name and id in JPA
      java.lang.Object find​(java.util.Map<java.lang.String,​java.lang.String> tenantId, java.lang.String entityName, java.lang.Object id)
      A part of the facade over the JPA API Find an entity with the given name and id in JPA
      java.lang.Object find​(java.util.Map<java.lang.String,​java.lang.String> tenantId, java.lang.String entityName, java.lang.Object id, java.util.Map<java.lang.String,​java.lang.Object> properties)
      A part of the facade over the JPA API Find an entity with the given name and id in JPA
      java.net.URI getBaseURI()
      Gets the base uri.
      java.lang.Class<?> getClass​(java.lang.String entityName)
      Look-up the given entity name in the EntityManagerFactory and return the class is describes
      org.eclipse.persistence.internal.sessions.AbstractSession getClientSession​(javax.persistence.EntityManager em)
      Gets the client session.
      CollectionWrapperBuilder getCollectionWrapperBuilder()
      Getter for the collectionWrapperBuilder property with lazy initialization.
      ClassDescriptor getDescriptor​(java.lang.String entityName)
      Lookup the descriptor for the given entity name.
      ClassDescriptor getDescriptorForClass​(java.lang.Class clazz)
      Gets the descriptor for class.
      javax.persistence.EntityManagerFactory getEmf()
      Gets the emf.
      JAXBContext getJAXBContext()
      Gets the jAXB context.
      ClassDescriptor getJAXBDescriptorForClass​(java.lang.Class clazz)
      Gets the jAXB descriptor for class.
      java.lang.String getName()
      Gets the name.
      RestPageableQuery getPageableQuery​(java.lang.String queryName)
      Gets REST pageable query details by query name.
      DatabaseSession getServerSession()
      Gets the jpa server session.
      ServiceVersion getServiceVersion()
      Gets JPARS version.
      SessionLog getSessionLog()  
      FeatureSet getSupportedFeatureSet()
      Gets the supported feature set.
      java.lang.String getVersion()
      Gets the version as it appears in URI.
      int hashCode()  
      boolean isQueryPageable​(java.lang.String queryName)
      Finds out is given query pageable or not.
      boolean isWeavingEnabled()
      Checks if is weaving enabled.
      void marshall​(java.lang.Object object, javax.ws.rs.core.MediaType mediaType, java.io.OutputStream output, boolean sendRelationships)
      Marshall an entity to either JSON or XML.
      void marshall​(java.lang.Object object, javax.ws.rs.core.MediaType mediaType, java.io.OutputStream output, boolean sendRelationships, FieldsFilter fieldsFilter)
      Marshall an entity to either JSON or XML.
      void marshallEntity​(java.lang.Object object, javax.ws.rs.core.MediaType mediaType, java.io.OutputStream output)
      Marshall an entity to either JSON or XML Calling this method, will treat relationships as unfetched in the XML/JSON and marshall them as links rather than attempting to marshall the data in those relationships
      void marshallEntity​(java.lang.Object object, FieldsFilter filter, javax.ws.rs.core.MediaType mediaType, java.io.OutputStream output)
      Marshall an entity to either JSON or XML.
      java.lang.Object merge​(java.util.Map<java.lang.String,​java.lang.String> tenantId, java.lang.Object entity)
      A part of the facade over the JPA API Call jpa merge on the given object and commit If the passed object is a list, we will iterate through the list and merge each member
      DynamicEntity newEntity​(java.lang.String type)
      A convenience method to create a new dynamic entity of the given type
      DynamicEntity newEntity​(java.util.Map<java.lang.String,​java.lang.String> tenantId, java.lang.String type)
      A convenience method to create a new dynamic entity of the given type
      int queryExecuteUpdate​(java.util.Map<java.lang.String,​java.lang.String> tenantId, java.lang.String name, java.util.Map<?,​?> parameters, java.util.Map<java.lang.String,​?> hints)
      Query execute update.
      java.util.List queryMultipleResults​(java.util.Map<java.lang.String,​java.lang.String> tenantId, java.lang.String name, java.util.Map<?,​?> parameters, java.util.Map<java.lang.String,​?> hints)
      Query multiple results.
      java.lang.Object removeAttribute​(java.util.Map<java.lang.String,​java.lang.String> tenantId, java.lang.String entityName, java.lang.Object id, java.lang.String attribute, java.lang.String listItemId, java.lang.Object entity, java.lang.String partner)
      Removes the attribute.
      void setBaseURI​(java.net.URI baseURI)
      Sets the base uri.
      void setVersion​(java.lang.String version)
      Sets the version.
      void stop()
      Stop the current application instance
      java.lang.String toString()
      To string.
      java.lang.Object unmarshal​(java.lang.Class type, javax.ws.rs.core.MediaType acceptedMediaType, java.io.InputStream in)
      Unmarshal.
      java.lang.Object unmarshalEntity​(java.lang.String type, javax.ws.rs.core.MediaType acceptedMediaType, java.io.InputStream in)
      Unmarshal entity.
      java.lang.Object updateOrAddAttribute​(java.util.Map<java.lang.String,​java.lang.String> tenantId, java.lang.String entityName, java.lang.Object id, java.util.Map<java.lang.String,​java.lang.Object> properties, java.lang.String attribute, java.lang.Object attributeValue, java.lang.String partner)
      Update or add attribute.
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • CLASS_NAME

        public static final java.lang.String CLASS_NAME
      • SESSION_VERSION_PROPERTY

        public static final java.lang.String SESSION_VERSION_PROPERTY
        See Also:
        Constant Field Values
    • Constructor Detail

      • PersistenceContext

        public PersistenceContext​(java.lang.String emfName,
                                  org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl emf,
                                  java.net.URI defaultURI)
        Instantiates a new persistence context.
        Parameters:
        emfName - the emf name
        emf - the emf
        defaultURI - the default uri
      • PersistenceContext

        public PersistenceContext​(java.lang.String emfName,
                                  org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl emf,
                                  java.net.URI defaultURI,
                                  ServiceVersion version)
        Instantiates a new persistence context.
        Parameters:
        emfName - the emf name
        emf - the emf
        defaultURI - the default uri
        version - REST service version
    • Method Detail

      • isWeavingEnabled

        public boolean isWeavingEnabled()
        Checks if is weaving enabled.
        Returns:
        true, if is weaving enabled
      • getVersion

        public java.lang.String getVersion()
        Gets the version as it appears in URI.
        Returns:
        The version.
      • getServiceVersion

        public ServiceVersion getServiceVersion()
        Gets JPARS version.
        Returns:
        JPARS version.
      • create

        public void create​(java.util.Map<java.lang.String,​java.lang.String> tenantId,
                           java.lang.Object entity)
                    throws java.lang.Exception
        A part of the facade over the JPA API. Persist an entity in JPA and commit.
        Parameters:
        tenantId -
        entity -
        Throws:
        java.lang.Exception
      • delete

        public void delete​(java.util.Map<java.lang.String,​java.lang.String> tenantId,
                           java.lang.String type,
                           java.lang.Object id)
        A part of the facade over the JPA API Delete the given entity in JPA and commit the changes
      • doesExist

        public boolean doesExist​(java.util.Map<java.lang.String,​java.lang.String> tenantId,
                                 java.lang.Object entity)
        Does exist.
        Parameters:
        tenantId - the tenant id
        entity - the entity
        Returns:
        true, if successful
      • finalize

        public void finalize()
        Finalize.
      • find

        public java.lang.Object find​(java.lang.String entityName,
                                     java.lang.Object id)
        A part of the facade over the JPA API Find an entity with the given name and id in JPA
        Parameters:
        entityName -
        id -
        Returns:
      • find

        public java.lang.Object find​(java.util.Map<java.lang.String,​java.lang.String> tenantId,
                                     java.lang.String entityName,
                                     java.lang.Object id)
        A part of the facade over the JPA API Find an entity with the given name and id in JPA
        Parameters:
        tenantId -
        entityName -
        id -
        Returns:
      • find

        public java.lang.Object find​(java.util.Map<java.lang.String,​java.lang.String> tenantId,
                                     java.lang.String entityName,
                                     java.lang.Object id,
                                     java.util.Map<java.lang.String,​java.lang.Object> properties)
        A part of the facade over the JPA API Find an entity with the given name and id in JPA
        Parameters:
        tenantId -
        entityName -
        id -
        properties - - query hints used on the find
        Returns:
      • updateOrAddAttribute

        public java.lang.Object updateOrAddAttribute​(java.util.Map<java.lang.String,​java.lang.String> tenantId,
                                                     java.lang.String entityName,
                                                     java.lang.Object id,
                                                     java.util.Map<java.lang.String,​java.lang.Object> properties,
                                                     java.lang.String attribute,
                                                     java.lang.Object attributeValue,
                                                     java.lang.String partner)
        Update or add attribute.
        Parameters:
        tenantId - the tenant id
        entityName - the entity name
        id - the id
        properties - the properties
        attribute - the attribute
        attributeValue - the attribute value
        partner - the partner
        Returns:
        the object
      • removeAttribute

        public java.lang.Object removeAttribute​(java.util.Map<java.lang.String,​java.lang.String> tenantId,
                                                java.lang.String entityName,
                                                java.lang.Object id,
                                                java.lang.String attribute,
                                                java.lang.String listItemId,
                                                java.lang.Object entity,
                                                java.lang.String partner)
        Removes the attribute.
        Parameters:
        tenantId - the tenant id
        entityName - the entity name
        id - the id
        attribute - the attribute
        listItemId -
        entity -
        partner - the partner
        Returns:
        the object
      • getBaseURI

        public java.net.URI getBaseURI()
        Gets the base uri.
        Returns:
        the base uri
      • getClass

        public java.lang.Class<?> getClass​(java.lang.String entityName)
        Look-up the given entity name in the EntityManagerFactory and return the class is describes
        Parameters:
        entityName -
        Returns:
      • getServerSession

        public DatabaseSession getServerSession()
        Gets the jpa server session.
        Returns:
        the jpa server session
      • getClientSession

        public org.eclipse.persistence.internal.sessions.AbstractSession getClientSession​(javax.persistence.EntityManager em)
        Gets the client session.
        Parameters:
        em - the em
        Returns:
        the client session
      • getDescriptor

        public ClassDescriptor getDescriptor​(java.lang.String entityName)
        Lookup the descriptor for the given entity name. This method will look first in the EntityManagerFactory wrapped by this persistence context and return that descriptor. If one does not exist, it search the JAXBContext and return a descriptor from there.
        Parameters:
        entityName -
        Returns:
      • getDescriptorForClass

        public ClassDescriptor getDescriptorForClass​(java.lang.Class clazz)
        Gets the descriptor for class.
        Parameters:
        clazz - the clazz
        Returns:
        the descriptor for class
      • getJAXBDescriptorForClass

        public ClassDescriptor getJAXBDescriptorForClass​(java.lang.Class clazz)
        Gets the jAXB descriptor for class.
        Parameters:
        clazz - the clazz
        Returns:
        the jAXB descriptor for class
      • getEmf

        public javax.persistence.EntityManagerFactory getEmf()
        Gets the emf.
        Returns:
        the emf
      • getJAXBContext

        public JAXBContext getJAXBContext()
        Gets the jAXB context.
        Returns:
        the jAXB context
      • getName

        public java.lang.String getName()
        Gets the name.
        Returns:
        the name
      • getSessionLog

        public SessionLog getSessionLog()
      • merge

        public java.lang.Object merge​(java.util.Map<java.lang.String,​java.lang.String> tenantId,
                                      java.lang.Object entity)
        A part of the facade over the JPA API Call jpa merge on the given object and commit If the passed object is a list, we will iterate through the list and merge each member
        Parameters:
        tenantId -
        entity -
        Returns:
      • newEntity

        public DynamicEntity newEntity​(java.lang.String type)
        A convenience method to create a new dynamic entity of the given type
        Parameters:
        type -
        Returns:
      • newEntity

        public DynamicEntity newEntity​(java.util.Map<java.lang.String,​java.lang.String> tenantId,
                                       java.lang.String type)
        A convenience method to create a new dynamic entity of the given type
        Parameters:
        tenantId -
        type -
        Returns:
      • queryExecuteUpdate

        public int queryExecuteUpdate​(java.util.Map<java.lang.String,​java.lang.String> tenantId,
                                      java.lang.String name,
                                      java.util.Map<?,​?> parameters,
                                      java.util.Map<java.lang.String,​?> hints)
        Query execute update.
        Parameters:
        tenantId - the tenant id
        name - the name
        parameters - the parameters
        hints - the hints
        Returns:
        the int
      • queryMultipleResults

        public java.util.List queryMultipleResults​(java.util.Map<java.lang.String,​java.lang.String> tenantId,
                                                   java.lang.String name,
                                                   java.util.Map<?,​?> parameters,
                                                   java.util.Map<java.lang.String,​?> hints)
        Query multiple results.
        Parameters:
        tenantId - the tenant id
        name - the name
        parameters - the parameters
        hints - the hints
        Returns:
        the list
      • buildQuery

        public javax.persistence.Query buildQuery​(java.util.Map<java.lang.String,​java.lang.String> tenantId,
                                                  java.lang.String name,
                                                  java.util.Map<?,​?> parameters,
                                                  java.util.Map<java.lang.String,​?> hints)
        Builds the query.
        Parameters:
        tenantId - the tenant id
        name - the name
        parameters - the parameters
        hints - the hints
        Returns:
        the query
      • stop

        public void stop()
        Stop the current application instance
      • toString

        public java.lang.String toString()
        To string.
        Overrides:
        toString in class java.lang.Object
        Returns:
        the string
      • unmarshalEntity

        public java.lang.Object unmarshalEntity​(java.lang.String type,
                                                javax.ws.rs.core.MediaType acceptedMediaType,
                                                java.io.InputStream in)
                                         throws javax.xml.bind.JAXBException
        Unmarshal entity.
        Parameters:
        type - the type of the entity to unmarshal
        acceptedMediaType - the accepted media type
        in - the input stream to unmarshal
        Returns:
        the object
        Throws:
        javax.xml.bind.JAXBException - the JAXB exception
      • unmarshal

        public java.lang.Object unmarshal​(java.lang.Class type,
                                          javax.ws.rs.core.MediaType acceptedMediaType,
                                          java.io.InputStream in)
                                   throws javax.xml.bind.JAXBException
        Unmarshal.
        Parameters:
        type - the type of the entity to unmarshal
        acceptedMediaType - the accepted media type
        in - the input stream to unmarshal
        Returns:
        the object
        Throws:
        javax.xml.bind.JAXBException - the JAXB exception
      • marshallEntity

        public void marshallEntity​(java.lang.Object object,
                                   javax.ws.rs.core.MediaType mediaType,
                                   java.io.OutputStream output)
                            throws javax.xml.bind.JAXBException
        Marshall an entity to either JSON or XML Calling this method, will treat relationships as unfetched in the XML/JSON and marshall them as links rather than attempting to marshall the data in those relationships
        Parameters:
        object -
        mediaType -
        output -
        Throws:
        javax.xml.bind.JAXBException
      • marshallEntity

        public void marshallEntity​(java.lang.Object object,
                                   FieldsFilter filter,
                                   javax.ws.rs.core.MediaType mediaType,
                                   java.io.OutputStream output)
                            throws javax.xml.bind.JAXBException
        Marshall an entity to either JSON or XML.
        Parameters:
        object - the object to marshal.
        filter - the filter (included/excluded fields) to use.
        mediaType - the media type (XML/JSON).
        output - the result.
        Throws:
        javax.xml.bind.JAXBException
      • marshall

        public void marshall​(java.lang.Object object,
                             javax.ws.rs.core.MediaType mediaType,
                             java.io.OutputStream output,
                             boolean sendRelationships)
                      throws javax.xml.bind.JAXBException
        Marshall an entity to either JSON or XML.
        Parameters:
        object -
        mediaType -
        output -
        sendRelationships - if this is set to true, relationships will be sent as links instead of sending. the actual objects in the relationships
        Throws:
        javax.xml.bind.JAXBException
      • marshall

        public void marshall​(java.lang.Object object,
                             javax.ws.rs.core.MediaType mediaType,
                             java.io.OutputStream output,
                             boolean sendRelationships,
                             FieldsFilter fieldsFilter)
                      throws javax.xml.bind.JAXBException
        Marshall an entity to either JSON or XML.
        Parameters:
        object - the object to marshal.
        mediaType - the media type (XML/JSON).
        output - the result.
        sendRelationships - if this is set to true, relationships will be sent as links instead of sending the actual objects in the relationships.
        fieldsFilter - Specifies fields to include/exclude from the response.
        Throws:
        javax.xml.bind.JAXBException
      • getSupportedFeatureSet

        public FeatureSet getSupportedFeatureSet()
        Gets the supported feature set.
        Returns:
        the supported feature set.
      • isQueryPageable

        public boolean isQueryPageable​(java.lang.String queryName)
        Finds out is given query pageable or not.
        Parameters:
        queryName - named query to check.
        Returns:
        true if pageable, false if not.
      • getPageableQuery

        public RestPageableQuery getPageableQuery​(java.lang.String queryName)
        Gets REST pageable query details by query name.
        Parameters:
        queryName - named query name.
        Returns:
        RestPageableQuery or null if query couldn't be found.
      • setVersion

        public void setVersion​(java.lang.String version)
        Sets the version.
        Parameters:
        version - the new version.
      • setBaseURI

        public void setBaseURI​(java.net.URI baseURI)
        Sets the base uri.
        Parameters:
        baseURI - the new base uri
      • getCollectionWrapperBuilder

        public CollectionWrapperBuilder getCollectionWrapperBuilder()
        Getter for the collectionWrapperBuilder property with lazy initialization.
        Returns:
        the collectionWrapperBuilder.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object