Skip to content

Commit 2fb6eed

Browse files
committed
Allow customizing order for AuditingEntityCallback and ValidatingEntityCallback.
Added corresponding test cases for this functionality. Closes #4914 Signed-off-by: yangchef1 <[email protected]>
1 parent d37fa9e commit 2fb6eed

File tree

4 files changed

+32
-2
lines changed

4 files changed

+32
-2
lines changed

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

+6-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
public class AuditingEntityCallback implements BeforeConvertCallback<Object>, Ordered {
3333

3434
private final ObjectFactory<IsNewAwareAuditingHandler> auditingHandlerFactory;
35+
private int order = 100;
3536

3637
/**
3738
* Creates a new {@link AuditingEntityCallback} using the given {@link MappingContext} and {@link AuditingHandler}
@@ -52,6 +53,10 @@ public Object onBeforeConvert(Object entity, String collection) {
5253

5354
@Override
5455
public int getOrder() {
55-
return 100;
56+
return this.order;
57+
}
58+
59+
public void setOrder(int order) {
60+
this.order = order;
5661
}
5762
}

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

+5-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
public class ValidatingEntityCallback implements BeforeSaveCallback<Object>, Ordered {
3939

4040
private final BeanValidationDelegate delegate;
41+
private int order = 100;
4142

4243
/**
4344
* Creates a new {@link ValidatingEntityCallback} using the given {@link Validator}.
@@ -62,7 +63,10 @@ public Object onBeforeSave(Object entity, Document document, String collection)
6263

6364
@Override
6465
public int getOrder() {
65-
return 100;
66+
return this.order;
6667
}
6768

69+
public void setOrder(int order) {
70+
this.order = order;
71+
}
6872
}

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

+10
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,16 @@ void hasExplicitOrder() {
9292
assertThat(callback.getOrder()).isEqualTo(100);
9393
}
9494

95+
@Test // GH-4914
96+
void allowsChangingOrderDynamically() {
97+
98+
assertThat(callback).isInstanceOf(Ordered.class);
99+
assertThat(callback.getOrder()).isEqualTo(100);
100+
101+
callback.setOrder(50);
102+
assertThat(callback.getOrder()).isEqualTo(50);
103+
}
104+
95105
@Test // DATAMONGO-2261
96106
void propagatesChangedInstanceToEvent() {
97107

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

+11
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.bson.Document;
2727
import org.junit.jupiter.api.BeforeEach;
2828
import org.junit.jupiter.api.Test;
29+
import org.springframework.core.Ordered;
2930

3031
/**
3132
* Unit tests for {@link ValidatingEntityCallback}.
@@ -63,6 +64,16 @@ void validateSuccessful() {
6364
assertThat(entity).isEqualTo(coordinates);
6465
}
6566

67+
@Test // GH-4914
68+
void allowsChangingOrderDynamically() {
69+
70+
assertThat(callback).isInstanceOf(Ordered.class);
71+
assertThat(callback.getOrder()).isEqualTo(100);
72+
73+
callback.setOrder(50);
74+
assertThat(callback.getOrder()).isEqualTo(50);
75+
}
76+
6677
record Coordinates(@NotNull @Min(0) Integer x, @NotNull @Min(0) Integer y) {
6778

6879
Document toDocument() {

0 commit comments

Comments
 (0)