Browse Source

ReflogWriter: Refactor to open FileOutputStream in try-with-resource

Change-Id: I028ced10eecc99214a4c4a8055c379af72193f13
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
stable-5.0
David Pursehouse 7 years ago
parent
commit
7f69c7e93d
  1. 38
      org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java

38
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java

@ -219,6 +219,22 @@ public class ReflogWriter {
return Constants.encode(r.toString()); return Constants.encode(r.toString());
} }
private FileOutputStream getFileOutputStream(File log) throws IOException {
try {
return new FileOutputStream(log, true);
} catch (FileNotFoundException err) {
File dir = log.getParentFile();
if (dir.exists()) {
throw err;
}
if (!dir.mkdirs() && !dir.isDirectory()) {
throw new IOException(MessageFormat
.format(JGitText.get().cannotCreateDirectory, dir));
}
return new FileOutputStream(log, true);
}
}
private ReflogWriter log(String refName, byte[] rec) throws IOException { private ReflogWriter log(String refName, byte[] rec) throws IOException {
File log = refdb.logFor(refName); File log = refdb.logFor(refName);
boolean write = forceWrite boolean write = forceWrite
@ -228,29 +244,17 @@ public class ReflogWriter {
return this; return this;
WriteConfig wc = refdb.getRepository().getConfig().get(WriteConfig.KEY); WriteConfig wc = refdb.getRepository().getConfig().get(WriteConfig.KEY);
FileOutputStream out; try (FileOutputStream out = getFileOutputStream(log)) {
try {
out = new FileOutputStream(log, true);
} catch (FileNotFoundException err) {
File dir = log.getParentFile();
if (dir.exists())
throw err;
if (!dir.mkdirs() && !dir.isDirectory())
throw new IOException(MessageFormat.format(
JGitText.get().cannotCreateDirectory, dir));
out = new FileOutputStream(log, true);
}
try {
if (wc.getFSyncRefFiles()) { if (wc.getFSyncRefFiles()) {
FileChannel fc = out.getChannel(); FileChannel fc = out.getChannel();
ByteBuffer buf = ByteBuffer.wrap(rec); ByteBuffer buf = ByteBuffer.wrap(rec);
while (0 < buf.remaining()) while (0 < buf.remaining()) {
fc.write(buf); fc.write(buf);
}
fc.force(true); fc.force(true);
} else } else {
out.write(rec); out.write(rec);
} finally { }
out.close();
} }
return this; return this;
} }

Loading…
Cancel
Save