Browse Source

DATAMONGO-1356 - AuditingEventListener now has an explicit order.

AuditingEventListener now has a fixed ordering of 100. This allows other listeners to be registered to be executed before or after it.
pull/354/merge
Oliver Gierke 10 years ago
parent
commit
0228255d2b
  1. 12
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/AuditingEventListener.java
  2. 15
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/AuditingEventListenerUnitTests.java

12
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/AuditingEventListener.java

@ -17,6 +17,7 @@ package org.springframework.data.mongodb.core.mapping.event; @@ -17,6 +17,7 @@ package org.springframework.data.mongodb.core.mapping.event;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.context.ApplicationListener;
import org.springframework.core.Ordered;
import org.springframework.data.auditing.AuditingHandler;
import org.springframework.data.auditing.IsNewAwareAuditingHandler;
import org.springframework.data.mapping.context.MappingContext;
@ -28,7 +29,7 @@ import org.springframework.util.Assert; @@ -28,7 +29,7 @@ import org.springframework.util.Assert;
* @author Oliver Gierke
* @author Thomas Darimont
*/
public class AuditingEventListener implements ApplicationListener<BeforeConvertEvent<Object>> {
public class AuditingEventListener implements ApplicationListener<BeforeConvertEvent<Object>>, Ordered {
private final ObjectFactory<IsNewAwareAuditingHandler> auditingHandlerFactory;
@ -53,4 +54,13 @@ public class AuditingEventListener implements ApplicationListener<BeforeConvertE @@ -53,4 +54,13 @@ public class AuditingEventListener implements ApplicationListener<BeforeConvertE
Object entity = event.getSource();
auditingHandlerFactory.getObject().markAudited(entity);
}
/*
* (non-Javadoc)
* @see org.springframework.core.Ordered#getOrder()
*/
@Override
public int getOrder() {
return 100;
}
}

15
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/AuditingEventListenerUnitTests.java

@ -15,7 +15,8 @@ @@ -15,7 +15,8 @@
*/
package org.springframework.data.mongodb.core.mapping.event;
import static org.mockito.Matchers.*;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import java.util.Arrays;
@ -27,6 +28,7 @@ import org.mockito.Mockito; @@ -27,6 +28,7 @@ import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.core.Ordered;
import org.springframework.data.annotation.Id;
import org.springframework.data.auditing.IsNewAwareAuditingHandler;
import org.springframework.data.mapping.context.PersistentEntities;
@ -81,7 +83,7 @@ public class AuditingEventListenerUnitTests { @@ -81,7 +83,7 @@ public class AuditingEventListenerUnitTests {
listener.onApplicationEvent(new BeforeConvertEvent<Object>(sample, "collection-1"));
verify(handler, times(1)).markCreated(sample);
verify(handler, times(0)).markModified(any(Sample.class));
verify(handler, times(0)).markModified(Mockito.any(Sample.class));
}
/**
@ -94,10 +96,17 @@ public class AuditingEventListenerUnitTests { @@ -94,10 +96,17 @@ public class AuditingEventListenerUnitTests {
sample.id = "id";
listener.onApplicationEvent(new BeforeConvertEvent<Object>(sample, "collection-1"));
verify(handler, times(0)).markCreated(any(Sample.class));
verify(handler, times(0)).markCreated(Mockito.any(Sample.class));
verify(handler, times(1)).markModified(sample);
}
@Test
public void hasExplicitOrder() {
assertThat(listener, is(instanceOf(Ordered.class)));
assertThat(listener.getOrder(), is(100));
}
static class Sample {
@Id String id;

Loading…
Cancel
Save