Skip to content

Commit c74666a

Browse files
committed
Polishing contribution
Closes gh-33105
1 parent 976b4f3 commit c74666a

File tree

1 file changed

+23
-76
lines changed

1 file changed

+23
-76
lines changed

spring-context/src/test/java/org/springframework/validation/beanvalidation/MethodValidationProxyTests.java

+23-76
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,14 @@
2323
import jakarta.validation.ConstraintViolationException;
2424
import jakarta.validation.Validation;
2525
import jakarta.validation.Validator;
26-
import jakarta.validation.ValidatorFactory;
2726
import jakarta.validation.constraints.Max;
2827
import jakarta.validation.constraints.NotNull;
2928
import jakarta.validation.groups.Default;
3029
import org.aopalliance.intercept.MethodInterceptor;
3130
import org.aopalliance.intercept.MethodInvocation;
3231
import org.junit.jupiter.api.Test;
32+
import org.junit.jupiter.params.ParameterizedTest;
33+
import org.junit.jupiter.params.provider.ValueSource;
3334

3435
import org.springframework.aop.framework.ProxyFactory;
3536
import org.springframework.beans.MutablePropertyValues;
@@ -47,7 +48,6 @@
4748
import org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor;
4849
import org.springframework.util.ClassUtils;
4950
import org.springframework.util.ReflectionUtils;
50-
import org.springframework.util.function.SingletonSupplier;
5151
import org.springframework.validation.annotation.Validated;
5252
import org.springframework.validation.method.MethodValidationException;
5353

