/** * INTERNAL: * This method is used to revert an object within the unit of work * @param cloneMapping may not be the same as what is in the uow */ public void revertChanges(Object clone, ClassDescriptor descriptor, UnitOfWorkImpl uow, Map cloneMapping) { cloneMapping.put(clone, buildBackupClone(clone, descriptor.getObjectBuilder(), uow)); clearChanges(clone, uow, descriptor); }
/** * INTERNAL: * This method is used to revert an object within the unit of work * @param cloneMapping may not be the same as what is in the uow */ public void revertChanges(Object clone, ClassDescriptor descriptor, UnitOfWorkImpl uow, Map cloneMapping, boolean forRefresh) { cloneMapping.put(clone, buildBackupClone(clone, descriptor.getObjectBuilder(), uow)); clearChanges(clone, uow, descriptor, forRefresh); }
/** * INTERNAL: * This method is used to revert an object within the unit of work * @param cloneMapping may not be the same as what is in the uow */ public void revertChanges(Object clone, ClassDescriptor descriptor, UnitOfWorkImpl uow, Map cloneMapping, boolean forRefresh) { cloneMapping.put(clone, buildBackupClone(clone, descriptor.getObjectBuilder(), uow)); clearChanges(clone, uow, descriptor, forRefresh); }
/** * INTERNAL: * Clear changes in the ChangeListener of the clone */ public void updateWithChanges(Object clone, ObjectChangeSet objectChangeSet, UnitOfWorkImpl uow, ClassDescriptor descriptor) { if (objectChangeSet == null) { return; } Object backupClone = uow.getCloneMapping().get(clone); if (backupClone != null) { // If new just re-build the backup clone, otherwise use MergeManager (should be a special merge though, not the default constructor like it is...) if (objectChangeSet.isNew()) { uow.getCloneMapping().put(clone, descriptor.getObjectBuilder().buildBackupClone(clone, uow)); } else { MergeManager mergeManager = new MergeManager(uow); mergeManager.setCascadePolicy(MergeManager.NO_CASCADE); descriptor.getObjectBuilder().mergeChangesIntoObject(backupClone, objectChangeSet, clone, mergeManager); } } clearChanges(clone, uow, descriptor); }
/** * INTERNAL: * Clear changes in the ChangeListener of the clone */ public void updateWithChanges(Object clone, ObjectChangeSet objectChangeSet, UnitOfWorkImpl uow, ClassDescriptor descriptor) { if (objectChangeSet == null) { return; } Object backupClone = uow.getCloneMapping().get(clone); if (backupClone != null) { // If new just re-build the backup clone, otherwise use MergeManager (should be a special merge though, not the default constructor like it is...) if (objectChangeSet.isNew()) { uow.getCloneMapping().put(clone, descriptor.getObjectBuilder().buildBackupClone(clone, uow)); } else { MergeManager mergeManager = new MergeManager(uow); mergeManager.setCascadePolicy(MergeManager.NO_CASCADE); descriptor.getObjectBuilder().mergeChangesIntoObject(backupClone, objectChangeSet, clone, mergeManager, mergeManager.getSession()); } } clearChanges(clone, uow, descriptor, false); }
/** * INTERNAL: * Clear changes in the ChangeListener of the clone */ public void updateWithChanges(Object clone, ObjectChangeSet objectChangeSet, UnitOfWorkImpl uow, ClassDescriptor descriptor) { if (objectChangeSet == null) { return; } Object backupClone = uow.getCloneMapping().get(clone); if (backupClone != null) { // If new just re-build the backup clone, otherwise use MergeManager (should be a special merge though, not the default constructor like it is...) if (objectChangeSet.isNew()) { uow.getCloneMapping().put(clone, descriptor.getObjectBuilder().buildBackupClone(clone, uow)); } else { MergeManager mergeManager = new MergeManager(uow); mergeManager.setCascadePolicy(MergeManager.NO_CASCADE); descriptor.getObjectBuilder().mergeChangesIntoObject(backupClone, objectChangeSet, clone, mergeManager, mergeManager.getSession()); } } clearChanges(clone, uow, descriptor, false); }