3.18. Creating a Dynamic Bean
Problem
You need to be able to create a bean dynamically at runtime.
Solution
Use a DynaBean. You can create a
DynaBean with an arbitrary set of properties at
runtime, and the resulting DynaBean object will
function properly with all Commons BeanUtils utilities, such as
PropertyUtils. The following example demonstrates
the use of a BasicDynaBean to model a politician:
import java.util.*;
import org.apache.commons.beanutils.*;
DynaProperty[] beanProperties = new DynaProperty[]{
new DynaProperty("name", String.class),
new DynaProperty("party", Party.class),
new DynaProperty("votes", Long.class)
};
BasicDynaClass politicianClass =
new BasicDynaClass("politician", BasicDynaBean.class, props);
DynaBean politician = politicianClass.newInstance( );
// Set the properties via DynaBean
politician.set( "name", "Tony Blair" );
politician.set( "party", Party.LABOUR );
politician.set( "votes", new Long( 50000000 ) );
// Set the properties with PropertyUtils
PropertyUtils.setProperty( politician, "name", "John Major" );
PropertyUtils.setProperty( politician, "party", Party.TORY );
PropertyUtils.setProperty( politician, "votes", new Long( 50000000 ) );In this code, the properties of the politician
bean are set using two different methods. The first method is to
manipulate properties via the
DynaBean
interface, and the second method involves using
PropertyUtils.setProperty( ). Both regions of code
accomplish the same goal, and PropertyUtils was included to emphasize ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access