| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectnet.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 | arrayReplicatableReplicator for arrays. | 
| private  BeanPopulatorBaseConfig | baseConfigUsed to contain all the configuration options as a single configuration object. | 
| private  BeanPopulatorSpi.Factory | beanPopulatorFactoryBean 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 | beanReplicatableReplicator for JavaBeans. | 
| private  BlobReplicatorSpi | blobReplicatableReplicator for blobs. | 
| private  CalendarReplicatorSpi | calendarReplicatableReplicator for calendars. | 
| private  Map<Object,Object> | clonedMapUsed to contains those objects that have been replicated. | 
| private  CollectionReplicatorSpi | collectionReplicatableReplicator for collections. | 
| private  CustomBeanTransformerSpi | customTransformerCustom Transformer. | 
| private  DateReplicatorSpi | dateReplicatableReplicator for dates. | 
| private  ImmutableReplicatorSpi | immutableReplicatableReplicator for immutables. | 
| private  MapReplicatorSpi | mapReplicatableReplicator 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.
ChainedCustomBeanTransformerprotected BeanTransformer(BeanPopulatorSpi.Factory beanPopulatorFactory)
| Method Detail | 
|---|
public BeanPopulatorSpi.Factory getBeanPopulatorSpiFactory()
BeanTransformerSpi
getBeanPopulatorSpiFactory in interface BeanTransformerSpipublic final void reset()
BeanTransformerSpi
reset in interface BeanTransformerSpi
public final <T> T transform(Object from,
                             Class<T> toClass,
                             PropertyInfo propertyInfo)
