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 static AtomicLong
incrementer
protected boolean
indexedByClass
Deprecated.protected static org.slf4j.Logger
logger
protected MappingNamespace
mappingCache
protected Collection<DataMap>
maps
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
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addDataMap(DataMap map)
void
applyDBLayerDefaults()
Updates missing mapping artifacts that can be guessed from other mapping information.void
applyObjectLayerDefaults()
Deprecated.since 4.0 does nothing.void
clearCache()
Deprecated.since 4.0 in favor ofrefreshMappingCache()
.LifecycleCallbackRegistry
getCallbackRegistry()
Returns aLifecycleCallbackRegistry
for handling callbacks.ClassDescriptor
getClassDescriptor(String entityName)
Returns ClassDescriptor for the ObjEntity matching the name.ClassDescriptorMap
getClassDescriptorMap()
Returns an object that compiles and storesClassDescriptor
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 anEmbeddable
matching class name or null if such Embeddable is not mapped.Collection<Embeddable>
getEmbeddables()
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 classObjEntity
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()
Collection<SQLResult>
getResultSets()
Deprecated.since 4.0 usegetResults()
.ValueObjectTypeRegistry
getValueObjectTypeRegistry()
boolean
isIndexedByClass()
Deprecated.since 4.0.EntityInheritanceTree
lookupInheritanceTree(String entityName)
Deprecated.since 4.0 usegetInheritanceTree(String)
.ObjEntity
lookupObjEntity(Class<?> entityClass)
Deprecated.since 4.0, usegetObjEntity(Class)
.ObjEntity
lookupObjEntity(Object object)
Deprecated.Procedure
lookupProcedure(String procedureName)
Deprecated.since 4.0 usegetProcedure(String)
.Procedure
lookupProcedure(Query q)
Deprecated.since 4.0.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
setEntityListenerFactory(EntityListenerFactory entityListenerFactory)
Deprecated.since 4.0 this method does nothing, as EntityResolver no longer loads listeners from its DataMaps.void
setIndexedByClass(boolean b)
Deprecated.since 4.0.void
setValueObjectTypeRegistry(ValueObjectTypeRegistry valueObjectTypeRegistry)
-
-
-
Field Detail
-
logger
protected static final org.slf4j.Logger logger
-
incrementer
protected static AtomicLong incrementer
-
indexedByClass
@Deprecated protected boolean indexedByClass
Deprecated.
-
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
-
-
Constructor Detail
-
EntityResolver
public EntityResolver()
Creates new empty EntityResolver.
-
EntityResolver
public EntityResolver(Collection<DataMap> dataMaps)
Creates new EntityResolver that indexes a collection of DataMaps.
-
-
Method Detail
-
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
-
applyObjectLayerDefaults
@Deprecated public void applyObjectLayerDefaults()
Deprecated.since 4.0 does nothing. Previously it used to create runtime ObjRelationships, that broke a lot of things.- Since:
- 3.0
-
getCallbackRegistry
public LifecycleCallbackRegistry getCallbackRegistry()
Returns aLifecycleCallbackRegistry
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 interfaceMappingNamespace
-
getObjEntities
public Collection<ObjEntity> getObjEntities()
Description copied from interface:MappingNamespace
Returns all ObjEntities in the namespace.- Specified by:
getObjEntities
in interfaceMappingNamespace
-
getEmbeddables
public Collection<Embeddable> getEmbeddables()
- Specified by:
getEmbeddables
in interfaceMappingNamespace
- Since:
- 3.0
-
getResultSets
@Deprecated public Collection<SQLResult> getResultSets()
Deprecated.since 4.0 usegetResults()
.
-
getResults
public Collection<SQLResult> getResults()
- Specified by:
getResults
in interfaceMappingNamespace
- Since:
- 4.0
-
getProcedures
public Collection<Procedure> getProcedures()
Description copied from interface:MappingNamespace
Returns all Procedures in the namespace.- Specified by:
getProcedures
in interfaceMappingNamespace
-
getQueryDescriptors
public Collection<QueryDescriptor> getQueryDescriptors()
Description copied from interface:MappingNamespace
Returns all Queries in the namespace.- Specified by:
getQueryDescriptors
in interfaceMappingNamespace
-
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 interfaceMappingNamespace
-
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 interfaceMappingNamespace
-
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 interfaceMappingNamespace
-
getQueryDescriptor
public QueryDescriptor getQueryDescriptor(String name)
Returns a named query or null if no query exists for a given name.- Specified by:
getQueryDescriptor
in interfaceMappingNamespace
-
getEmbeddable
public Embeddable getEmbeddable(String className)
Description copied from interface:MappingNamespace
Returns anEmbeddable
matching class name or null if such Embeddable is not mapped.- Specified by:
getEmbeddable
in interfaceMappingNamespace
- Since:
- 3.0
-
getResult
public SQLResult getResult(String name)
Description copied from interface:MappingNamespace
Returns a named result set mapping.- Specified by:
getResult
in interfaceMappingNamespace
- 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)
-
clearCache
@Deprecated public void clearCache()
Deprecated.since 4.0 in favor ofrefreshMappingCache()
.Removes all entity mappings from the cache.
-
refreshMappingCache
public void refreshMappingCache()
Refreshes entity cache to reflect the current state of the DataMaps in the EntityResolver.- Since:
- 4.0
-
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 interfaceMappingNamespace
- Since:
- 4.0
-
lookupInheritanceTree
@Deprecated public EntityInheritanceTree lookupInheritanceTree(String entityName)
Deprecated.since 4.0 usegetInheritanceTree(String)
.
-
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 interfaceMappingNamespace
- 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 searchlookupClientResolver
- flag to fallback to client resolver- Returns:
- the required ObjEntity or null if there is none that matches the specifier
- Since:
- 4.0
-
lookupObjEntity
public ObjEntity lookupObjEntity(Class<?> entityClass)
Deprecated.since 4.0, usegetObjEntity(Class)
.
-
getObjEntity
public ObjEntity getObjEntity(Persistent object)
- Specified by:
getObjEntity
in interfaceMappingNamespace
-
lookupObjEntity
@Deprecated public ObjEntity lookupObjEntity(Object object)
Deprecated.Looks in the DataMap's that this object was created with for the ObjEntity that services the specified data Object- Returns:
- the required ObjEntity, or null if none matches the specifier
- Since:
- 4.0 a corresponding getObjEntity method should be used.
-
lookupProcedure
@Deprecated public Procedure lookupProcedure(Query q)
Deprecated.since 4.0. Use q.getMetaData(resolver).getProcedure()
-
lookupProcedure
@Deprecated public Procedure lookupProcedure(String procedureName)
Deprecated.since 4.0 usegetProcedure(String)
.
-
removeDataMap
public void removeDataMap(DataMap map)
-
isIndexedByClass
@Deprecated public boolean isIndexedByClass()
Deprecated.since 4.0. There's no replacement. This property is meaningless and is no longer respected by the code.
-
setIndexedByClass
public void setIndexedByClass(boolean b)
Deprecated.since 4.0. There's no replacement. This property is meaningless.
-
getClassDescriptorMap
public ClassDescriptorMap getClassDescriptorMap()
Returns an object that compiles and storesClassDescriptor
instances for all entities.- Since:
- 3.0
-
setEntityListenerFactory
@Deprecated public void setEntityListenerFactory(EntityListenerFactory entityListenerFactory)
Deprecated.since 4.0 this method does nothing, as EntityResolver no longer loads listeners from its DataMaps.- Since:
- 3.0
-
getValueObjectTypeRegistry
public ValueObjectTypeRegistry getValueObjectTypeRegistry()
-
setValueObjectTypeRegistry
public void setValueObjectTypeRegistry(ValueObjectTypeRegistry valueObjectTypeRegistry)
-
-