DATACMNS-327 - AbstractMappingContext implements InitializingBean again.

This causes the configured persistent entities being added to the context on its initialization instead of a delayed initialization on ApplicationContext refreshed event.
This commit is contained in:
Oliver Gierke
2013-05-12 23:42:37 +02:00
parent 8074bc87e8
commit 2c83144269
2 changed files with 9 additions and 34 deletions

View File

@@ -34,13 +34,9 @@ import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.data.mapping.PersistentEntity;
import org.springframework.data.mapping.PersistentProperty;
import org.springframework.data.mapping.PropertyPath;
@@ -67,12 +63,10 @@ import org.springframework.util.ReflectionUtils.FieldFilter;
* @author Oliver Gierke
*/
public abstract class AbstractMappingContext<E extends MutablePersistentEntity<?, P>, P extends PersistentProperty<P>>
implements MappingContext<E, P>, ApplicationContextAware, ApplicationEventPublisherAware,
ApplicationListener<ContextRefreshedEvent> {
implements MappingContext<E, P>, ApplicationEventPublisherAware, InitializingBean {
private final ConcurrentMap<TypeInformation<?>, E> persistentEntities = new ConcurrentHashMap<TypeInformation<?>, E>();
private ApplicationContext applicationContext;
private ApplicationEventPublisher applicationEventPublisher;
private Set<? extends Class<?>> initialEntitySet = new HashSet<Class<?>>();
@@ -83,20 +77,6 @@ public abstract class AbstractMappingContext<E extends MutablePersistentEntity<?
private final Lock read = lock.readLock();
private final Lock write = lock.writeLock();
/*
* (non-Javadoc)
* @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
*/
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
// Default publisher
if (this.applicationEventPublisher == null) {
this.applicationEventPublisher = applicationContext;
}
}
/*
* (non-Javadoc)
* @see org.springframework.context.ApplicationEventPublisherAware#setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher)
@@ -324,16 +304,12 @@ public abstract class AbstractMappingContext<E extends MutablePersistentEntity<?
protected abstract P createPersistentProperty(Field field, PropertyDescriptor descriptor, E owner,
SimpleTypeHolder simpleTypeHolder);
/*
/*
* (non-Javadoc)
* @see org.springframework.context.ApplicationListener#onApplicationEvent(org.springframework.context.ApplicationEvent)
* @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
*/
public void onApplicationEvent(ContextRefreshedEvent event) {
if (!event.getApplicationContext().equals(applicationContext)) {
return;
}
@Override
public void afterPropertiesSet() {
initialize();
}