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 }