001    package org.trails.record;
002    
003    import org.trails.persistence.PersistenceService;
004    import org.trails.util.Utils;
005    import org.trails.descriptor.DescriptorService;
006    import org.trails.descriptor.IClassDescriptor;
007    
008    
009    public class ReloadReattachPropertyPersistenceStrategy extends ReattachPropertyPersistenceStrategy
010    {
011    
012            DescriptorService descriptorService;
013            PersistenceService persistenceService;
014    
015            protected String getStrategyId()
016            {
017                    return "reattach-reload";
018            }
019    
020            protected Object reattach(Object entity)
021            {
022                    IClassDescriptor classDescriptor = descriptorService.getClassDescriptor(Utils.checkForCGLIB(entity.getClass()));
023                    return persistenceService
024                                    .loadInstance(classDescriptor.getType(), persistenceService.getIdentifier(entity, classDescriptor));
025            }
026    
027            public void setPersistenceService(PersistenceService persistenceService)
028            {
029                    this.persistenceService = persistenceService;
030            }
031    
032            public void setDescriptorService(DescriptorService descriptorService)
033            {
034                    this.descriptorService = descriptorService;
035            }
036    }