Support char primitive default values in BeanUtils.instantiateClass()
Closes gh-27390
This commit is contained in:
parent
5cc09849ce
commit
f07e6a1b9d
|
@ -87,9 +87,10 @@ public abstract class BeanUtils {
|
||||||
values.put(byte.class, (byte) 0);
|
values.put(byte.class, (byte) 0);
|
||||||
values.put(short.class, (short) 0);
|
values.put(short.class, (short) 0);
|
||||||
values.put(int.class, 0);
|
values.put(int.class, 0);
|
||||||
values.put(long.class, (long) 0);
|
values.put(long.class, 0L);
|
||||||
values.put(float.class, (float) 0);
|
values.put(float.class, 0F);
|
||||||
values.put(double.class, (double) 0);
|
values.put(double.class, 0D);
|
||||||
|
values.put(char.class, '\0');
|
||||||
DEFAULT_TYPE_VALUES = Collections.unmodifiableMap(values);
|
DEFAULT_TYPE_VALUES = Collections.unmodifiableMap(values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -98,30 +98,31 @@ class BeanUtilsTests {
|
||||||
Constructor<BeanWithPrimitiveTypes> constructor = getBeanWithPrimitiveTypesConstructor();
|
Constructor<BeanWithPrimitiveTypes> constructor = getBeanWithPrimitiveTypesConstructor();
|
||||||
|
|
||||||
assertThatExceptionOfType(BeanInstantiationException.class).isThrownBy(() ->
|
assertThatExceptionOfType(BeanInstantiationException.class).isThrownBy(() ->
|
||||||
BeanUtils.instantiateClass(constructor, null, null, null, null, null, null, null, "foo", null));
|
BeanUtils.instantiateClass(constructor, null, null, null, null, null, null, null, null, "foo", null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // gh-22531, gh-27390
|
@Test // gh-22531, gh-27390
|
||||||
void instantiateClassWithOptionalPrimitiveTypes() throws NoSuchMethodException {
|
void instantiateClassWithOptionalPrimitiveTypes() throws NoSuchMethodException {
|
||||||
Constructor<BeanWithPrimitiveTypes> constructor = getBeanWithPrimitiveTypesConstructor();
|
Constructor<BeanWithPrimitiveTypes> constructor = getBeanWithPrimitiveTypesConstructor();
|
||||||
|
|
||||||
BeanWithPrimitiveTypes bean = BeanUtils.instantiateClass(constructor, null, null, null, null, null, null, null, "foo");
|
BeanWithPrimitiveTypes bean = BeanUtils.instantiateClass(constructor, null, null, null, null, null, null, null, null, "foo");
|
||||||
|
|
||||||
assertSoftly(softly -> {
|
assertSoftly(softly -> {
|
||||||
softly.assertThat(bean.isFlag()).isEqualTo(false);
|
softly.assertThat(bean.isFlag()).isFalse();
|
||||||
softly.assertThat(bean.getByteCount()).isEqualTo((byte) 0);
|
softly.assertThat(bean.getByteCount()).isEqualTo((byte) 0);
|
||||||
softly.assertThat(bean.getShortCount()).isEqualTo((short) 0);
|
softly.assertThat(bean.getShortCount()).isEqualTo((short) 0);
|
||||||
softly.assertThat(bean.getIntCount()).isEqualTo(0);
|
softly.assertThat(bean.getIntCount()).isEqualTo(0);
|
||||||
softly.assertThat(bean.getLongCount()).isEqualTo(0L);
|
softly.assertThat(bean.getLongCount()).isEqualTo(0L);
|
||||||
softly.assertThat(bean.getFloatCount()).isEqualTo(0F);
|
softly.assertThat(bean.getFloatCount()).isEqualTo(0F);
|
||||||
softly.assertThat(bean.getDoubleCount()).isEqualTo(0D);
|
softly.assertThat(bean.getDoubleCount()).isEqualTo(0D);
|
||||||
|
softly.assertThat(bean.getCharacter()).isEqualTo('\0');
|
||||||
softly.assertThat(bean.getText()).isEqualTo("foo");
|
softly.assertThat(bean.getText()).isEqualTo("foo");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private Constructor<BeanWithPrimitiveTypes> getBeanWithPrimitiveTypesConstructor() throws NoSuchMethodException {
|
private Constructor<BeanWithPrimitiveTypes> getBeanWithPrimitiveTypesConstructor() throws NoSuchMethodException {
|
||||||
return BeanWithPrimitiveTypes.class.getConstructor(boolean.class, byte.class, short.class, int.class,
|
return BeanWithPrimitiveTypes.class.getConstructor(boolean.class, byte.class, short.class, int.class,
|
||||||
long.class, float.class, double.class, String.class);
|
long.class, float.class, double.class, char.class, String.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -659,12 +660,14 @@ class BeanUtilsTests {
|
||||||
private long longCount;
|
private long longCount;
|
||||||
private float floatCount;
|
private float floatCount;
|
||||||
private double doubleCount;
|
private double doubleCount;
|
||||||
|
private char character;
|
||||||
private String text;
|
private String text;
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public BeanWithPrimitiveTypes(boolean flag, byte byteCount, short shortCount, int intCount, long longCount,
|
public BeanWithPrimitiveTypes(boolean flag, byte byteCount, short shortCount, int intCount, long longCount,
|
||||||
float floatCount, double doubleCount, String text) {
|
float floatCount, double doubleCount, char character, String text) {
|
||||||
|
|
||||||
this.flag = flag;
|
this.flag = flag;
|
||||||
this.byteCount = byteCount;
|
this.byteCount = byteCount;
|
||||||
this.shortCount = shortCount;
|
this.shortCount = shortCount;
|
||||||
|
@ -672,6 +675,7 @@ class BeanUtilsTests {
|
||||||
this.longCount = longCount;
|
this.longCount = longCount;
|
||||||
this.floatCount = floatCount;
|
this.floatCount = floatCount;
|
||||||
this.doubleCount = doubleCount;
|
this.doubleCount = doubleCount;
|
||||||
|
this.character = character;
|
||||||
this.text = text;
|
this.text = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -703,6 +707,10 @@ class BeanUtilsTests {
|
||||||
return doubleCount;
|
return doubleCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public char getCharacter() {
|
||||||
|
return character;
|
||||||
|
}
|
||||||
|
|
||||||
public String getText() {
|
public String getText() {
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue