|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object net.sf.beanlib.provider.replicator.ReplicatorTemplate net.sf.beanlib.provider.BeanTransformer
@NotThreadSafe public class BeanTransformer
Default implementation of BeanTransformerSpi
.
A Bean Transformer can be used to transform object input typically in the form of a property
that follows the JavaBean getter/setter convention, on a best attempt basis,
into an output object typically used to populate the corresponding property of a target JavaBean.
This class extends ReplicatorTemplate
as the implementation typically
transforms a JavaBean property by replicating it into a separate instance.
The replication is typically recursive in that the whole object graph of the input object is
replicated into an equivalent output object graph, resolving circular references as necessary.
However, the exact behavior of the replication process including
BeanPopulatorBaseSpi
are available, as
the replication of JavaBean properties inevitably involves bean population.
Type | Configuration method |
---|---|
#initImmutableReplicatableFactory(ImmutableReplicatorSpi.Factory) |
|
#initCollectionReplicatableFactory(CollectionReplicatorSpi.Factory) |
|
#initMapReplicatableFactory(MapReplicatorSpi.Factory) |
|
#initArrayReplicatableFactory(ArrayReplicatorSpi.Factory) |
|
#initBlobReplicatableFactory(BlobReplicatorSpi.Factory) |
|
#initDateReplicatableFactory(DateReplicatorSpi.Factory) |
|
#initBeanReplicatableFactory(BeanReplicatorSpi.Factory)) |
new BeanTransformer(CustomBeanTransformerSpi.Factory...)
.
CustomBeanTransformerSpi
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface net.sf.beanlib.spi.BeanTransformerSpi |
---|
BeanTransformerSpi.Factory |
Field Summary | |
---|---|
private ArrayReplicatorSpi |
arrayReplicatable
Replicator for arrays. |
private BeanPopulatorBaseConfig |
baseConfig
Used to contain all the configuration options as a single configuration object. |
private BeanPopulatorSpi.Factory |
beanPopulatorFactory
Bean populator factory, which is used to create a bean populator which can then be used to determine whether a specific JavaBean property should be propagated from a source bean to a target bean. |
private BeanReplicatorSpi |
beanReplicatable
Replicator for JavaBeans. |
private BlobReplicatorSpi |
blobReplicatable
Replicator for blobs. |
private CalendarReplicatorSpi |
calendarReplicatable
Replicator for calendars. |
private Map<Object,Object> |
clonedMap
Used to contains those objects that have been replicated. |
private CollectionReplicatorSpi |
collectionReplicatable
Replicator for collections. |
private CustomBeanTransformerSpi |
customTransformer
Custom Transformer. |
private DateReplicatorSpi |
dateReplicatable
Replicator for dates. |
private ImmutableReplicatorSpi |
immutableReplicatable
Replicator for immutables. |
private MapReplicatorSpi |
mapReplicatable
Replicator for maps. |
Fields inherited from class net.sf.beanlib.provider.replicator.ReplicatorTemplate |
---|
log |
Constructor Summary | |
---|---|
|
BeanTransformer()
Constructs with the default BeanPopulator.factory . |
protected |
BeanTransformer(BeanPopulatorSpi.Factory beanPopulatorFactory)
Constructs with the given bean populator factory, which is used to create a bean populator which can then be used to determine whether a specific JavaBean property should be propagated from a source bean to a target bean. |
|
BeanTransformer(CustomBeanTransformerSpi.Factory... customBeanTransformerFactories)
Convenient constructor that both defaults to use BeanPopulator.factory ,
and allows plugging in one or more custom bean transformer factories
that will be chained together. |
Method Summary | ||
---|---|---|
ArrayReplicatorSpi |
getArrayReplicatable()
Returns the current replicator for array. |
|
BeanPopulationExceptionHandler |
getBeanPopulationExceptionHandler()
Returns the exception handler configured for bean population. |
|
BeanPopulatorBaseConfig |
getBeanPopulatorBaseConfig()
Returns all the configuration options as a single configuration object. |
|
BeanPopulatorSpi.Factory |
getBeanPopulatorSpiFactory()
Returns the current bean populator factory, which is used to create a bean populator which can then be used to determine whether a specific JavaBean property should be propagated from a source bean to a target bean. |
|
BeanReplicatorSpi |
getBeanReplicatable()
Returns the current replicator for JavaBeans. |
|
BeanSourceHandler |
getBeanSourceHandler()
Returns the call-back configured that would be invoked after the property value has been retrieved from the source bean, but before being propagated across to the target bean. |
|
BlobReplicatorSpi |
getBlobReplicatable()
Returns the current replicator for blobs. |
|
CalendarReplicatorSpi |
getCalendarReplicatable()
Returns the current replicator for calendars. |
|
|
getClonedMap()
Returns a map of those (from-to) objects that have been replicated. |
|
CollectionReplicatorSpi |
getCollectionReplicatable()
Returns the current replicator for collections. |
|
CustomBeanTransformerSpi |
getCustomBeanTransformer()
Returns the customer bean transformer, if any. |
|
DateReplicatorSpi |
getDateReplicatable()
Returns the current replicator for dates. |
|
DetailedPropertyFilter |
getDetailedPropertyFilter()
Returns the detailed property filter configured. |
|
ImmutableReplicatorSpi |
getImmutableReplicatable()
Returns the current replicator for immutables. |
|
MapReplicatorSpi |
getMapReplicatable()
Returns the current replicator for maps. |
|
PropertyFilter |
getPropertyFilter()
Returns the property filter configured. |
|
BeanMethodFinder |
getReaderMethodFinder()
Returns the finder configured to find the property getter methods of a source JavaBean. |
|
BeanMethodCollector |
getSetterMethodCollector()
Returns the collector configured to collect the property setter methods of a target JavaBean. |
|
BeanTransformer |
initArrayReplicatableFactory(ArrayReplicatorSpi.Factory arrayReplicatableFactory)
Used to initialize the replicator factory for arrays. |
|
BeanTransformer |
initBeanPopulationExceptionHandler(BeanPopulationExceptionHandler beanPopulationExceptionHandler)
Used to configure a handler to handle any exception thrown. |
|
BeanTransformerSpi |
initBeanPopulatorBaseConfig(BeanPopulatorBaseConfig baseConfig)
Used to conveniently provide all the other configuration options as a single configuration object. |
|
BeanTransformer |
initBeanReplicatableFactory(BeanReplicatorSpi.Factory objectReplicatableFactory)
Used to initialize the replicator factory for JavaBean's. |
|
BeanTransformer |
initBeanSourceHandler(BeanSourceHandler beanSourceHandler)
Used to configure a call-back (to produce whatever side-effects deemed necessary) that is invoked after the property value has been retrieved from the source bean, but before being propagated across to the target bean. |
|
BeanTransformer |
initBlobReplicatableFactory(BlobReplicatorSpi.Factory blobReplicatableFactory)
Used to initialize the replicator factory for blob's. |
|
BeanTransformerSpi |
initCalendarReplicatableFactory(CalendarReplicatorSpi.Factory calendarReplicatableFactory)
Used to initialize the replicator factory for calendars. |
|
BeanTransformer |
initCollectionReplicatableFactory(CollectionReplicatorSpi.Factory factory)
Used to initialize the replicator factory for collections. |
|
BeanTransformer |
initCustomTransformerFactory(CustomBeanTransformerSpi.Factory customTransformer)
Initializes with a custom transformer factory. |
|
BeanTransformerSpi |
initDateReplicatableFactory(DateReplicatorSpi.Factory dateReplicatableFactory)
Used to initialize the replicator factory for dates. |
|
BeanTransformer |
initDebug(boolean debug)
Used to control whether debug messages should be logged. |
|
BeanTransformer |
initDetailedPropertyFilter(DetailedPropertyFilter detailedPropertyFilter)
Used to configure a detailed prperty filter (which has more context information) to determine whether a specific property should be propagated from the source bean to the target bean. |
|
BeanTransformer |
initImmutableReplicatableFactory(ImmutableReplicatorSpi.Factory immutableReplicatableFactory)
Used to initialize the replicator factory for immutables. |
|
BeanTransformer |
initMapReplicatableFactory(MapReplicatorSpi.Factory factory)
Used to initialize the replicator factory for maps. |
|
BeanTransformer |
initPropertyFilter(PropertyFilter propertyFilter)
Used to configure a property filter to determine whether a specific property should be propagated from a source bean to a target bean. |
|
BeanTransformer |
initReaderMethodFinder(BeanMethodFinder readerMethodFinder)
Used to configure a finder to find the property getter methods of a source JavaBean. |
|
BeanTransformer |
initSetterMethodCollector(BeanMethodCollector setterMethodCollector)
Used to configure a collector to collect the property setter methods of a target JavaBean. |
|
boolean |
isDebug()
Returns true if debug message logging is on; false otherwise. |
|
void |
reset()
Reset the internal identity maps used to contain objects that have been replicated. |
|
|
transform(Object from,
Class<T> toClass,
PropertyInfo propertyInfo)
Returns an object transformed from the input object with the given target class. |
Methods inherited from class net.sf.beanlib.provider.replicator.ReplicatorTemplate |
---|
chooseClass, containsTargetCloned, createToInstance, createToInstance, createToInstanceWithComparator, getCustomerBeanTransformer, getTargetCloned, newInstanceAsPrivileged, populateBean, putTargetCloned, replicate, replicate, replicateByBeanReplicatable, unenhanceObject |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private final BeanPopulatorSpi.Factory beanPopulatorFactory
private Map<Object,Object> clonedMap
private BeanPopulatorBaseConfig baseConfig
private CustomBeanTransformerSpi customTransformer
private ImmutableReplicatorSpi immutableReplicatable
private CollectionReplicatorSpi collectionReplicatable
private MapReplicatorSpi mapReplicatable
private ArrayReplicatorSpi arrayReplicatable
private BlobReplicatorSpi blobReplicatable
private DateReplicatorSpi dateReplicatable
private CalendarReplicatorSpi calendarReplicatable
private BeanReplicatorSpi beanReplicatable
Constructor Detail |
---|
public BeanTransformer()
BeanPopulator.factory
.
public BeanTransformer(CustomBeanTransformerSpi.Factory... customBeanTransformerFactories)
BeanPopulator.factory
,
and allows plugging in one or more custom bean transformer factories
that will be chained together.
ChainedCustomBeanTransformer
protected BeanTransformer(BeanPopulatorSpi.Factory beanPopulatorFactory)
Method Detail |
---|
public BeanPopulatorSpi.Factory getBeanPopulatorSpiFactory()
BeanTransformerSpi
getBeanPopulatorSpiFactory
in interface BeanTransformerSpi
public final void reset()
BeanTransformerSpi
reset
in interface BeanTransformerSpi
public final <T> T transform(Object from, Class<T> toClass, PropertyInfo propertyInfo)
Transformable
transform
in interface Transformable
transform
in class ReplicatorTemplate
from
- the input object to be transformed.
If propertyInfo is non-null, the input object is a JavaBean property value.toClass
- the target class to be transformed to.propertyInfo
- If null, it means the in object is a root level object.
Otherwise, propertyInfo contains information about the input object
as a java bean property value to be transformed.
public final BeanTransformer initCustomTransformerFactory(CustomBeanTransformerSpi.Factory customTransformer)
BeanTransformerSpi
initCustomTransformerFactory
in interface BeanTransformerSpi
public final BeanTransformer initPropertyFilter(PropertyFilter propertyFilter)
BeanPopulatorBaseSpi
initPropertyFilter
in interface BeanPopulatorBaseSpi
initPropertyFilter
in interface BeanTransformerSpi
propertyFilter
- is similar to DetailedPropertyFilter
but with a simpler API
that is used to control whether a specific property should be propagated
from a source bean to a target bean.
public final BeanTransformer initBeanSourceHandler(BeanSourceHandler beanSourceHandler)
BeanPopulatorBaseSpi
initBeanSourceHandler
in interface BeanPopulatorBaseSpi
initBeanSourceHandler
in interface BeanTransformerSpi
beanSourceHandler
- can be used to act as a call-back
(to produce whatever side-effects deemed necessary)
after the property value has been retrieved from the source bean,
but before being propagated across to the target bean.
public final BeanTransformer initDebug(boolean debug)
BeanPopulatorBaseSpi
initDebug
in interface BeanPopulatorBaseSpi
initDebug
in interface BeanTransformerSpi
public final BeanTransformer initDetailedPropertyFilter(DetailedPropertyFilter detailedPropertyFilter)
BeanPopulatorBaseSpi
initDetailedPropertyFilter
in interface BeanPopulatorBaseSpi
initDetailedPropertyFilter
in interface BeanTransformerSpi
detailedPropertyFilter
- is used to control whether a specific property
should be propagated from the source bean to the target bean.
public final BeanTransformer initReaderMethodFinder(BeanMethodFinder readerMethodFinder)
BeanPopulatorBaseSpi
initReaderMethodFinder
in interface BeanPopulatorBaseSpi
initReaderMethodFinder
in interface BeanTransformerSpi
readerMethodFinder
- can be used to find the property getter methods of a source JavaBean.
public final BeanTransformer initSetterMethodCollector(BeanMethodCollector setterMethodCollector)
BeanPopulatorBaseSpi
initSetterMethodCollector
in interface BeanPopulatorBaseSpi
initSetterMethodCollector
in interface BeanTransformerSpi
setterMethodCollector
- can be used to collect the property setter methods of a target JavaBean.
public BeanTransformer initCollectionReplicatableFactory(CollectionReplicatorSpi.Factory factory)
BeanTransformerSpi
initCollectionReplicatableFactory
in interface BeanTransformerSpi
public CollectionReplicatorSpi getCollectionReplicatable()
BeanTransformerSpi
getCollectionReplicatable
in interface BeanTransformerSpi
public BeanTransformer initMapReplicatableFactory(MapReplicatorSpi.Factory factory)
BeanTransformerSpi
initMapReplicatableFactory
in interface BeanTransformerSpi
public MapReplicatorSpi getMapReplicatable()
BeanTransformerSpi
getMapReplicatable
in interface BeanTransformerSpi
public <K,V> Map<K,V> getClonedMap()
BeanTransformerSpi
getClonedMap
in interface BeanTransformerSpi
public BeanTransformer initImmutableReplicatableFactory(ImmutableReplicatorSpi.Factory immutableReplicatableFactory)
BeanTransformerSpi
initImmutableReplicatableFactory
in interface BeanTransformerSpi
public ImmutableReplicatorSpi getImmutableReplicatable()
BeanTransformerSpi
getImmutableReplicatable
in interface BeanTransformerSpi
public BeanTransformer initArrayReplicatableFactory(ArrayReplicatorSpi.Factory arrayReplicatableFactory)
BeanTransformerSpi
initArrayReplicatableFactory
in interface BeanTransformerSpi
public ArrayReplicatorSpi getArrayReplicatable()
BeanTransformerSpi
getArrayReplicatable
in interface BeanTransformerSpi
public BeanTransformer initBlobReplicatableFactory(BlobReplicatorSpi.Factory blobReplicatableFactory)
BeanTransformerSpi
initBlobReplicatableFactory
in interface BeanTransformerSpi
public BlobReplicatorSpi getBlobReplicatable()
BeanTransformerSpi
getBlobReplicatable
in interface BeanTransformerSpi
public BeanTransformer initBeanReplicatableFactory(BeanReplicatorSpi.Factory objectReplicatableFactory)
BeanTransformerSpi
initBeanReplicatableFactory
in interface BeanTransformerSpi
public BeanReplicatorSpi getBeanReplicatable()
BeanTransformerSpi
getBeanReplicatable
in interface BeanTransformerSpi
public BeanTransformerSpi initDateReplicatableFactory(DateReplicatorSpi.Factory dateReplicatableFactory)
BeanTransformerSpi
initDateReplicatableFactory
in interface BeanTransformerSpi
public BeanTransformerSpi initCalendarReplicatableFactory(CalendarReplicatorSpi.Factory calendarReplicatableFactory)
BeanTransformerSpi
initCalendarReplicatableFactory
in interface BeanTransformerSpi
public DateReplicatorSpi getDateReplicatable()
BeanTransformerSpi
getDateReplicatable
in interface BeanTransformerSpi
public CalendarReplicatorSpi getCalendarReplicatable()
BeanTransformerSpi
getCalendarReplicatable
in interface BeanTransformerSpi
public BeanTransformer initBeanPopulationExceptionHandler(BeanPopulationExceptionHandler beanPopulationExceptionHandler)
BeanPopulatorBaseSpi
initBeanPopulationExceptionHandler
in interface BeanPopulatorBaseSpi
initBeanPopulationExceptionHandler
in interface BeanTransformerSpi
beanPopulationExceptionHandler
- can be used to handle any exception thrown.
public BeanTransformerSpi initBeanPopulatorBaseConfig(BeanPopulatorBaseConfig baseConfig)
BeanPopulatorBaseSpi
initBeanPopulatorBaseConfig
in interface BeanPopulatorBaseSpi
initBeanPopulatorBaseConfig
in interface BeanTransformerSpi
baseConfig
- is used to conveniently group all the other initializable options into a single unit.
public BeanPopulatorBaseConfig getBeanPopulatorBaseConfig()
BeanTransformerSpi
getBeanPopulatorBaseConfig
in interface BeanPopulatorBaseSpi
getBeanPopulatorBaseConfig
in interface BeanTransformerSpi
public PropertyFilter getPropertyFilter()
BeanPopulatorBaseSpi
getPropertyFilter
in interface BeanPopulatorBaseSpi
public BeanPopulationExceptionHandler getBeanPopulationExceptionHandler()
BeanPopulatorBaseSpi
getBeanPopulationExceptionHandler
in interface BeanPopulatorBaseSpi
public BeanSourceHandler getBeanSourceHandler()
BeanPopulatorBaseSpi
getBeanSourceHandler
in interface BeanPopulatorBaseSpi
public boolean isDebug()
BeanPopulatorBaseSpi
isDebug
in interface BeanPopulatorBaseSpi
public DetailedPropertyFilter getDetailedPropertyFilter()
BeanPopulatorBaseSpi
getDetailedPropertyFilter
in interface BeanPopulatorBaseSpi
public BeanMethodFinder getReaderMethodFinder()
BeanPopulatorBaseSpi
getReaderMethodFinder
in interface BeanPopulatorBaseSpi
public BeanMethodCollector getSetterMethodCollector()
BeanPopulatorBaseSpi
getSetterMethodCollector
in interface BeanPopulatorBaseSpi
public CustomBeanTransformerSpi getCustomBeanTransformer()
BeanTransformerSpi
BeanTransformerSpi.initCustomTransformerFactory(net.sf.beanlib.spi.CustomBeanTransformerSpi.Factory)
getCustomBeanTransformer
in interface BeanTransformerSpi
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |