Skip to content

Commit 30d67f7

Browse files
committed
Tests for @lazy Validator setup
Issue: SPR-15807
1 parent 6dcf2e3 commit 30d67f7

File tree

2 files changed

+49
-6
lines changed

2 files changed

+49
-6
lines changed

spring-context-support/src/test/java/org/springframework/validation/beanvalidation2/MethodValidationTests.java

+25-3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.lang.annotation.Retention;
2020
import java.lang.annotation.RetentionPolicy;
21+
import javax.validation.Validator;
2122
import javax.validation.constraints.Max;
2223
import javax.validation.constraints.NotNull;
2324
import javax.validation.groups.Default;
@@ -26,11 +27,16 @@
2627

2728
import org.springframework.aop.framework.ProxyFactory;
2829
import org.springframework.beans.MutablePropertyValues;
30+
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
31+
import org.springframework.context.annotation.Bean;
32+
import org.springframework.context.annotation.Configuration;
33+
import org.springframework.context.annotation.Lazy;
2934
import org.springframework.context.support.StaticApplicationContext;
3035
import org.springframework.scheduling.annotation.Async;
3136
import org.springframework.scheduling.annotation.AsyncAnnotationAdvisor;
3237
import org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor;
3338
import org.springframework.validation.annotation.Validated;
39+
import org.springframework.validation.beanvalidation.CustomValidatorBean;
3440
import org.springframework.validation.beanvalidation.MethodValidationInterceptor;
3541
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
3642

@@ -39,7 +45,6 @@
3945
/**
4046
* @author Juergen Hoeller
4147
*/
42-
@SuppressWarnings("rawtypes")
4348
public class MethodValidationTests {
4449

4550
@Test
@@ -64,8 +69,6 @@ public void testMethodValidationPostProcessor() {
6469
ac.close();
6570
}
6671

67-
68-
@SuppressWarnings("unchecked")
6972
private void doTestProxyValidation(MyValidInterface proxy) {
7073
assertNotNull(proxy.myValidMethod("value", 5));
7174
try {
@@ -116,6 +119,13 @@ private void doTestProxyValidation(MyValidInterface proxy) {
116119
}
117120
}
118121

122+
@Test
123+
public void testLazyValidatorForMethodValidation() {
124+
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(
125+
LazyMethodValidationConfig.class, CustomValidatorBean.class, MyValidBean.class);
126+
ctx.getBean(MyValidInterface.class).myValidMethod("value", 5);
127+
}
128+
119129

120130
@MyStereotype
121131
public static class MyValidBean implements MyValidInterface<String> {
@@ -166,4 +176,16 @@ public interface OtherGroup {
166176
public @interface MyValid {
167177
}
168178

179+
180+
@Configuration
181+
public static class LazyMethodValidationConfig {
182+
183+
@Bean
184+
public static MethodValidationPostProcessor methodValidationPostProcessor(@Lazy Validator validator) {
185+
MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor();
186+
postProcessor.setValidator(validator);
187+
return postProcessor;
188+
}
189+
}
190+
169191
}

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

+24-3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.lang.annotation.Retention;
2020
import java.lang.annotation.RetentionPolicy;
21+
import javax.validation.Validator;
2122
import javax.validation.constraints.Max;
2223
import javax.validation.constraints.NotNull;
2324
import javax.validation.groups.Default;
@@ -26,6 +27,10 @@
2627

2728
import org.springframework.aop.framework.ProxyFactory;
2829
import org.springframework.beans.MutablePropertyValues;
30+
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
31+
import org.springframework.context.annotation.Bean;
32+
import org.springframework.context.annotation.Configuration;
33+
import org.springframework.context.annotation.Lazy;
2934
import org.springframework.context.support.StaticApplicationContext;
3035
import org.springframework.scheduling.annotation.Async;
3136
import org.springframework.scheduling.annotation.AsyncAnnotationAdvisor;
@@ -37,7 +42,6 @@
3742
/**
3843
* @author Juergen Hoeller
3944
*/
40-
@SuppressWarnings("rawtypes")
4145
public class MethodValidationTests {
4246

4347
@Test
@@ -62,8 +66,6 @@ public void testMethodValidationPostProcessor() {
6266
ac.close();
6367
}
6468

65-
66-
@SuppressWarnings("unchecked")
6769
private void doTestProxyValidation(MyValidInterface proxy) {
6870
assertNotNull(proxy.myValidMethod("value", 5));
6971
try {
@@ -114,6 +116,13 @@ private void doTestProxyValidation(MyValidInterface proxy) {
114116
}
115117
}
116118

119+
@Test
120+
public void testLazyValidatorForMethodValidation() {
121+
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(
122+
LazyMethodValidationConfig.class, CustomValidatorBean.class, MyValidBean.class);
123+
ctx.getBean(MyValidInterface.class).myValidMethod("value", 5);
124+
}
125+
117126

118127
@MyStereotype
119128
public static class MyValidBean implements MyValidInterface<String> {
@@ -164,4 +173,16 @@ public interface OtherGroup {
164173
public @interface MyValid {
165174
}
166175

176+
177+
@Configuration
178+
public static class LazyMethodValidationConfig {
179+
180+
@Bean
181+
public static MethodValidationPostProcessor methodValidationPostProcessor(@Lazy Validator validator) {
182+
MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor();
183+
postProcessor.setValidator(validator);
184+
return postProcessor;
185+
}
186+
}
187+
167188
}

0 commit comments

Comments
 (0)