/** * INTERNAL: * Cascade the merge to the component object, if appropriate. */ public void cascadeMerge(Object sourceElement, MergeManager mergeManager) { if (shouldMergeCascadeParts(mergeManager)) { mergeManager.mergeChanges(mergeManager.getObjectToMerge(sourceElement), null); } }
/** * INTERNAL: * Revert the object's attributes from the parent. * This uses merging to merge the object changes. */ public Object revertObject(Object clone, int cascadeDepth) { if (clone == null) { return null; } //CR#2272 logDebugMessage(clone, "revert"); ClassDescriptor descriptor = getDescriptor(clone); ObjectBuilder builder = descriptor.getObjectBuilder(); Object implementation = builder.unwrapObject(clone, this); MergeManager manager = new MergeManager(this); manager.mergeOriginalIntoWorkingCopy(); manager.setCascadePolicy(cascadeDepth); try { manager.mergeChanges(implementation, null); } catch (RuntimeException exception) { return handleException(exception); } return clone; }
/** * INTERNAL: * Merge the attributes of the clone into the unit of work copy. */ public Object mergeClone(Object rmiClone, int cascadeDepth) { if (rmiClone == null) { return null; } //CR#2272 logDebugMessage(rmiClone, "merge_clone"); startOperationProfile(SessionProfiler.Merge); ObjectBuilder builder = getDescriptor(rmiClone).getObjectBuilder(); Object implementation = builder.unwrapObject(rmiClone, this); MergeManager manager = new MergeManager(this); manager.mergeCloneIntoWorkingCopy(); manager.setCascadePolicy(cascadeDepth); Object merged = null; try { merged = manager.mergeChanges(implementation, null); } catch (RuntimeException exception) { merged = handleException(exception); } endOperationProfile(SessionProfiler.Merge); return merged; }
manager.setCascadePolicy(cascadePolicy); manager.setForceCascade(forceCascade); Object mergedObject = manager.mergeChanges(implementation, null); if (isSmartMerge()) { return builder.wrapObject(mergedObject, this);
mergeManager.mergeChanges(object, objectChanges); mergeManager.mergeChanges(objectChanges.getUnitOfWorkClone(), objectChanges);
manager.mergeChanges(objectToWrite, changeSetToWrite); if (changeSetToWrite.hasChanges()) { Object objectToWrite = changeSetToWrite.getUnitOfWorkClone(); manager.mergeChanges(objectToWrite, changeSetToWrite); } else {
manager.mergeChanges(clone, null); ClassDescriptor descriptor = this.getDescriptor(clone);
Object mergedObject = this.mergeChanges(object, objectChangeSet);
if ((mergeManager.getSession().isUnitOfWork()) && (((UnitOfWorkImpl)mergeManager.getSession()).getUnitOfWorkChangeSet() != null)) { mergeManager.mergeChanges(mergeManager.getObjectToMerge(valueOfSource), (ObjectChangeSet)((UnitOfWorkChangeSet)((UnitOfWorkImpl)mergeManager.getSession()).getUnitOfWorkChangeSet()).getObjectChangeSetForClone(valueOfSource)); } else { mergeManager.mergeChanges(mergeManager.getObjectToMerge(valueOfSource), null);
mergeManager.mergeChanges(targetValueOfSource, set); mergeManager.mergeChanges(set.getUnitOfWorkClone(), set);
object = changeSet.getTargetVersionOfSourceObject(getSession(), true); mergeChanges(object, changeSet); Object implementation = descriptor.getObjectBuilder().unwrapObject(object, getSession());
if ((mergeManager.getSession().isUnitOfWork()) && (((UnitOfWorkImpl)mergeManager.getSession()).getUnitOfWorkChangeSet() != null)) { mergeManager.mergeChanges(mergeManager.getObjectToMerge(object), (ObjectChangeSet)((UnitOfWorkImpl)mergeManager.getSession()).getUnitOfWorkChangeSet().getObjectChangeSetForClone(object)); } else { mergeManager.mergeChanges(mergeManager.getObjectToMerge(object), null);
mergeManager.mergeChanges(objectToMerge, changeSet);