List<String> targetHistoryList = new ArrayList<String>();
while (targetHistory.hasNext()) {
targetHistoryList.add(targetHistory.nextVersion().getName());
}
JCRVersion sourceVersion = vh.getVersion(sourceNode.getBaseVersion().getName());
JCRVersion baseSourceVersion = null;
JCRVersion baseTargetVersion = null;
while (baseSourceVersion == null) {
JCRVersion[] successors = sourceVersion.getSuccessors();
for (JCRVersion successor : successors) {
if (targetHistoryList.contains(successor.getName())) {
baseSourceVersion = sourceVersion;
baseTargetVersion = successor;
break;
}
}
try {
sourceVersion = sourceVersion.getLinearPredecessor();
} catch (NullPointerException e) {
sourceVersion = null;
}
}
logger.debug("compare "+sourceNode.getPath()+" version : "+baseSourceVersion.getName()+" with (source) "+sourceNode.getBaseVersion().getName());
List<Diff> sourceDiff = compare(baseSourceVersion.getFrozenNode(), sourceNode, "");
logger.debug("compare "+targetNode.getPath()+" version : "+baseTargetVersion.getName()+" with (target) "+targetNode.getBaseVersion().getName());
List<Diff> targetDiff = compare(baseTargetVersion.getFrozenNode(), targetNode, "");
sourceDiff.removeAll(targetDiff);
// Check for conflicts in changed properties
Map<String, PropertyChangedDiff> changedProperties = new HashMap<String, PropertyChangedDiff>();