Skip to content

Instantiate beans and set their properties (New in 0.17.0)

Holger Thurow edited this page Nov 25, 2019 · 2 revisions

Thanks to Jarrad Waterloo you can now not only set bean properties of type String but also of many more types. See this bean and this properties file for all supported types. To make this work you have to declare the bean's type and the converter to use in the properties file:

type = org.osjava.sj.BeanWithSupportedSetters
converter = org.osjava.sj.loader.convert.BeanConverter

What you will get is the bean with all properties set as specified:

ctx = new InitialContext();
final BeanWithSupportedSetters bean = (BeanWithSupportedSetters) ctx.lookup("java:comp/env/bean");
assert bean != null;
assertEquals("Hello World", bean.getString());
assertEquals("Hello World", bean.getCharSequence());
assertEquals(true, bean.getBooleanPrimitive());
assertEquals(false, bean.getBooleanObject());
assertEquals(Byte.parseByte("5"), bean.getBytePrimitive());
assertEquals(new Byte("7"), bean.getByteObject());
assertEquals('x', bean.getCharacterPrimitive());
assertEquals(new Character('Z'), bean.getCharacterObject());
assertEquals(Short.parseShort("10"), bean.getShortPrimitive());
assertEquals(new Short("11"), bean.getShortObject());
assertEquals(Integer.parseInt("100"), bean.getIntegerPrimitive());
assertEquals(new Integer("101"), bean.getIntegerObject());
assertEquals(Long.parseLong("1000"), bean.getLongPrimitive());
assertEquals(new Long("1001"), bean.getLongObject());
assertEquals(Float.parseFloat("2000"), bean.getFloatPrimitive(), 0);
assertEquals(new Float("2001"), bean.getFloatObject());
assertEquals(Double.parseDouble("3000"), bean.getDoublePrimitive(), 0);
assertEquals(new Double("3001"), bean.getDoubleObject());
assertEquals(new java.math.BigDecimal("4000000"), bean.getBigDecimal());
assertEquals(new java.math.BigInteger("4000001"), bean.getBigInteger());
assertEquals(java.util.Locale.US, bean.getLocale());
assertEquals(java.math.RoundingMode.HALF_DOWN, bean.getRoundingMode());
assertEquals((new SimpleDateFormat("yyyy-MM-dd'T'HH:mm")).parse("2017-11-21T08:30"), bean.getUtilDate());
assertEquals(new java.sql.Date((new SimpleDateFormat("yyyy-MM-dd")).parse("2017-11-21").getTime()), bean.getSqlDate());
assertEquals(new java.sql.Time((new SimpleDateFormat("HH:mm")).parse("08:30").getTime()), bean.getTime());
assertEquals(new java.sql.Timestamp((new SimpleDateFormat("yyyy-MM-dd'T'HH:mm")).parse("2017-11-21T08:30").getTime()), bean.getTimestamp());

Clone this wiki locally