public Object getObjectToMerge(Object sourceValue) { if (shouldMergeOriginalIntoWorkingCopy()) { return getTargetVersionOfSourceObject(sourceValue); } return sourceValue; }
/** * Build and return an identity set for the specified container. */ protected IdentityHashtable buildIdentitySet(Object container, ContainerPolicy containerPolicy, boolean keyByTarget) { // find next power-of-2 size IdentityHashtable result = new IdentityHashtable(containerPolicy.sizeFor(container) + 1); for (Object iter = containerPolicy.iteratorFor(container); containerPolicy.hasNext(iter);) { Object element = containerPolicy.next(iter, getSession()); if (keyByTarget) { result.put(getTargetVersionOfSourceObject(element), element); } else { result.put(element, element); } } return result; }
if (!sourceSet.containsKey(backupElement)) { changeOccured = true; containerPolicy.removeFrom((Object)null, getTargetVersionOfSourceObject(backupElement), target, getSession()); if (!backupSet.containsKey(sourceElement)) { changeOccured = true; containerPolicy.addInto(getTargetVersionOfSourceObject(sourceElement), target, getSession()); } else { containerPolicy.validateElementAndRehashIfRequired(sourceElement, target, getSession(), getTargetVersionOfSourceObject(sourceElement)); Object targetVersionOfSourceElement = getTargetVersionOfSourceObject(sourceElement); if (!backupSet.containsKey(targetVersionOfSourceElement)) {// Backup value is same as target value. changeOccured = true;
containerPolicy.addInto(mergeManager.getTargetVersionOfSourceObject(objectToMerge), valueOfTarget, mergeManager.getSession());
targetValueOfSource = mergeManager.getTargetVersionOfSourceObject(valueOfSource);
object = getReferenceDescriptor().getObjectBuilder().wrapObject(mergeManager.getTargetVersionOfSourceObject(object), mergeManager.getSession()); synchronized (valueOfTarget){ containerPolicy.addInto(object, valueOfTarget, mergeManager.getSession());