constructor argument type matching supports arrays and simple class names now (SPR-5844)
This commit is contained in:
@@ -158,6 +158,10 @@
|
||||
<constructor-arg value="false"/>
|
||||
</bean>
|
||||
|
||||
<bean id="nan" class="java.lang.Double" factory-method="valueOf">
|
||||
<constructor-arg value="NaN" type="double"/>
|
||||
</bean>
|
||||
|
||||
<bean id="beanWithDoubleBoolean" class="org.springframework.beans.factory.xml.XmlBeanFactoryTests$DoubleBooleanConstructorBean" autowire="constructor" scope="prototype">
|
||||
<constructor-arg type="java.lang.Boolean"><value>true</value></constructor-arg>
|
||||
</bean>
|
||||
@@ -166,4 +170,20 @@
|
||||
<constructor-arg index="1"><value>true</value></constructor-arg>
|
||||
</bean>
|
||||
|
||||
<bean id="constructorArray" class="org.springframework.beans.factory.xml.XmlBeanFactoryTests$ConstructorArrayTestBean">
|
||||
<constructor-arg type="int[]">
|
||||
<array value-type="int">
|
||||
<value>1</value>
|
||||
</array>
|
||||
</constructor-arg>
|
||||
</bean>
|
||||
|
||||
<bean id="indexedConstructorArray" class="org.springframework.beans.factory.xml.XmlBeanFactoryTests$ConstructorArrayTestBean">
|
||||
<constructor-arg index="0" type="int[]">
|
||||
<array value-type="int">
|
||||
<value>1</value>
|
||||
</array>
|
||||
</constructor-arg>
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
|
||||
@@ -1363,6 +1363,22 @@ public final class XmlBeanFactoryTests {
|
||||
assertEquals(Boolean.TRUE, bean.boolean2);
|
||||
}
|
||||
|
||||
public @Test void testPrimitiveConstructorArray() {
|
||||
XmlBeanFactory xbf = new XmlBeanFactory(CONSTRUCTOR_ARG_CONTEXT);
|
||||
ConstructorArrayTestBean bean = (ConstructorArrayTestBean) xbf.getBean("constructorArray");
|
||||
assertTrue(bean.array instanceof int[]);
|
||||
assertEquals(1, ((int[]) bean.array).length);
|
||||
assertEquals(1, ((int[]) bean.array)[0]);
|
||||
}
|
||||
|
||||
public @Test void testIndexedPrimitiveConstructorArray() {
|
||||
XmlBeanFactory xbf = new XmlBeanFactory(CONSTRUCTOR_ARG_CONTEXT);
|
||||
ConstructorArrayTestBean bean = (ConstructorArrayTestBean) xbf.getBean("indexedConstructorArray");
|
||||
assertTrue(bean.array instanceof int[]);
|
||||
assertEquals(1, ((int[]) bean.array).length);
|
||||
assertEquals(1, ((int[]) bean.array)[0]);
|
||||
}
|
||||
|
||||
public @Test void testWithDuplicateName() throws Exception {
|
||||
try {
|
||||
new XmlBeanFactory(TEST_WITH_DUP_NAMES_CONTEXT);
|
||||
@@ -1590,6 +1606,24 @@ public final class XmlBeanFactoryTests {
|
||||
}
|
||||
|
||||
|
||||
public static class ConstructorArrayTestBean {
|
||||
|
||||
public final Object array;
|
||||
|
||||
public ConstructorArrayTestBean(int[] array) {
|
||||
this.array = array;
|
||||
}
|
||||
|
||||
public ConstructorArrayTestBean(float[] array) {
|
||||
this.array = array;
|
||||
}
|
||||
|
||||
public ConstructorArrayTestBean(short[] array) {
|
||||
this.array = array;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static class WrappingPostProcessor implements BeanPostProcessor {
|
||||
|
||||
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
|
||||
|
||||
Reference in New Issue
Block a user