Transformable
transform in interface Transformabletransform in class ReplicatorTemplatefrom - 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 BeanTransformerSpipublic final BeanTransformer initPropertyFilter(PropertyFilter propertyFilter)
BeanPopulatorBaseSpi
initPropertyFilter in interface BeanPopulatorBaseSpiinitPropertyFilter in interface BeanTransformerSpipropertyFilter - 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 BeanPopulatorBaseSpiinitBeanSourceHandler in interface BeanTransformerSpibeanSourceHandler - 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 BeanPopulatorBaseSpiinitDebug in interface BeanTransformerSpipublic final BeanTransformer initDetailedPropertyFilter(DetailedPropertyFilter detailedPropertyFilter)
BeanPopulatorBaseSpi
initDetailedPropertyFilter in interface BeanPopulatorBaseSpiinitDetailedPropertyFilter in interface BeanTransformerSpidetailedPropertyFilter - 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 BeanPopulatorBaseSpiinitReaderMethodFinder in interface BeanTransformerSpireaderMethodFinder - can be used to find the property getter methods of a source JavaBean.
public final BeanTransformer initSetterMethodCollector(BeanMethodCollector setterMethodCollector)
BeanPopulatorBaseSpi
initSetterMethodCollector in interface BeanPopulatorBaseSpiinitSetterMethodCollector in interface BeanTransformerSpisetterMethodCollector - can be used to collect the property setter methods of a target JavaBean.
public BeanTransformer initCollectionReplicatableFactory(CollectionReplicatorSpi.Factory factory)
BeanTransformerSpi
initCollectionReplicatableFactory in interface BeanTransformerSpipublic CollectionReplicatorSpi getCollectionReplicatable()
BeanTransformerSpi
getCollectionReplicatable in interface BeanTransformerSpipublic BeanTransformer initMapReplicatableFactory(MapReplicatorSpi.Factory factory)
BeanTransformerSpi
initMapReplicatableFactory in interface BeanTransformerSpipublic MapReplicatorSpi getMapReplicatable()
BeanTransformerSpi
getMapReplicatable in interface BeanTransformerSpipublic <K,V> Map<K,V> getClonedMap()
BeanTransformerSpi
getClonedMap in interface BeanTransformerSpipublic BeanTransformer initImmutableReplicatableFactory(ImmutableReplicatorSpi.Factory immutableReplicatableFactory)
BeanTransformerSpi
initImmutableReplicatableFactory in interface BeanTransformerSpipublic ImmutableReplicatorSpi getImmutableReplicatable()
BeanTransformerSpi
getImmutableReplicatable in interface BeanTransformerSpipublic BeanTransformer initArrayReplicatableFactory(ArrayReplicatorSpi.Factory arrayReplicatableFactory)
BeanTransformerSpi
initArrayReplicatableFactory in interface BeanTransformerSpipublic ArrayReplicatorSpi getArrayReplicatable()
BeanTransformerSpi
getArrayReplicatable in interface BeanTransformerSpipublic BeanTransformer initBlobReplicatableFactory(BlobReplicatorSpi.Factory blobReplicatableFactory)
BeanTransformerSpi
initBlobReplicatableFactory in interface BeanTransformerSpipublic BlobReplicatorSpi getBlobReplicatable()
BeanTransformerSpi
getBlobReplicatable in interface BeanTransformerSpipublic BeanTransformer initBeanReplicatableFactory(BeanReplicatorSpi.Factory objectReplicatableFactory)
BeanTransformerSpi
initBeanReplicatableFactory in interface BeanTransformerSpipublic BeanReplicatorSpi getBeanReplicatable()
BeanTransformerSpi
getBeanReplicatable in interface BeanTransformerSpipublic BeanTransformerSpi initDateReplicatableFactory(DateReplicatorSpi.Factory dateReplicatableFactory)
BeanTransformerSpi
initDateReplicatableFactory in interface BeanTransformerSpipublic BeanTransformerSpi initCalendarReplicatableFactory(CalendarReplicatorSpi.Factory calendarReplicatableFactory)
BeanTransformerSpi
initCalendarReplicatableFactory in interface BeanTransformerSpipublic DateReplicatorSpi getDateReplicatable()
BeanTransformerSpi
getDateReplicatable in interface BeanTransformerSpipublic CalendarReplicatorSpi getCalendarReplicatable()
BeanTransformerSpi
getCalendarReplicatable in interface BeanTransformerSpipublic BeanTransformer initBeanPopulationExceptionHandler(BeanPopulationExceptionHandler beanPopulationExceptionHandler)
BeanPopulatorBaseSpi
initBeanPopulationExceptionHandler in interface BeanPopulatorBaseSpiinitBeanPopulationExceptionHandler in interface BeanTransformerSpibeanPopulationExceptionHandler - can be used to handle any exception thrown.
public BeanTransformerSpi initBeanPopulatorBaseConfig(BeanPopulatorBaseConfig baseConfig)
BeanPopulatorBaseSpi
initBeanPopulatorBaseConfig in interface BeanPopulatorBaseSpiinitBeanPopulatorBaseConfig in interface BeanTransformerSpibaseConfig - is used to conveniently group all the other initializable options into a single unit.
public BeanPopulatorBaseConfig getBeanPopulatorBaseConfig()
BeanTransformerSpi
getBeanPopulatorBaseConfig in interface BeanPopulatorBaseSpigetBeanPopulatorBaseConfig in interface BeanTransformerSpipublic PropertyFilter getPropertyFilter()
BeanPopulatorBaseSpi
getPropertyFilter in interface BeanPopulatorBaseSpipublic BeanPopulationExceptionHandler getBeanPopulationExceptionHandler()
BeanPopulatorBaseSpi
getBeanPopulationExceptionHandler in interface BeanPopulatorBaseSpipublic BeanSourceHandler getBeanSourceHandler()
BeanPopulatorBaseSpi
getBeanSourceHandler in interface BeanPopulatorBaseSpipublic boolean isDebug()
BeanPopulatorBaseSpi
isDebug in interface BeanPopulatorBaseSpipublic DetailedPropertyFilter getDetailedPropertyFilter()
BeanPopulatorBaseSpi
getDetailedPropertyFilter in interface BeanPopulatorBaseSpipublic BeanMethodFinder getReaderMethodFinder()
BeanPopulatorBaseSpi
getReaderMethodFinder in interface BeanPopulatorBaseSpipublic BeanMethodCollector getSetterMethodCollector()
BeanPopulatorBaseSpi
getSetterMethodCollector in interface BeanPopulatorBaseSpipublic CustomBeanTransformerSpi getCustomBeanTransformer()
BeanTransformerSpiBeanTransformerSpi.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 | |||||||||