Fix native support for generic array parameters
This commit adds a workaround for oracle/graal#6529
triggered by b374824319.
When the GraalVM fix will have reached a wide enough
audience, it should be removed via gh-30394.
Closes gh-30407
This commit is contained in:
@@ -36,6 +36,8 @@ import org.springframework.beans.factory.aot.BeanRegistrationsAotContribution.Re
|
||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||
import org.springframework.beans.factory.support.RegisteredBean;
|
||||
import org.springframework.beans.factory.support.RootBeanDefinition;
|
||||
import org.springframework.beans.testfixture.beans.GenericBeanWithBounds;
|
||||
import org.springframework.beans.testfixture.beans.Person;
|
||||
import org.springframework.beans.testfixture.beans.RecordBean;
|
||||
import org.springframework.beans.testfixture.beans.TestBean;
|
||||
import org.springframework.beans.testfixture.beans.factory.aot.MockBeanFactoryInitializationCode;
|
||||
@@ -161,6 +163,16 @@ class BeanRegistrationsAotContributionTests {
|
||||
.accepts(this.generationContext.getRuntimeHints());
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyToRegisterReflectionHintsOnGenericBeanWithBounds() {
|
||||
RegisteredBean registeredBean = registerBean(new RootBeanDefinition(GenericBeanWithBounds.class));
|
||||
BeanDefinitionMethodGenerator generator = new BeanDefinitionMethodGenerator(this.methodGeneratorFactory,
|
||||
registeredBean, null, List.of());
|
||||
BeanRegistrationsAotContribution contribution = createContribution(GenericBeanWithBounds.class, generator);
|
||||
contribution.applyTo(this.generationContext, this.beanFactoryInitializationCode);
|
||||
assertThat(reflection().onType(Person[].class)).accepts(this.generationContext.getRuntimeHints());
|
||||
}
|
||||
|
||||
private RegisteredBean registerBean(RootBeanDefinition rootBeanDefinition) {
|
||||
String beanName = "testBean";
|
||||
this.beanFactory.registerBeanDefinition(beanName, rootBeanDefinition);
|
||||
|
||||
Reference in New Issue
Block a user