public abstract class AbstractMappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>> extends Object implements MappingContext<E,P>, ApplicationEventPublisherAware, InitializingBean
PersistentEntity and
PersistentProperty.
The implementation uses a ReentrantReadWriteLock to make sure PersistentEntity are completely
populated before accessing them from outside.
| Constructor and Description |
|---|
AbstractMappingContext() |
| Modifier and Type | Method and Description |
|---|---|
protected E |
addPersistentEntity(Class<?> type)
Adds the given type to the
MappingContext. |
protected E |
addPersistentEntity(TypeInformation<?> typeInformation)
Adds the given
TypeInformation to the MappingContext. |
void |
afterPropertiesSet() |
protected abstract <T> E |
createPersistentEntity(TypeInformation<T> typeInformation)
Creates the concrete
PersistentEntity instance. |
protected abstract P |
createPersistentProperty(Field field,
PropertyDescriptor descriptor,
E owner,
SimpleTypeHolder simpleTypeHolder)
Creates the concrete instance of
PersistentProperty. |
Collection<TypeInformation<?>> |
getManagedTypes()
|
Collection<E> |
getPersistentEntities()
Returns all
PersistentEntitys held in the context. |
E |
getPersistentEntity(Class<?> type)
Returns a
PersistentEntity for the given Class. |
E |
getPersistentEntity(P persistentProperty)
Returns the
PersistentEntity mapped by the given PersistentProperty. |
E |
getPersistentEntity(TypeInformation<?> type)
Returns a
PersistentEntity for the given TypeInformation. |
PersistentPropertyPath<P> |
getPersistentPropertyPath(PropertyPath propertyPath)
Returns all
PersistentPropertys for the given path expression based on the given PropertyPath. |
PersistentPropertyPath<P> |
getPersistentPropertyPath(String propertyPath,
Class<?> type)
Returns all
PersistentPropertys for the given dot path notation based on the given type. |
boolean |
hasPersistentEntityFor(Class<?> type)
Returns whether the
MappingContext currently contains a PersistentEntity for the type. |
void |
initialize()
Initializes the mapping context.
|
void |
setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) |
void |
setInitialEntitySet(Set<? extends Class<?>> initialEntitySet)
Sets the
Set of types to populate the context initially. |
void |
setSimpleTypeHolder(SimpleTypeHolder simpleTypes)
Configures the
SimpleTypeHolder to be used by the MappingContext. |
void |
setStrict(boolean strict)
Configures whether the
MappingContext is in strict mode which means, that it will throw
MappingExceptions in case one tries to lookup a PersistentEntity not already in the context. |
protected boolean |
shouldCreatePersistentEntityFor(TypeInformation<?> type)
Returns whether a
PersistentEntity instance should be created for the given TypeInformation. |
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
setApplicationEventPublisher in interface ApplicationEventPublisherAwarepublic void setInitialEntitySet(Set<? extends Class<?>> initialEntitySet)
Set of types to populate the context initially.initialEntitySet - public void setStrict(boolean strict)
MappingContext is in strict mode which means, that it will throw
MappingExceptions in case one tries to lookup a PersistentEntity not already in the context. This
defaults to false so that unknown types will be transparently added to the MappingContext if not known
in advance.strict - public void setSimpleTypeHolder(SimpleTypeHolder simpleTypes)
SimpleTypeHolder to be used by the MappingContext. Allows customization of what
types will be regarded as simple types and thus not recursively analysed. Setting this to null will
reset the context to use the default SimpleTypeHolder.simpleTypes - public Collection<E> getPersistentEntities()
MappingContextPersistentEntitys held in the context.getPersistentEntities in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>public E getPersistentEntity(Class<?> type)
MappingContextPersistentEntity for the given Class. Will return null for types that are
considered simple ones.getPersistentEntity in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>type - must not be null.SimpleTypeHolder.isSimpleType(Class)public boolean hasPersistentEntityFor(Class<?> type)
MappingContextMappingContext currently contains a PersistentEntity for the type.hasPersistentEntityFor in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>type - can be null.public E getPersistentEntity(TypeInformation<?> type)
MappingContextPersistentEntity for the given TypeInformation. Will return null for types
that are considered simple ones.getPersistentEntity in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>type - must not be null.SimpleTypeHolder.isSimpleType(Class)public E getPersistentEntity(P persistentProperty)
MappingContextPersistentEntity mapped by the given PersistentProperty.getPersistentEntity in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>PersistentEntity mapped by the given PersistentProperty or null if no
PersistentEntity exists for it or the PersistentProperty does not refer to an entity (the
type of the property is considered simple see
SimpleTypeHolder.isSimpleType(Class)).public PersistentPropertyPath<P> getPersistentPropertyPath(PropertyPath propertyPath)
MappingContextPersistentPropertys for the given path expression based on the given PropertyPath.getPersistentPropertyPath in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>propertyPath - must not be null.PersistentPropertyPath representing the given PropertyPath.public PersistentPropertyPath<P> getPersistentPropertyPath(String propertyPath, Class<?> type)
MappingContextPersistentPropertys for the given dot path notation based on the given type.getPersistentPropertyPath in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>propertyPath - must not be null.type - must not be null.PersistentPropertyPath representing the given property path on the given type.protected E addPersistentEntity(Class<?> type)
MappingContext.type - protected E addPersistentEntity(TypeInformation<?> typeInformation)
TypeInformation to the MappingContext.typeInformation - public Collection<TypeInformation<?>> getManagedTypes()
MappingContextgetManagedTypes in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>TypeInformations for the PersistentEntitys in the MappingContext.protected abstract <T> E createPersistentEntity(TypeInformation<T> typeInformation)
PersistentEntity instance.T - typeInformation - protected abstract P createPersistentProperty(Field field, PropertyDescriptor descriptor, E owner, SimpleTypeHolder simpleTypeHolder)
PersistentProperty.field - descriptor - owner - simpleTypeHolder - public void afterPropertiesSet()
afterPropertiesSet in interface InitializingBeanpublic void initialize()
setInitialEntitySet(Set) to the
context.protected boolean shouldCreatePersistentEntityFor(TypeInformation<?> type)
PersistentEntity instance should be created for the given TypeInformation. By
default this will reject this for all types considered simple, but it might be necessary to tweak that in case you
have registered custom converters for top level types (which renders them to be considered simple) but still need
meta-information about them.type - will never be null.Copyright © 2011-2014–2014 Pivotal Software, Inc.. All rights reserved.