Package org.apache.cayenne.map

# Class EntityResolver

java.lang.Object
org.apache.cayenne.map.EntityResolver

All Implemented Interfaces:
  `Serializable`, `MappingNamespace`

public class EntityResolver extends Object implements MappingNamespace, Serializable
Represents a virtual shared namespace for zero or more DataMaps. Unlike DataMap, EntityResolver is intended to work as a runtime container of mapping. DataMaps can be added or removed dynamically at runtime.

EntityResolver is thread-safe.

Since:
  1.1
See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected LifecycleCallbackRegistry`
  `callbackRegistry`
  `protected ClassDescriptorMap`
  `classDescriptorMap`
  `protected EntityResolver`
  `clientEntityResolver`
  `protected EntitySorter`
  `entitySorter`
  `protected static AtomicLong`
  `incrementer`
  `protected static final Map<LifecycleEvent,Class<? extends Annotation>>`
  `LIFECYCLE_EVENT_MAP`
  `protected static final org.slf4j.Logger`
  `logger`
  `protected MappingNamespace`
  `mappingCache`
  `protected Collection<DataMap>`
  `maps`
  `protected ValueComparisonStrategyFactory`
  `valueComparisonStrategyFactory`
  `protected ValueObjectTypeRegistry`
  `valueObjectTypeRegistry`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `EntityResolver()`
  Creates new empty EntityResolver.
  `EntityResolver(Collection<DataMap> dataMaps)`
  Creates new EntityResolver that indexes a collection of DataMaps.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addDataMap(DataMap map)`
  `void`
  `applyDBLayerDefaults()`
  Updates missing mapping artifacts that can be guessed from other mapping information.
  `LifecycleCallbackRegistry`
  `getCallbackRegistry()`
  Returns a `LifecycleCallbackRegistry` for handling callbacks.
  `ClassDescriptor`
  `getClassDescriptor(String entityName)`
  Returns ClassDescriptor for the ObjEntity matching the name.
  `ClassDescriptorMap`
  `getClassDescriptorMap()`
  Returns an object that compiles and stores `ClassDescriptor` instances for all entities.
  `EntityResolver`
  `getClientEntityResolver()`
  Returns ClientEntityResolver with mapping information that only includes entities available on CWS Client Tier.
  `DataMap`
  `getDataMap(String mapName)`
  Returns a DataMap matching the name.
  `Collection<DataMap>`
  `getDataMaps()`
  Returns an unmodifiable collection of DataMaps.
  `Collection<DbEntity>`
  `getDbEntities()`
  Returns all DbEntities.
  `DbEntity`
  `getDbEntity(String name)`
  Returns DbEntity for a given name, or null if no such DbEntity is found in the MappingNamespace.
  `Embeddable`
  `getEmbeddable(String className)`
  Returns an `Embeddable` matching class name or null if such Embeddable is not mapped.
  `Collection<Embeddable>`
  `getEmbeddables()`
  `EntitySorter`
  `getEntitySorter()`
  `EntityInheritanceTree`
  `getInheritanceTree(String entityName)`
  `Collection<ObjEntity>`
  `getObjEntities()`
  Returns all ObjEntities in the namespace.
  `ObjEntity`
  `getObjEntity(Class<?> entityClass)`
  Looks in the DataMap's that this object was created with for the ObjEntity that maps to the services the specified class
  `ObjEntity`
  `getObjEntity(Class<?> entityClass, boolean lookupClientResolver)`
  Looks in the DataMap's that this object was created with for the ObjEntity that maps to the services the specified class, with option to fallback to search by name with client resolver in case entity not found.
  `ObjEntity`
  `getObjEntity(String name)`
  Returns ObjEntity for a given name, or null if no such ObjEntity is found in the MappingNamespace.
  `ObjEntity`
  `getObjEntity(Persistent object)`
  `Procedure`
  `getProcedure(String procedureName)`
  Returns Procedure for a given name, or null if no such Procedure is found in the MappingNamespace.
  `Collection<Procedure>`
  `getProcedures()`
  Returns all Procedures in the namespace.
  `QueryDescriptor`
  `getQueryDescriptor(String name)`
  Returns a named query or null if no query exists for a given name.
  `Collection<QueryDescriptor>`
  `getQueryDescriptors()`
  Returns all Queries in the namespace.
  `SQLResult`
  `getResult(String name)`
  Returns a named result set mapping.
  `Collection<SQLResult>`
  `getResults()`
  `ValueObjectTypeRegistry`
  `getValueObjectTypeRegistry()`
  `void`
  `refreshMappingCache()`
  Refreshes entity cache to reflect the current state of the DataMaps in the EntityResolver.
  `void`
  `removeDataMap(DataMap map)`
  `void`
  `setCallbackRegistry(LifecycleCallbackRegistry callbackRegistry)`
  Sets a lifecycle callbacks registry of the EntityResolver.
  `void`
  `setDataMaps(Collection<DataMap> maps)`
  `void`
  `setEntitySorter(EntitySorter entitySorter)`
  `void`
  `setValueComparisionStrategyFactory(ValueComparisonStrategyFactory valueComparisonStrategyFactory)`
  `void`
  `setValueObjectTypeRegistry(ValueObjectTypeRegistry valueObjectTypeRegistry)`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### logger

    protected static final org.slf4j.Logger logger

  - ### incrementer

    protected static AtomicLong incrementer

  - ### LIFECYCLE_EVENT_MAP

    protected static final Map<LifecycleEvent,Class<? extends Annotation>> LIFECYCLE_EVENT_MAP

  - ### maps

    protected Collection<DataMap> maps

  - ### mappingCache

    protected transient MappingNamespace mappingCache

  - ### clientEntityResolver

    protected EntityResolver clientEntityResolver

  - ### classDescriptorMap

    protected transient volatile ClassDescriptorMap classDescriptorMap

  - ### callbackRegistry

    protected transient LifecycleCallbackRegistry callbackRegistry

  - ### valueObjectTypeRegistry

    protected transient ValueObjectTypeRegistry valueObjectTypeRegistry

  - ### valueComparisonStrategyFactory

    protected transient ValueComparisonStrategyFactory valueComparisonStrategyFactory
    Since:
      4.2

  - ### entitySorter

    protected transient EntitySorter entitySorter
    Since:
      4.2