@@ -63,63 +63,44 @@
6363
*/
6464
class MethodValidationProxyTests {
6565

66-
@Test
66+
@ParameterizedTest
67+
@ValueSource(booleans = {true, false})
6768
@SuppressWarnings("unchecked")
68-
public void testMethodValidationInterceptor() {
69+
void testMethodValidationInterceptor(boolean adaptViolations) {
6970
MyValidBean bean = new MyValidBean();
7071
ProxyFactory factory = new ProxyFactory(bean);
71-
factory.addAdvice(new MethodValidationInterceptor());
72+
factory.addAdvice(adaptViolations ?
73+
new MethodValidationInterceptor(() -> Validation.buildDefaultValidatorFactory().getValidator(), true) :
74+
new MethodValidationInterceptor());
7275
factory.addAdvisor(new AsyncAnnotationAdvisor());
73-
doTestProxyValidation((MyValidInterface<String>) factory.getProxy(), ConstraintViolationException.class);
74-
}
75-
76-
@Test
77-
@SuppressWarnings("unchecked")
78-
public void testMethodValidationInterceptorWithAdaptConstraintViolations() {
79-
MyValidBean bean = new MyValidBean();
80-
ProxyFactory factory = new ProxyFactory(bean);
81-
try (ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory()) {
82-
factory.addAdvice(new MethodValidationInterceptor(SingletonSupplier.of(validatorFactory.getValidator()), true));
83-
factory.addAdvisor(new AsyncAnnotationAdvisor());
84-
doTestProxyValidation((MyValidInterface<String>) factory.getProxy(), MethodValidationException.class);
85-
}
86-
}
87-
88-
@Test
89-
@SuppressWarnings("unchecked")
90-
public void testMethodValidationPostProcessor() {
91-
StaticApplicationContext context = new StaticApplicationContext();
92-
context.registerSingleton("mvpp", MethodValidationPostProcessor.class);
93-
MutablePropertyValues pvs = new MutablePropertyValues();
94-
pvs.add("beforeExistingAdvisors", false);
95-
context.registerSingleton("aapp", AsyncAnnotationBeanPostProcessor.class, pvs);
96-
context.registerSingleton("bean", MyValidBean.class);
97-
context.refresh();
98-
doTestProxyValidation(context.getBean("bean", MyValidInterface.class), ConstraintViolationException.class);
99-
context.close();
76+
doTestProxyValidation((MyValidInterface<String>) factory.getProxy(),
77+
(adaptViolations ? MethodValidationException.class : ConstraintViolationException.class));
10078
}
10179

102-
@Test
80+
@ParameterizedTest
81+
@ValueSource(booleans = {true, false})
10382
@SuppressWarnings("unchecked")
104-
public void testMethodValidationPostProcessorWithAdaptConstraintViolations() {
83+
void testMethodValidationPostProcessor(boolean adaptViolations) {
10584
StaticApplicationContext context = new StaticApplicationContext();
106-
context.registerBean(MethodValidationPostProcessor.class, () -> {
107-
MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor();
108-
postProcessor.setAdaptConstraintViolations(true);
109-
return postProcessor;
110-
});
111-
85+
context.registerBean(MethodValidationPostProcessor.class, adaptViolations ?
86+
() -> {
87+
MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor();
88+
postProcessor.setAdaptConstraintViolations(true);
89+
return postProcessor;
90+
} :
91+
MethodValidationPostProcessor::new);
11292
MutablePropertyValues pvs = new MutablePropertyValues();
11393
pvs.add("beforeExistingAdvisors", false);
11494
context.registerSingleton("aapp", AsyncAnnotationBeanPostProcessor.class, pvs);
11595
context.registerSingleton("bean", MyValidBean.class);
11696
context.refresh();
117-
doTestProxyValidation(context.getBean("bean", MyValidInterface.class), MethodValidationException.class);
97+
doTestProxyValidation(context.getBean("bean", MyValidInterface.class),
98+
adaptViolations ? MethodValidationException.class : ConstraintViolationException.class);
11899
context.close();
119100
}
120101

121102
@Test // gh-29782
122-
public void testMethodValidationPostProcessorForInterfaceOnlyProxy() {
103+
void testMethodValidationPostProcessorForInterfaceOnlyProxy() {
123104
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
124105
context.register(MethodValidationPostProcessor.class);
125106
context.registerBean(MyValidInterface.class, () ->
@@ -129,23 +110,6 @@ public void testMethodValidationPostProcessorForInterfaceOnlyProxy() {
129110
context.close();
130111
}
131112

132-
@Test
133-
@SuppressWarnings("unchecked")
134-
public void testMethodValidationPostProcessorForInterfaceOnlyProxyWithAdaptConstraintViolations() {
135-
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
136-
context.registerBean(MethodValidationPostProcessor.class, () -> {
137-
MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor();
138-
postProcessor.setAdaptConstraintViolations(true);
139-
return postProcessor;
140-
});
141-
142-
context.registerBean(MyValidInterface.class, () ->
143-
ProxyFactory.getProxy(MyValidInterface.class, new MyValidClientInterfaceMethodInterceptor()));
144-
context.refresh();
145-
doTestProxyValidation(context.getBean(MyValidInterface.class), MethodValidationException.class);
146-
context.close();
147-
}
148-
149113
@SuppressWarnings("DataFlowIssue")
150114
private void doTestProxyValidation(MyValidInterface<String> proxy, Class<? extends Exception> expectedExceptionClass) {
151115
assertThat(proxy.myValidMethod("value", 5)).isNotNull();
@@ -174,11 +138,6 @@ void testLazyValidatorForMethodValidationWithValidatorProvider() {
174138
doTestLazyValidatorForMethodValidation(LazyMethodValidationConfigWithValidatorProvider.class);
175139
}
176140

177-
@Test
178-
void testLazyValidatorForMethodValidationWithAdaptConstraintViolations() {
179-
doTestLazyValidatorForMethodValidation(LazyMethodValidationConfigWithAdaptConstraintViolations.class);
180-
}
181-
182141
private void doTestLazyValidatorForMethodValidation(Class<?> configClass) {
183142
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
184143
context.register(configClass, CustomValidatorBean.class, MyValidBean.class, MyValidFactoryBean.class);
@@ -335,16 +294,4 @@ public static MethodValidationPostProcessor methodValidationPostProcessor(Object
335294
}
336295
}
337296

338-
@Configuration
339-
public static class LazyMethodValidationConfigWithAdaptConstraintViolations {
340-
341-
@Bean
342-
public static MethodValidationPostProcessor methodValidationPostProcessor(ObjectProvider<Validator> validator) {
343-
MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor();
344-
postProcessor.setValidatorProvider(validator);
345-
postProcessor.setAdaptConstraintViolations(true);
346-
return postProcessor;
347-
}
348-
}
349-
350297
}

0 commit comments

Comments
 (0)