Browse Source

Suppress warnings in JsonMixin AOT-generated code

Closes gh-48564
pull/47442/merge
Stéphane Nicoll 2 days ago
parent
commit
2754aaef57
  1. 11
      module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/JsonMixinModuleEntriesBeanRegistrationAotProcessor.java
  2. 19
      module/spring-boot-jackson2/src/test/java/org/springframework/boot/jackson2/JsonMixinModuleEntriesBeanRegistrationAotProcessorTests.java

11
module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/JsonMixinModuleEntriesBeanRegistrationAotProcessor.java

@ -33,6 +33,7 @@ import org.springframework.beans.factory.aot.BeanRegistrationAotProcessor;
import org.springframework.beans.factory.aot.BeanRegistrationCode; import org.springframework.beans.factory.aot.BeanRegistrationCode;
import org.springframework.beans.factory.aot.BeanRegistrationCodeFragments; import org.springframework.beans.factory.aot.BeanRegistrationCodeFragments;
import org.springframework.beans.factory.aot.BeanRegistrationCodeFragmentsDecorator; import org.springframework.beans.factory.aot.BeanRegistrationCodeFragmentsDecorator;
import org.springframework.beans.factory.aot.CodeWarnings;
import org.springframework.beans.factory.support.RegisteredBean; import org.springframework.beans.factory.support.RegisteredBean;
import org.springframework.javapoet.ClassName; import org.springframework.javapoet.ClassName;
import org.springframework.javapoet.CodeBlock; import org.springframework.javapoet.CodeBlock;
@ -87,9 +88,15 @@ class JsonMixinModuleEntriesBeanRegistrationAotProcessor implements BeanRegistra
method.addModifiers(Modifier.PRIVATE, Modifier.STATIC); method.addModifiers(Modifier.PRIVATE, Modifier.STATIC);
method.returns(BEAN_TYPE); method.returns(BEAN_TYPE);
CodeBlock.Builder code = CodeBlock.builder(); CodeBlock.Builder code = CodeBlock.builder();
code.add("return $T.create(", JsonMixinModuleEntries.class).beginControlFlow("(mixins) ->"); CodeWarnings codeWarnings = new CodeWarnings();
entries.doWithEntry(this.classLoader, (type, mixin) -> addEntryCode(code, type, mixin)); codeWarnings.detectDeprecation(BEAN_TYPE);
code.add("return $T.create(", BEAN_TYPE).beginControlFlow("(mixins) ->");
entries.doWithEntry(this.classLoader, (type, mixin) -> {
codeWarnings.detectDeprecation(type, mixin);
addEntryCode(code, type, mixin);
});
code.endControlFlow(")"); code.endControlFlow(")");
codeWarnings.suppress(method);
method.addCode(code.build()); method.addCode(code.build());
}); });
return generatedMethod.toMethodReference().toCodeBlock(); return generatedMethod.toMethodReference().toCodeBlock();

19
module/spring-boot-jackson2/src/test/java/org/springframework/boot/jackson2/JsonMixinModuleEntriesBeanRegistrationAotProcessorTests.java

@ -109,14 +109,17 @@ class JsonMixinModuleEntriesBeanRegistrationAotProcessorTests {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void compile(BiConsumer<GenericApplicationContext, Compiled> result) { private void compile(BiConsumer<GenericApplicationContext, Compiled> result) {
ClassName className = processAheadOfTime(); ClassName className = processAheadOfTime();
TestCompiler.forSystem().with(this.generationContext).compile((compiled) -> { TestCompiler.forSystem()
GenericApplicationContext freshApplicationContext = new GenericApplicationContext(); .withCompilerOptions("-Xlint:all", "-Werror")
ApplicationContextInitializer<GenericApplicationContext> initializer = compiled .with(this.generationContext)
.getInstance(ApplicationContextInitializer.class, className.toString()); .compile((compiled) -> {
initializer.initialize(freshApplicationContext); GenericApplicationContext freshApplicationContext = new GenericApplicationContext();
freshApplicationContext.refresh(); ApplicationContextInitializer<GenericApplicationContext> initializer = compiled
result.accept(freshApplicationContext, compiled); .getInstance(ApplicationContextInitializer.class, className.toString());
}); initializer.initialize(freshApplicationContext);
freshApplicationContext.refresh();
result.accept(freshApplicationContext, compiled);
});
} }
private void registerEntries(Class<?>... basePackageClasses) { private void registerEntries(Class<?>... basePackageClasses) {

Loading…
Cancel
Save