Skip to content

Commit 2c83144

Browse files
committed
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.
1 parent 8074bc8 commit 2c83144

File tree

2 files changed

+9
-34
lines changed

2 files changed

+9
-34
lines changed

src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java

Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,9 @@
3434
import java.util.concurrent.locks.Lock;
3535
import java.util.concurrent.locks.ReentrantReadWriteLock;
3636

37-
import org.springframework.beans.BeansException;
38-
import org.springframework.context.ApplicationContext;
39-
import org.springframework.context.ApplicationContextAware;
37+
import org.springframework.beans.factory.InitializingBean;
4038
import org.springframework.context.ApplicationEventPublisher;
4139
import org.springframework.context.ApplicationEventPublisherAware;
42-
import org.springframework.context.ApplicationListener;
43-
import org.springframework.context.event.ContextRefreshedEvent;
4440
import org.springframework.data.mapping.PersistentEntity;
4541
import org.springframework.data.mapping.PersistentProperty;
4642
import org.springframework.data.mapping.PropertyPath;
@@ -67,12 +63,10 @@
6763
* @author Oliver Gierke
6864
*/
6965
public abstract class AbstractMappingContext<E extends MutablePersistentEntity<?, P>, P extends PersistentProperty<P>>
70-
implements MappingContext<E, P>, ApplicationContextAware, ApplicationEventPublisherAware,
71-
ApplicationListener<ContextRefreshedEvent> {
66+
implements MappingContext<E, P>, ApplicationEventPublisherAware, InitializingBean {
7267

7368
private final ConcurrentMap<TypeInformation<?>, E> persistentEntities = new ConcurrentHashMap<TypeInformation<?>, E>();
7469

75-
private ApplicationContext applicationContext;
7670
private ApplicationEventPublisher applicationEventPublisher;
7771

7872
private Set<? extends Class<?>> initialEntitySet = new HashSet<Class<?>>();
@@ -83,20 +77,6 @@ public abstract class AbstractMappingContext<E extends MutablePersistentEntity<?
8377
private final Lock read = lock.readLock();
8478
private final Lock write = lock.writeLock();
8579

86-
/*
87-
* (non-Javadoc)
88-
* @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
89-
*/
90-
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
91-
92-
this.applicationContext = applicationContext;
93-
94-
// Default publisher
95-
if (this.applicationEventPublisher == null) {
96-
this.applicationEventPublisher = applicationContext;
97-
}
98-
}
99-
10080
/*
10181
* (non-Javadoc)
10282
* @see org.springframework.context.ApplicationEventPublisherAware#setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher)
@@ -324,16 +304,12 @@ protected E addPersistentEntity(TypeInformation<?> typeInformation) {
324304
protected abstract P createPersistentProperty(Field field, PropertyDescriptor descriptor, E owner,
325305
SimpleTypeHolder simpleTypeHolder);
326306

327-
/*
307+
/*
328308
* (non-Javadoc)
329-
* @see org.springframework.context.ApplicationListener#onApplicationEvent(org.springframework.context.ApplicationEvent)
309+
* @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
330310
*/
331-
public void onApplicationEvent(ContextRefreshedEvent event) {
332-
333-
if (!event.getApplicationContext().equals(applicationContext)) {
334-
return;
335-
}
336-
311+
@Override
312+
public void afterPropertiesSet() {
337313
initialize();
338314
}
339315

src/test/java/org/springframework/data/mapping/context/AbstractMappingContextUnitTests.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.mockito.Mockito;
2828
import org.springframework.context.ApplicationContext;
2929
import org.springframework.context.ApplicationEvent;
30-
import org.springframework.context.event.ContextRefreshedEvent;
3130
import org.springframework.data.mapping.PersistentEntity;
3231
import org.springframework.data.mapping.PropertyPath;
3332
import org.springframework.data.mapping.model.BasicPersistentEntity;
@@ -90,17 +89,17 @@ public void verify() {
9089
}
9190

9291
@Test
93-
public void registersEntitiesOnContextRefreshedEvent() {
92+
public void registersEntitiesOnInitialization() {
9493

9594
ApplicationContext context = mock(ApplicationContext.class);
9695

9796
SampleMappingContext mappingContext = new SampleMappingContext();
9897
mappingContext.setInitialEntitySet(Collections.singleton(Person.class));
99-
mappingContext.setApplicationContext(context);
98+
mappingContext.setApplicationEventPublisher(context);
10099

101100
verify(context, times(0)).publishEvent(Mockito.any(ApplicationEvent.class));
102101

103-
mappingContext.onApplicationEvent(new ContextRefreshedEvent(context));
102+
mappingContext.afterPropertiesSet();
104103
verify(context, times(1)).publishEvent(Mockito.any(ApplicationEvent.class));
105104
}
106105

0 commit comments

Comments
 (0)