Polish
This commit is contained in:
parent
f0f7f72de9
commit
88e29689b6
|
|
@ -446,7 +446,7 @@ public final class BeanInstanceSupplier<T> extends AutowiredElementResolver impl
|
||||||
try {
|
try {
|
||||||
Class<?>[] actualParameterTypes = (!ClassUtils.isInnerClass(beanClass))
|
Class<?>[] actualParameterTypes = (!ClassUtils.isInnerClass(beanClass))
|
||||||
? this.parameterTypes : ObjectUtils.addObjectToArray(
|
? this.parameterTypes : ObjectUtils.addObjectToArray(
|
||||||
this.parameterTypes, beanClass.getEnclosingClass(), 0);
|
this.parameterTypes, beanClass.getEnclosingClass(), 0);
|
||||||
return beanClass.getDeclaredConstructor(actualParameterTypes);
|
return beanClass.getDeclaredConstructor(actualParameterTypes);
|
||||||
}
|
}
|
||||||
catch (NoSuchMethodException ex) {
|
catch (NoSuchMethodException ex) {
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ class BeanRegistrationCodeGenerator implements BeanRegistrationCode {
|
||||||
generationContext, this, this.constructorOrFactoryMethod,
|
generationContext, this, this.constructorOrFactoryMethod,
|
||||||
this.instancePostProcessors.isEmpty());
|
this.instancePostProcessors.isEmpty());
|
||||||
builder.add(this.codeFragments.generateSetBeanInstanceSupplierCode(generationContext,
|
builder.add(this.codeFragments.generateSetBeanInstanceSupplierCode(generationContext,
|
||||||
this, instanceSupplierCode, this.instancePostProcessors));
|
this, instanceSupplierCode, this.instancePostProcessors));
|
||||||
builder.add(this.codeFragments.generateReturnCode(generationContext, this));
|
builder.add(this.codeFragments.generateReturnCode(generationContext, this));
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -281,7 +281,8 @@ class ConstructorOrFactoryMethodResolver {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return switch (fallbackMode) {
|
return switch (fallbackMode) {
|
||||||
case ASSIGNABLE_ELEMENT -> isAssignable(valueType).test(extractElementType(parameterType));
|
case ASSIGNABLE_ELEMENT ->
|
||||||
|
isAssignable(valueType).test(extractElementType(parameterType));
|
||||||
case TYPE_CONVERSION -> typeConversionFallback(valueType).test(parameterType);
|
case TYPE_CONVERSION -> typeConversionFallback(valueType).test(parameterType);
|
||||||
default -> false;
|
default -> false;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -174,7 +174,7 @@ class InstanceSupplierCodeGenerator {
|
||||||
boolean hasArguments = constructor.getParameterCount() > 0;
|
boolean hasArguments = constructor.getParameterCount() > 0;
|
||||||
CodeBlock arguments = hasArguments
|
CodeBlock arguments = hasArguments
|
||||||
? new AutowiredArgumentsCodeGenerator(declaringClass, constructor)
|
? new AutowiredArgumentsCodeGenerator(declaringClass, constructor)
|
||||||
.generateCode(constructor.getParameterTypes(), parameterOffset)
|
.generateCode(constructor.getParameterTypes(), parameterOffset)
|
||||||
: NO_ARGS;
|
: NO_ARGS;
|
||||||
CodeBlock newInstance = generateNewInstanceCodeForConstructor(dependsOnBean,
|
CodeBlock newInstance = generateNewInstanceCodeForConstructor(dependsOnBean,
|
||||||
declaringClass, arguments);
|
declaringClass, arguments);
|
||||||
|
|
@ -267,7 +267,7 @@ class InstanceSupplierCodeGenerator {
|
||||||
boolean hasArguments = factoryMethod.getParameterCount() > 0;
|
boolean hasArguments = factoryMethod.getParameterCount() > 0;
|
||||||
CodeBlock arguments = hasArguments
|
CodeBlock arguments = hasArguments
|
||||||
? new AutowiredArgumentsCodeGenerator(declaringClass, factoryMethod)
|
? new AutowiredArgumentsCodeGenerator(declaringClass, factoryMethod)
|
||||||
.generateCode(factoryMethod.getParameterTypes())
|
.generateCode(factoryMethod.getParameterTypes())
|
||||||
: NO_ARGS;
|
: NO_ARGS;
|
||||||
CodeBlock newInstance = generateNewInstanceCodeForMethod(dependsOnBean,
|
CodeBlock newInstance = generateNewInstanceCodeForMethod(dependsOnBean,
|
||||||
declaringClass, factoryMethodName, arguments);
|
declaringClass, factoryMethodName, arguments);
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ class AutowiredArgumentsCodeGeneratorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void generateCodeWhenMulitpleArguments() {
|
void generateCodeWhenMultipleArguments() {
|
||||||
Method method = ReflectionUtils.findMethod(UnambiguousMethods.class, "three",
|
Method method = ReflectionUtils.findMethod(UnambiguousMethods.class, "three",
|
||||||
String.class, Integer.class, Boolean.class);
|
String.class, Integer.class, Boolean.class);
|
||||||
AutowiredArgumentsCodeGenerator generator = new AutowiredArgumentsCodeGenerator(
|
AutowiredArgumentsCodeGenerator generator = new AutowiredArgumentsCodeGenerator(
|
||||||
|
|
@ -62,7 +62,7 @@ class AutowiredArgumentsCodeGeneratorTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void generateCodeWhenMulitpleArgumentsWithOffset() {
|
void generateCodeWhenMultipleArgumentsWithOffset() {
|
||||||
Constructor<?> constructor = Outer.Nested.class.getDeclaredConstructors()[0];
|
Constructor<?> constructor = Outer.Nested.class.getDeclaredConstructors()[0];
|
||||||
AutowiredArgumentsCodeGenerator generator = new AutowiredArgumentsCodeGenerator(
|
AutowiredArgumentsCodeGenerator generator = new AutowiredArgumentsCodeGenerator(
|
||||||
Outer.Nested.class, constructor);
|
Outer.Nested.class, constructor);
|
||||||
|
|
|
||||||
|
|
@ -62,8 +62,8 @@ class AutowiredFieldValueResolverTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void resolveWhenRegisteredBeanIsNullThrowsException() {
|
void resolveWhenRegisteredBeanIsNullThrowsException() {
|
||||||
assertThatIllegalArgumentException().isThrownBy(
|
assertThatIllegalArgumentException().isThrownBy(() ->
|
||||||
() -> AutowiredFieldValueResolver.forField("string").resolve(null))
|
AutowiredFieldValueResolver.forField("string").resolve(null))
|
||||||
.withMessage("'registeredBean' must not be null");
|
.withMessage("'registeredBean' must not be null");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ class AutowiredMethodArgumentsResolverTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void resolveRequiredWithMultipleDependencesReturnsValue() {
|
void resolveRequiredWithMultipleDependenciesReturnsValue() {
|
||||||
Environment environment = mock(Environment.class);
|
Environment environment = mock(Environment.class);
|
||||||
this.beanFactory.registerSingleton("test", "testValue");
|
this.beanFactory.registerSingleton("test", "testValue");
|
||||||
this.beanFactory.registerSingleton("environment", environment);
|
this.beanFactory.registerSingleton("environment", environment);
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ class BeanDefinitionMethodGeneratorFactoryTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void getBeanDefinitionMethodGeneratorWhenRegisteredBeanIsAotProcessorFilteresBean() {
|
void getBeanDefinitionMethodGeneratorWhenRegisteredBeanIsAotProcessorFiltersBean() {
|
||||||
MockSpringFactoriesLoader springFactoriesLoader = new MockSpringFactoriesLoader();
|
MockSpringFactoriesLoader springFactoriesLoader = new MockSpringFactoriesLoader();
|
||||||
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
|
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
|
||||||
beanFactory.registerBeanDefinition("test1", BeanDefinitionBuilder
|
beanFactory.registerBeanDefinition("test1", BeanDefinitionBuilder
|
||||||
|
|
@ -127,7 +127,7 @@ class BeanDefinitionMethodGeneratorFactoryTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void getBeanDefinitionMethodGeneratorWhenRegisteredBeanIsAotProcessorAndFilteresBeanBeanRegistrationExcludeFilterDoesNotFilterBean() {
|
void getBeanDefinitionMethodGeneratorWhenRegisteredBeanIsAotProcessorAndFiltersBeanBeanRegistrationExcludeFilterDoesNotFilterBean() {
|
||||||
MockSpringFactoriesLoader springFactoriesLoader = new MockSpringFactoriesLoader();
|
MockSpringFactoriesLoader springFactoriesLoader = new MockSpringFactoriesLoader();
|
||||||
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
|
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
|
||||||
beanFactory.registerBeanDefinition("test", BeanDefinitionBuilder
|
beanFactory.registerBeanDefinition("test", BeanDefinitionBuilder
|
||||||
|
|
@ -179,7 +179,7 @@ class BeanDefinitionMethodGeneratorFactoryTests {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static class TestBeanFactoryInitializationAotProcessorBean implements BeanFactoryInitializationAotProcessor{
|
static class TestBeanFactoryInitializationAotProcessorBean implements BeanFactoryInitializationAotProcessor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BeanFactoryInitializationAotContribution processAheadOfTime(ConfigurableListableBeanFactory beanFactory) {
|
public BeanFactoryInitializationAotContribution processAheadOfTime(ConfigurableListableBeanFactory beanFactory) {
|
||||||
|
|
|
||||||
|
|
@ -55,23 +55,21 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||||
*/
|
*/
|
||||||
class BeanRegistrationsAotContributionTests {
|
class BeanRegistrationsAotContributionTests {
|
||||||
|
|
||||||
private final MockSpringFactoriesLoader springFactoriesLoader;
|
private final DefaultListableBeanFactory beanFactory;
|
||||||
|
|
||||||
private DefaultListableBeanFactory beanFactory;
|
|
||||||
|
|
||||||
private TestGenerationContext generationContext;
|
|
||||||
|
|
||||||
private final BeanDefinitionMethodGeneratorFactory methodGeneratorFactory;
|
private final BeanDefinitionMethodGeneratorFactory methodGeneratorFactory;
|
||||||
|
|
||||||
|
private TestGenerationContext generationContext;
|
||||||
|
|
||||||
private MockBeanFactoryInitializationCode beanFactoryInitializationCode;
|
private MockBeanFactoryInitializationCode beanFactoryInitializationCode;
|
||||||
|
|
||||||
|
|
||||||
BeanRegistrationsAotContributionTests() {
|
BeanRegistrationsAotContributionTests() {
|
||||||
this.springFactoriesLoader = new MockSpringFactoriesLoader();
|
MockSpringFactoriesLoader springFactoriesLoader = new MockSpringFactoriesLoader();
|
||||||
this.beanFactory = new DefaultListableBeanFactory();
|
this.beanFactory = new DefaultListableBeanFactory();
|
||||||
this.generationContext = new TestGenerationContext();
|
|
||||||
this.methodGeneratorFactory = new BeanDefinitionMethodGeneratorFactory(
|
this.methodGeneratorFactory = new BeanDefinitionMethodGeneratorFactory(
|
||||||
new AotFactoriesLoader(this.beanFactory, this.springFactoriesLoader));
|
new AotFactoriesLoader(this.beanFactory, springFactoriesLoader));
|
||||||
|
this.generationContext = new TestGenerationContext();
|
||||||
this.beanFactoryInitializationCode = new MockBeanFactoryInitializationCode(this.generationContext);
|
this.beanFactoryInitializationCode = new MockBeanFactoryInitializationCode(this.generationContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -305,7 +305,7 @@ class ConstructorOrFactoryMethodResolverTests {
|
||||||
void beanDefinitionWithClassArrayFactoryMethodArgAndAnotherMatchingConstructor() {
|
void beanDefinitionWithClassArrayFactoryMethodArgAndAnotherMatchingConstructor() {
|
||||||
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
|
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
|
||||||
BeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(
|
BeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(
|
||||||
ClassArrayFactoryMethodSampleWithAnotherFactoryMethod.class.getName())
|
ClassArrayFactoryMethodSampleWithAnotherFactoryMethod.class.getName())
|
||||||
.setFactoryMethod("of").addConstructorArgValue("test1")
|
.setFactoryMethod("of").addConstructorArgValue("test1")
|
||||||
.getBeanDefinition();
|
.getBeanDefinition();
|
||||||
Executable executable = resolve(beanFactory, beanDefinition);
|
Executable executable = resolve(beanFactory, beanDefinition);
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ class DefaultBeanRegistrationCodeFragmentsTests {
|
||||||
RegisteredBean registeredBean = registerTestBean(SimpleBean.class);
|
RegisteredBean registeredBean = registerTestBean(SimpleBean.class);
|
||||||
assertThat(createInstance(registeredBean).getTarget(registeredBean,
|
assertThat(createInstance(registeredBean).getTarget(registeredBean,
|
||||||
PrivilegedTestBeanFactoryBean.class.getDeclaredConstructors()[0])).isEqualTo(
|
PrivilegedTestBeanFactoryBean.class.getDeclaredConstructors()[0])).isEqualTo(
|
||||||
PrivilegedTestBeanFactoryBean.class);
|
PrivilegedTestBeanFactoryBean.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ public enum EnumWithClassBody {
|
||||||
* With class body.
|
* With class body.
|
||||||
*/
|
*/
|
||||||
TWO {
|
TWO {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "2";
|
return "2";
|
||||||
|
|
|
||||||
|
|
@ -147,8 +147,7 @@ class InstanceSupplierCodeGeneratorTests {
|
||||||
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
|
compile(beanFactory, beanDefinition, (instanceSupplier, compiled) -> {
|
||||||
NumberHolder<?> bean = getBean(beanFactory, beanDefinition, instanceSupplier);
|
NumberHolder<?> bean = getBean(beanFactory, beanDefinition, instanceSupplier);
|
||||||
assertThat(bean).isInstanceOf(NumberHolder.class);
|
assertThat(bean).isInstanceOf(NumberHolder.class);
|
||||||
assertThat(bean).extracting("number").isNull(); // No property
|
assertThat(bean).extracting("number").isNull(); // No property actually set
|
||||||
// actually set
|
|
||||||
assertThat(compiled.getSourceFile()).contains("NumberHolderFactoryBean::new");
|
assertThat(compiled.getSourceFile()).contains("NumberHolderFactoryBean::new");
|
||||||
});
|
});
|
||||||
assertThat(getReflectionHints().getTypeHint(NumberHolderFactoryBean.class))
|
assertThat(getReflectionHints().getTypeHint(NumberHolderFactoryBean.class))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue