Skip to content

Commit 88812ed

Browse files
committed
Merge branch '6.2.x'
2 parents 84bd44e + 0a48984 commit 88812ed

File tree

4 files changed

+48
-0
lines changed

4 files changed

+48
-0
lines changed

spring-beans/src/main/java/org/springframework/beans/factory/aot/InstanceSupplierCodeGenerator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,9 +293,12 @@ private CodeBlock generateCodeForInaccessibleFactoryMethod(
293293

294294
this.generationContext.getRuntimeHints().reflection().registerMethod(factoryMethod, ExecutableMode.INVOKE);
295295
GeneratedMethod getInstanceMethod = generateGetInstanceSupplierMethod(method -> {
296+
CodeWarnings codeWarnings = new CodeWarnings();
296297
Class<?> suppliedType = ClassUtils.resolvePrimitiveIfNecessary(factoryMethod.getReturnType());
298+
codeWarnings.detectDeprecation(suppliedType, factoryMethod);
297299
method.addJavadoc("Get the bean instance supplier for '$L'.", beanName);
298300
method.addModifiers(PRIVATE_STATIC);
301+
codeWarnings.suppress(method);
299302
method.returns(ParameterizedTypeName.get(BeanInstanceSupplier.class, suppliedType));
300303
method.addStatement(generateInstanceSupplierForFactoryMethod(
301304
factoryMethod, suppliedType, targetClass, factoryMethod.getName()));

spring-beans/src/test/java/org/springframework/beans/factory/aot/InstanceSupplierCodeGeneratorTests.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,16 @@ void generateWhenTargetFactoryMethodReturnTypeIsDeprecated() {
408408
compileAndCheckWarnings(beanDefinition);
409409
}
410410

411+
@Test
412+
void generateWhenTargetFactoryMethodIsProtectedAndReturnTypeIsDeprecated() {
413+
BeanDefinition beanDefinition = BeanDefinitionBuilder
414+
.rootBeanDefinition(DeprecatedBean.class)
415+
.setFactoryMethodOnBean("deprecatedReturnTypeProtected", "config").getBeanDefinition();
416+
beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
417+
.genericBeanDefinition(DeprecatedMemberConfiguration.class).getBeanDefinition());
418+
compileAndCheckWarnings(beanDefinition);
419+
}
420+
411421
private void compileAndCheckWarnings(BeanDefinition beanDefinition) {
412422
assertThatNoException().isThrownBy(() -> compile(TEST_COMPILER, beanDefinition,
413423
((instanceSupplier, compiled) -> {})));
@@ -454,6 +464,26 @@ void generateWhenTargetFactoryMethodParameterIsDeprecatedForRemoval() {
454464
compileAndCheckWarnings(beanDefinition);
455465
}
456466

467+
@Test
468+
void generateWhenTargetFactoryMethodReturnTypeIsDeprecatedForRemoval() {
469+
BeanDefinition beanDefinition = BeanDefinitionBuilder
470+
.rootBeanDefinition(DeprecatedForRemovalBean.class)
471+
.setFactoryMethodOnBean("deprecatedReturnType", "config").getBeanDefinition();
472+
beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
473+
.genericBeanDefinition(DeprecatedForRemovalMemberConfiguration.class).getBeanDefinition());
474+
compileAndCheckWarnings(beanDefinition);
475+
}
476+
477+
@Test
478+
void generateWhenTargetFactoryMethodIsProtectedAndReturnTypeIsDeprecatedForRemoval() {
479+
BeanDefinition beanDefinition = BeanDefinitionBuilder
480+
.rootBeanDefinition(DeprecatedForRemovalBean.class)
481+
.setFactoryMethodOnBean("deprecatedReturnTypeProtected", "config").getBeanDefinition();
482+
beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
483+
.genericBeanDefinition(DeprecatedForRemovalMemberConfiguration.class).getBeanDefinition());
484+
compileAndCheckWarnings(beanDefinition);
485+
}
486+
457487
private void compileAndCheckWarnings(BeanDefinition beanDefinition) {
458488
assertThatNoException().isThrownBy(() -> compile(TEST_COMPILER, beanDefinition,
459489
((instanceSupplier, compiled) -> {})));

spring-beans/src/testFixtures/java/org/springframework/beans/testfixture/beans/factory/generator/deprecation/DeprecatedForRemovalMemberConfiguration.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,14 @@ public String deprecatedParameter(DeprecatedForRemovalBean bean) {
3333
return bean.toString();
3434
}
3535

36+
@SuppressWarnings("removal")
37+
public DeprecatedForRemovalBean deprecatedReturnType() {
38+
return new DeprecatedForRemovalBean();
39+
}
40+
41+
@SuppressWarnings("removal")
42+
DeprecatedForRemovalBean deprecatedReturnTypeProtected() {
43+
return new DeprecatedForRemovalBean();
44+
}
45+
3646
}

spring-beans/src/testFixtures/java/org/springframework/beans/testfixture/beans/factory/generator/deprecation/DeprecatedMemberConfiguration.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,9 @@ public DeprecatedBean deprecatedReturnType() {
3838
return new DeprecatedBean();
3939
}
4040

41+
@SuppressWarnings("deprecation")
42+
DeprecatedBean deprecatedReturnTypeProtected() {
43+
return new DeprecatedBean();
44+
}
45+
4146
}

0 commit comments

Comments
 (0)