From: David Pursehouse Date: Thu, 15 Mar 2018 04:32:47 +0000 (+0900) Subject: ReflogWriter: Refactor to open FileOutputStream in try-with-resource X-Git-Tag: v5.0.0.201805151920-m7~65 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fchanges%2F62%2F119462%2F2;p=jgit.git ReflogWriter: Refactor to open FileOutputStream in try-with-resource Change-Id: I028ced10eecc99214a4c4a8055c379af72193f13 Signed-off-by: David Pursehouse --- diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java index d99c266144..b366eafe2f 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java @@ -219,6 +219,22 @@ public class ReflogWriter { 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 { File log = refdb.logFor(refName); boolean write = forceWrite @@ -228,29 +244,17 @@ public class ReflogWriter { return this; WriteConfig wc = refdb.getRepository().getConfig().get(WriteConfig.KEY); - FileOutputStream out; - 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 { + try (FileOutputStream out = getFileOutputStream(log)) { if (wc.getFSyncRefFiles()) { FileChannel fc = out.getChannel(); ByteBuffer buf = ByteBuffer.wrap(rec); - while (0 < buf.remaining()) + while (0 < buf.remaining()) { fc.write(buf); + } fc.force(true); - } else + } else { out.write(rec); - } finally { - out.close(); + } } return this; }