private static Hibernate3BeanTransformer newBeanTransformer(IClassMapper classMapper,
IPersistenceUtil persistenceUtil,
IProxyStore proxyStore)
{
Hibernate3BeanTransformer transformer = Hibernate3BeanTransformer.newBeanTransformer();
transformer.initCollectionReplicatable(
Hibernate3CollectionReplicator.getFactory());
transformer.initMapReplicatable(
Hibernate3MapReplicator.getFactory());
transformer.initBlobReplicatable(
Hibernate3BlobReplicator.getFactory());
// Custom bean replicatable
transformer.initBeanReplicatable(
CloneClassBeanReplicator.factory);
// Set the associated class mapper
((CloneClassBeanReplicator)transformer.getBeanReplicatable()).setClassMapper(classMapper);
((CloneClassBeanReplicator)transformer.getBeanReplicatable()).setPersistenceUtil(persistenceUtil);
// Custom transformers (timestamp handling)
//
transformer.initCustomTransformerFactory(new CustomBeanTransformerSpi.Factory()
{
public CustomBeanTransformerSpi newCustomBeanTransformer(final BeanTransformerSpi beanTransformer)
{
return CustomTransformersFactory.getInstance().createUnionCustomBeanTransformer(beanTransformer);
}
});
// Lazy properties handling
//
transformer.initDetailedBeanPopulatable(new CloneBeanPopulatable(persistenceUtil, proxyStore));
// Protected and private setter collection
//
transformer.initSetterMethodCollector(PrivateSetterMethodCollector.inst);
transformer.initReaderMethodFinder(FastPrivateReaderMethodFinder.inst);
return transformer;
}