From 305055d6b1a42c7795891b7b389936ed80270505 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Sun, 5 Jun 2022 18:59:02 -0700 Subject: [PATCH] Pass GenerationContext to customizeBeanRegistrationCodeFragments Update `customizeBeanRegistrationCodeFragments` so that it can access the `GenerationContext`. See gh-28557 --- .../beans/factory/aot/BeanDefinitionMethodGenerator.java | 7 ++++--- .../beans/factory/aot/BeanRegistrationAotContribution.java | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGenerator.java b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGenerator.java index 37d75fd0cb3..8796be2c643 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGenerator.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGenerator.java @@ -88,7 +88,8 @@ class BeanDefinitionMethodGenerator { MethodReference generateBeanDefinitionMethod(GenerationContext generationContext, String featureNamePrefix, BeanRegistrationsCode beanRegistrationsCode) { - BeanRegistrationCodeFragments codeFragments = getCodeFragments(beanRegistrationsCode, featureNamePrefix); + BeanRegistrationCodeFragments codeFragments = getCodeFragments(generationContext, + beanRegistrationsCode, featureNamePrefix); Class target = codeFragments.getTarget(this.registeredBean, this.constructorOrFactoryMethod); if (!target.getName().startsWith("java.")) { @@ -113,14 +114,14 @@ class BeanDefinitionMethodGenerator { generatedMethod.getName().toString()); } - private BeanRegistrationCodeFragments getCodeFragments( + private BeanRegistrationCodeFragments getCodeFragments(GenerationContext generationContext, BeanRegistrationsCode beanRegistrationsCode, String featureNamePrefix) { BeanRegistrationCodeFragments codeFragments = new DefaultBeanRegistrationCodeFragments( beanRegistrationsCode, this.registeredBean, this.methodGeneratorFactory, featureNamePrefix); for (BeanRegistrationAotContribution aotContribution : this.aotContributions) { - codeFragments = aotContribution.customizeBeanRegistrationCodeFragments(codeFragments); + codeFragments = aotContribution.customizeBeanRegistrationCodeFragments(generationContext, codeFragments); } return codeFragments; } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java index 6c5a96cf118..6b6bdee0521 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java @@ -36,12 +36,13 @@ public interface BeanRegistrationAotContribution { * Customize the {@link BeanRegistrationCodeFragments} that will be used to * generate the bean registration code. Custom code fragments can be used if * default code generation isn't suitable. + * @param generationContext the generation context * @param codeFragments the existing code fragments * @return the code fragments to use, may be the original instance or a * wrapper */ default BeanRegistrationCodeFragments customizeBeanRegistrationCodeFragments( - BeanRegistrationCodeFragments codeFragments) { + GenerationContext generationContext, BeanRegistrationCodeFragments codeFragments) { return codeFragments; } @@ -70,7 +71,7 @@ public interface BeanRegistrationAotContribution { @Override public BeanRegistrationCodeFragments customizeBeanRegistrationCodeFragments( - BeanRegistrationCodeFragments codeFragments) { + GenerationContext generationContext, BeanRegistrationCodeFragments codeFragments) { return beanRegistrationCodeFragmentsCustomizer.apply(codeFragments); }