Reader r1 = tmpFile.getReader();
Document baseDoc = new Document(null, LineElementsFactory.create(new MetaFileDocSource(baseFile), r0, false));
Document leftDoc = new Document(null, LineElementsFactory.create(new FileDocumentSource(file), false, Constants.ENCODING));
Document rightDoc = new Document(null, LineElementsFactory.create(new MetaFileDocSource(tmpFile), r1, false));
DocumentDiff3 diff;
try {
diff = baseDoc.diff3(leftDoc, rightDoc);
} finally {
IOUtils.closeQuietly(r0);
IOUtils.closeQuietly(r1);
}
// save the diff output
Writer out = new OutputStreamWriter(FileUtils.openOutputStream(file), Constants.ENCODING);
try {
diff.write(new DiffWriter(out), false);
} catch (IOException e) {
IOUtils.closeQuietly(out);
}
if (diff.hasConflicts()) {
entry.conflict(file, baseFile, tmpFile);
action = FileAction.CONFLICTED;
} else {
// make the tmp file the new base
tmpFile.moveTo(baseFile);