- ## Constructor Details

  - ### EntityResolver

    public EntityResolver()
    Creates new empty EntityResolver.

  - ### EntityResolver

    public EntityResolver(Collection<DataMap> dataMaps)
    Creates new EntityResolver that indexes a collection of DataMaps.

- ## Method Details

  - ### applyDBLayerDefaults

    public void applyDBLayerDefaults()
    Updates missing mapping artifacts that can be guessed from other mapping information. This implementation creates missing reverse relationships, marking newly created relationships as "runtime".
    Since:
      3.0

  - ### getCallbackRegistry

    public LifecycleCallbackRegistry getCallbackRegistry()
    Returns a `LifecycleCallbackRegistry` for handling callbacks. Registry is lazily initialized on first call.
    Since:
      3.0

  - ### setCallbackRegistry

    public void setCallbackRegistry(LifecycleCallbackRegistry callbackRegistry)
    Sets a lifecycle callbacks registry of the EntityResolver. Users rarely if ever need to call this method as Cayenne would instantiate a registry itself as needed based on mapped configuration.
    Since:
      3.0

  - ### getClientEntityResolver

    public EntityResolver getClientEntityResolver()
    Returns ClientEntityResolver with mapping information that only includes entities available on CWS Client Tier.
    Since:
      1.2

  - ### getDbEntities

    public Collection<DbEntity> getDbEntities()
    Returns all DbEntities.
    Specified by:
      `getDbEntities` in interface `MappingNamespace`

  - ### getObjEntities

    public Collection<ObjEntity> getObjEntities()
    Description copied from interface: `MappingNamespace`
    Returns all ObjEntities in the namespace.
    Specified by:
      `getObjEntities` in interface `MappingNamespace`

  - ### getEmbeddables

    public Collection<Embeddable> getEmbeddables()
    Specified by:
      `getEmbeddables` in interface `MappingNamespace`
    Since:
      3.0

  - ### getResults

    public Collection<SQLResult> getResults()
    Specified by:
      `getResults` in interface `MappingNamespace`
    Since:
      4.0

  - ### getProcedures

    public Collection<Procedure> getProcedures()
    Description copied from interface: `MappingNamespace`
    Returns all Procedures in the namespace.
    Specified by:
      `getProcedures` in interface `MappingNamespace`

  - ### getQueryDescriptors

    public Collection<QueryDescriptor> getQueryDescriptors()
    Description copied from interface: `MappingNamespace`
    Returns all Queries in the namespace.
    Specified by:
      `getQueryDescriptors` in interface `MappingNamespace`

  - ### getDbEntity

    public DbEntity getDbEntity(String name)
    Description copied from interface: `MappingNamespace`
    Returns DbEntity for a given name, or null if no such DbEntity is found in the MappingNamespace.
    Specified by:
      `getDbEntity` in interface `MappingNamespace`

  - ### getObjEntity

    public ObjEntity getObjEntity(String name)
    Description copied from interface: `MappingNamespace`
    Returns ObjEntity for a given name, or null if no such ObjEntity is found in the MappingNamespace.
    Specified by:
      `getObjEntity` in interface `MappingNamespace`

  - ### getProcedure

    public Procedure getProcedure(String procedureName)
    Description copied from interface: `MappingNamespace`
    Returns Procedure for a given name, or null if no such Procedure is found in the MappingNamespace.
    Specified by:
      `getProcedure` in interface `MappingNamespace`

  - ### getQueryDescriptor

    public QueryDescriptor getQueryDescriptor(String name)
    Returns a named query or null if no query exists for a given name.
    Specified by:
      `getQueryDescriptor` in interface `MappingNamespace`

  - ### getEmbeddable

    public Embeddable getEmbeddable(String className)
    Description copied from interface: `MappingNamespace`
    Returns an `Embeddable` matching class name or null if such Embeddable is not mapped.
    Specified by:
      `getEmbeddable` in interface `MappingNamespace`
    Since:
      3.0

  - ### getResult

    public SQLResult getResult(String name)
    Description copied from interface: `MappingNamespace`
    Returns a named result set mapping.
    Specified by:
      `getResult` in interface `MappingNamespace`
    Since:
      3.0

  - ### getClassDescriptor

    public ClassDescriptor getClassDescriptor(String entityName)
    Returns ClassDescriptor for the ObjEntity matching the name. Returns null if no matching entity exists.
    Since:
      1.2

  - ### addDataMap

    public void addDataMap(DataMap map)

  - ### refreshMappingCache

    public void refreshMappingCache()
    Refreshes entity cache to reflect the current state of the DataMaps in the EntityResolver.
    Since:
      4.0

  - ### getDataMap

    public DataMap getDataMap(String mapName)
    Returns a DataMap matching the name.

  - ### setDataMaps

    public void setDataMaps(Collection<DataMap> maps)

  - ### getDataMaps

    public Collection<DataMap> getDataMaps()
    Returns an unmodifiable collection of DataMaps.

  - ### getInheritanceTree

    public EntityInheritanceTree getInheritanceTree(String entityName)
    Specified by:
      `getInheritanceTree` in interface `MappingNamespace`
    Since:
      4.0

  - ### getObjEntity

    public ObjEntity getObjEntity(Class<?> entityClass)
    Looks in the DataMap's that this object was created with for the ObjEntity that maps to the services the specified class
    Specified by:
      `getObjEntity` in interface `MappingNamespace`
    Returns:
      the required ObjEntity or null if there is none that matches the specifier
    Since:
      4.0

  - ### getObjEntity

    public ObjEntity getObjEntity(Class<?> entityClass, boolean lookupClientResolver)

    Looks in the DataMap's that this object was created with for the ObjEntity that maps to the services the specified class, with option to fallback to search by name with client resolver in case entity not found.

    This method can be used where entity class can be received from client.

    Parameters:
      `entityClass` - entity class to search
      `lookupClientResolver` - flag to fallback to client resolver
    Returns:
      the required ObjEntity or null if there is none that matches the specifier
    Since:
      4.0

  - ### getObjEntity

    public ObjEntity getObjEntity(Persistent object)
    Specified by:
      `getObjEntity` in interface `MappingNamespace`

  - ### removeDataMap

    public void removeDataMap(DataMap map)

  - ### getClassDescriptorMap

    public ClassDescriptorMap getClassDescriptorMap()
    Returns an object that compiles and stores `ClassDescriptor` instances for all entities.
    Since:
      3.0

  - ### getValueObjectTypeRegistry

    public ValueObjectTypeRegistry getValueObjectTypeRegistry()

  - ### setValueObjectTypeRegistry

    public void setValueObjectTypeRegistry(ValueObjectTypeRegistry valueObjectTypeRegistry)

  - ### setValueComparisionStrategyFactory

    public void setValueComparisionStrategyFactory(ValueComparisonStrategyFactory valueComparisonStrategyFactory)
    Since:
      4.2

  - ### setEntitySorter

    public void setEntitySorter(EntitySorter entitySorter)
    Since:
      4.2

  - ### getEntitySorter

    public EntitySorter getEntitySorter()
    Since:
      4.2