Lazy DynaBeans is an implementation of DynaBean, which gives the characteristics of Lazy List and Lazy Map this connects the properties of DynaClass. There are four types of Lazy DynaBeans:
LazyDynaBean: It specifies lazy DynaBean that provides dynamically modified properties of names and data types.
LazyDynaMap: It gives light weight implementation of DynaBean to map by using lazy map or list system.
LazyDynaList: It provides list for DynaBean, Map's or POJOS (Plain Old Java Object that specifies the normal java class).
LazyDynaClass: It implements the MutableDynaClass interface.
The following are the features of Lazy DynaBeans:
Lazy property addition: It is used by the Lazy beans to add property to DynaClass automatically when set method is called and it has capability to add or remove the DynaClass's properties.
Lazy List/Array growth: The Lazy list or array will grow automatically when an indexed property is not able to accommodate the index being set.
Lazy List/Array instantiation: The indexed property getter and setter methods of DynaBean's results in lazy list or array instantiation, if there is no existence of an indexed property. If an indexed property is not defined, then it will be added automatically to DynaClass and default List implementation instantiated.
Lazy Map instantiation: The mapped property getter and setter methods of DynaBean's results in lazy map instantiation, if there is no existence of mapped property. If mapped property is not defined, then it will be added automatically to DynaClass and default Map implementation instantiated.
Lazy Bean instantiation: The LazyDynaBean will instantiates the bean using a default empty constructor, if DynaClass property is defined as DynaBean or regular bean and does not exist in the DynaBean.
It is implementation of standard lazy bean which specifies the lazy DynaBean that provides dynamically modified properties of names and data types. It implements the MutableDynaClass interface by associating with the LazyDynaClass. The below simple code shows usage of LazyDynaBean by using getters or setters:
DynaBean dynaBean = new LazyDynaBean(); dynaBean.set("company", "Model"); // simple dynaBean.set("customer", "fname", "Steve"); // mapped dynaBean.set("customer", "lname", "Smith"); // mapped dynaBean.set("address", 0, addressLine1); // indexed dynaBean.set("address", 1, addressLine2); // indexed
It gives light weight implementation of DynaBean to map by using lazy map or list system and it does not associates with properties of DynaClass. It itself implements the DynaClass interface and obtain the information of DynaClass from the map contents. LazyDynaMap creates its own Map by instantiating it or can be generated around an existing Map.
The below code shows creation of new map:
DynaBean dynaBean = new LazyDynaBean(); DynaBean dynaBean = new LazyDynaMap(); // create DynaBean dynaBean.set("company", "Model"); // simple dynaBean.set("customer", "fname", "Steve"); // mapped dynaBean.set("address", 0, addressLine1); // indexed Map demoMap = dynaBean.getMap() // retrieve the Map
The below code shows use of existing Map in DynaBean:
Map demoMap = .... // exisitng Map DynaBean dynaBean = new LazyDynaMap(demoMap); // wrap Map in DynaBean dynaBean.set("ford", "raptor"); // set properties
It provides list for DynaBean, Map's or POJOS (Plain Old Java Object that specifies the normal java class). There are two main points of this class:
It automatically grows and occupies the list with DynaBean, java.util.Map or POJOS to specify the Lazy List behavior.
It provides easy way to put a Collection or Array into Lazy list and easy way to come out from the Lazy List.
It implements the MutableDynaClass interface and extends the BasicDynaClass. It can be used as default DynaClass by LazyDynaBean and with other DynaBean implementations. There is nothing to with the DynaClass when you are using the LazyDynaBean.
The below code creates the LazyDynaClass:
MutableDynaClass dynaClass = new LazyDynaClass(); // create DynaClass dynaClass.add("price", java.lang.Integer.class); // add property dynaClass.add("orders", OrderBean[].class); // add indexed property dynaClass.add("orders", java.util.TreeMapp.class); // add mapped property DynaBean dynaBean = new LazyDynaBean(dynaClass); // Create DynaBean with associated DynaClass
The below code creates the LazyDynaBean and get the DynaClass:
DynaBean dynaBean = new LazyDynaBean(); // Create LazyDynaBean MutableDynaClass dynaClass = (MutableDynaClass)dynaBean.getDynaClass(); // get DynaClass dynaClass.add("price", java.lang.Integer.class); // add property dynaClass.add("exBeans", myPackage.MyBean[].class); // add 'array' indexed property dynaClass.add("exMap", java.util.TreeMapp.class); // add mapped property