} else if (baseValue == null && workingValue != null) {
reason = SVNConflictReason.OBSTRUCTED;
}
SVNConflictDescription description = new SVNPropertyConflictDescription(fileSet,
isDir ? SVNNodeKind.DIR : SVNNodeKind.FILE, propName, action, reason);
SVNConflictResult result = myConflictCallback.handleConflict(description);
if (result == null) {
SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.WC_CONFLICT_RESOLVER_FAILURE,
"Conflict callback violated API: returned no results.");
SVNErrorManager.error(err, SVNLogType.DEFAULT);
}
SVNConflictChoice choice = result.getConflictChoice();
if (choice == SVNConflictChoice.MINE_FULL) {
conflictRemains = false;
} else if (choice == SVNConflictChoice.THEIRS_FULL) {
changeProperty(workingProps, propName, newValue);
conflictRemains = false;
} else if (choice == SVNConflictChoice.BASE) {
changeProperty(workingProps, propName, baseValue);
conflictRemains = false;
} else if (choice == SVNConflictChoice.MERGED) {
if (mergedFile == null && result.getMergedFile() == null) {
SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.WC_CONFLICT_RESOLVER_FAILURE,
"Conflict callback violated API: returned no merged file.");
SVNErrorManager.error(err, SVNLogType.DEFAULT);
}
String mergedString = SVNFileUtil.readFile(mergedFile != null ? mergedFile : result.getMergedFile());
changeProperty(workingProps, propName, SVNPropertyValue.create(mergedString));
conflictRemains = false;
}
return conflictRemains;
} finally {