# 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 static AtomicLong`
  `incrementer`
  `protected static final Map<LifecycleEvent, Class<? extends Annotation>>`
  `LIFECYCLE_EVENT_MAP`
  `protected MappingNamespace`
  `mappingCache`
  `protected Collection<DataMap>`
  `maps`
  `protected AdhocObjectFactory`
  `objectFactory`
  `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.
  `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()`
  `EntityInheritanceTree`
  `getInheritanceTree(String entityName)`
  `AdhocObjectFactory`
  `getObjectFactory()`
  `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(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`
  `setObjectFactory(AdhocObjectFactory objectFactory)`
  `void`
  `setValueComparisonStrategyFactory(ValueComparisonStrategyFactory valueComparisonStrategyFactory)`
  `void`
  `setValueObjectTypeRegistry(ValueObjectTypeRegistry valueObjectTypeRegistry)`

  ### Methods inherited from class Object

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

- ## Field Details

  - ### 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

  - ### classDescriptorMap

    protected transient volatile ClassDescriptorMap classDescriptorMap

  - ### callbackRegistry

    protected transient LifecycleCallbackRegistry callbackRegistry

  - ### valueObjectTypeRegistry

    protected transient ValueObjectTypeRegistry valueObjectTypeRegistry

  - ### valueComparisonStrategyFactory

    protected transient ValueComparisonStrategyFactory valueComparisonStrategyFactory

  - ### objectFactory

    protected transient AdhocObjectFactory objectFactory
    Since:
      5.0

- ## 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

  - ### 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(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)

  - ### setValueComparisonStrategyFactory

    public void setValueComparisonStrategyFactory(ValueComparisonStrategyFactory valueComparisonStrategyFactory)
    Since:
      4.2

  - ### setObjectFactory

    public void setObjectFactory(AdhocObjectFactory objectFactory)
    Since:
      5.0

  - ### getObjectFactory

    public AdhocObjectFactory getObjectFactory()
    Since:
      5.0