E
- the concrete PersistentEntity
type the MappingContext
implementation createsP
- the concrete PersistentProperty
type the MappingContext
implementation createspublic abstract class AbstractMappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>> extends Object implements MappingContext<E,P>, ApplicationEventPublisherAware, ApplicationContextAware, InitializingBean
PersistentEntity
and
PersistentProperty
.
The implementation uses a ReentrantReadWriteLock
to make sure PersistentEntity
are completely
populated before accessing them from outside.
Modifier | Constructor and Description |
---|---|
protected |
AbstractMappingContext() |
Modifier and Type | Method and Description |
---|---|
protected Optional<E> |
addPersistentEntity(Class<?> type)
Adds the given type to the
MappingContext . |
protected Optional<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(Property property,
E owner,
SimpleTypeHolder simpleTypeHolder)
Creates the concrete instance of
PersistentProperty . |
protected <T> PersistentPropertyPaths<T,P> |
doFindPersistentPropertyPaths(Class<T> type,
Predicate<? super P> predicate,
Predicate<P> traversalGuard)
Actually looks up the
PersistentPropertyPaths for the given type, selection predicate and traversal guard. |
<T> PersistentPropertyPaths<T,P> |
findPersistentPropertyPaths(Class<T> type,
Predicate<? super P> predicate)
Returns all
PersistentPropertyPath s pointing to properties on the given type that match the given
Predicate . |
Collection<TypeInformation<?>> |
getManagedTypes()
|
Collection<E> |
getPersistentEntities()
Returns all
PersistentEntity s 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
PersistentProperty s for the given path expression based on the given PropertyPath . |
PersistentPropertyPath<P> |
getPersistentPropertyPath(String propertyPath,
Class<?> type)
Returns all
PersistentProperty s 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 |
setApplicationContext(ApplicationContext applicationContext) |
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
MappingException s 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 . |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getRequiredPersistentEntity, getRequiredPersistentEntity, getRequiredPersistentEntity
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
setApplicationEventPublisher
in interface ApplicationEventPublisherAware
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
setApplicationContext
in interface ApplicationContextAware
BeansException
public 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
MappingException
s 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 analyzed.simpleTypes
- must not be null.public Collection<E> getPersistentEntities()
MappingContext
PersistentEntity
s held in the context.getPersistentEntities
in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>
@Nullable public E getPersistentEntity(Class<?> type)
MappingContext
PersistentEntity
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.PersistentEntity
found for type.SimpleTypeHolder.isSimpleType(Class)
public boolean hasPersistentEntityFor(Class<?> type)
MappingContext
MappingContext
currently contains a PersistentEntity
for the type.hasPersistentEntityFor
in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>
type
- must not be null.PersistentEntity
present for given type.@Nullable public E getPersistentEntity(TypeInformation<?> type)
MappingContext
PersistentEntity
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.PersistentEntity
found for TypeInformation
.SimpleTypeHolder.isSimpleType(Class)
@Nullable public E getPersistentEntity(P persistentProperty)
MappingContext
PersistentEntity
mapped by the given PersistentProperty
.getPersistentEntity
in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>
persistentProperty
- must not be null.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)
MappingContext
PersistentProperty
s 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)
MappingContext
PersistentProperty
s 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.public <T> PersistentPropertyPaths<T,P> findPersistentPropertyPaths(Class<T> type, Predicate<? super P> predicate)
MappingContext
PersistentPropertyPath
s pointing to properties on the given type that match the given
Predicate
. In case of circular references the detection will stop at the property that references a type
that's already included in the path. Note, that is is a potentially expensive operation as results cannot be
cached.findPersistentPropertyPaths
in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>
type
- must not be null.predicate
- must not be null.protected final <T> PersistentPropertyPaths<T,P> doFindPersistentPropertyPaths(Class<T> type, Predicate<? super P> predicate, Predicate<P> traversalGuard)
PersistentPropertyPaths
for the given type, selection predicate and traversal guard.
Primary purpose is to allow sub-types to alter the default traversal guard, e.g. used by
findPersistentPropertyPaths(Class, Predicate)
.type
- will never be null.predicate
- will never be null.traversalGuard
- will never be null.findPersistentPropertyPaths(Class, Predicate)
protected Optional<E> addPersistentEntity(Class<?> type)
MappingContext
.type
- must not be null.protected Optional<E> addPersistentEntity(TypeInformation<?> typeInformation)
TypeInformation
to the MappingContext
.typeInformation
- must not be null.public Collection<TypeInformation<?>> getManagedTypes()
MappingContext
getManagedTypes
in interface MappingContext<E extends MutablePersistentEntity<?,P>,P extends PersistentProperty<P>>
TypeInformation
s for the PersistentEntity
s in the MappingContext
.protected abstract <T> E createPersistentEntity(TypeInformation<T> typeInformation)
PersistentEntity
instance.T
- typeInformation
- protected abstract P createPersistentProperty(Property property, E owner, SimpleTypeHolder simpleTypeHolder)
PersistentProperty
.property
- owner
- simpleTypeHolder
- public void afterPropertiesSet()
afterPropertiesSet
in interface InitializingBean
public 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 all types considered simple and non-supported Kotlin classes, 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–2021 Pivotal Software, Inc.. All rights reserved.