From 81fa5662953c54ba07e141284d3d9a717361b17b Mon Sep 17 00:00:00 2001 From: Robin Rosenberg Date: Wed, 10 Oct 2012 08:02:30 +0200 Subject: [PATCH] Suppress resource warnings with Java 7 For streams that should not be closed, i.e. don't own an underlying stream, and in-memory streams that do not need to be closed we just suppress the warning. This mostly apply to test cases. GC is enough. For streams with external resources (i.e. files) we add the necessary call to close(). Change-Id: I4d883ba2e7d07f199fe57ccb3459ece00441a570 --- .../jgit/http/server/GitSmartHttpTools.java | 1 + .../eclipse/jgit/pgm/debug/ShowPackDelta.java | 1 + .../eclipse/jgit/api/CheckoutCommandTest.java | 3 +- .../file/FileRepositoryBuilderTest.java | 3 ++ .../jgit/submodule/SubmoduleWalkTest.java | 2 + .../transport/SideBandOutputStreamTest.java | 41 +++++++++++-------- .../jgit/util/TemporaryBufferTest.java | 2 + .../io/EolCanonicalizingInputStreamTest.java | 2 + .../jgit/util/io/UnionInputStreamTest.java | 7 ++++ .../src/org/eclipse/jgit/storage/file/GC.java | 2 + .../storage/file/ObjectDirectoryInserter.java | 2 + .../eclipse/jgit/transport/UploadPack.java | 4 +- .../src/org/eclipse/jgit/util/IO.java | 1 + 13 files changed, 52 insertions(+), 19 deletions(-) diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitSmartHttpTools.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitSmartHttpTools.java index ab4d0da34..92d575c2d 100644 --- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitSmartHttpTools.java +++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitSmartHttpTools.java @@ -297,6 +297,7 @@ private static boolean isReceivePackSideBand(HttpServletRequest req) { private static void writeSideBand(OutputStream out, String textForGit) throws IOException { + @SuppressWarnings("resource" /* java 7 */) OutputStream msg = new SideBandOutputStream(CH_ERROR, SMALL_BUF, out); msg.write(Constants.encode("error: " + textForGit)); msg.flush(); diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java index c852d4163..fa9fd6e68 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java @@ -119,6 +119,7 @@ public void select(ObjectToPack otp, StoredObjectRepresentation next) { ptr++; ptr++; + @SuppressWarnings("resource" /* java 7 */) TemporaryBuffer.Heap raw = new TemporaryBuffer.Heap(bufArray.length); InflaterInputStream inf = new InflaterInputStream( new ByteArrayInputStream(bufArray, ptr, bufArray.length)); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CheckoutCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CheckoutCommandTest.java index b75d0bdc4..3f0bc043a 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CheckoutCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CheckoutCommandTest.java @@ -162,8 +162,9 @@ public void testCheckoutWithNonDeletedFiles() throws Exception { } catch (IOException e) { // the test makes only sense if deletion of // a file with open stream fails + } finally { + fis.close(); } - fis.close(); FileUtils.delete(testFile); CheckoutCommand co = git.checkout(); // delete Test.txt in branch test diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/FileRepositoryBuilderTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/FileRepositoryBuilderTest.java index b6377482d..8f3f48829 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/FileRepositoryBuilderTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/FileRepositoryBuilderTest.java @@ -112,6 +112,7 @@ public void unknownRepositoryFormatVersion() throws Exception { } } + @SuppressWarnings("resource" /* java 7 */) @Test public void absoluteGitDirRef() throws Exception { FileRepository repo1 = createWorkRepository(); @@ -129,6 +130,7 @@ public void absoluteGitDirRef() throws Exception { assertEquals(dir, repo2.getWorkTree()); } + @SuppressWarnings("resource" /* java 7 */) @Test public void relativeGitDirRef() throws Exception { FileRepository repo1 = createWorkRepository(); @@ -147,6 +149,7 @@ public void relativeGitDirRef() throws Exception { assertEquals(dir, repo2.getWorkTree()); } + @SuppressWarnings("resource" /* java 7 */) @Test public void scanWithGitDirRef() throws Exception { FileRepository repo1 = createWorkRepository(); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/submodule/SubmoduleWalkTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/submodule/SubmoduleWalkTest.java index cb3c7d88f..baa0d094d 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/submodule/SubmoduleWalkTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/submodule/SubmoduleWalkTest.java @@ -128,6 +128,7 @@ public void apply(DirCacheEntry ent) { assertFalse(gen.next()); } + @SuppressWarnings("resource" /* java 7 */) @Test public void repositoryWithRootLevelSubmoduleAbsoluteRef() throws IOException, ConfigInvalidException { @@ -176,6 +177,7 @@ public void apply(DirCacheEntry ent) { assertFalse(gen.next()); } + @SuppressWarnings("resource" /* java 7 */) @Test public void repositoryWithRootLevelSubmoduleRelativeRef() throws IOException, ConfigInvalidException { diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/SideBandOutputStreamTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/SideBandOutputStreamTest.java index 2924297de..717a58bcb 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/SideBandOutputStreamTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/SideBandOutputStreamTest.java @@ -78,8 +78,9 @@ public void setUp() throws Exception { @Test public void testWrite_CH_DATA() throws IOException { - final SideBandOutputStream out; - out = new SideBandOutputStream(CH_DATA, SMALL_BUF, rawOut); + @SuppressWarnings("resource" /* java 7 */) + final SideBandOutputStream out = new SideBandOutputStream(CH_DATA, + SMALL_BUF, rawOut); out.write(new byte[] { 'a', 'b', 'c' }); out.flush(); assertBuffer("0008\001abc"); @@ -87,8 +88,9 @@ public void testWrite_CH_DATA() throws IOException { @Test public void testWrite_CH_PROGRESS() throws IOException { - final SideBandOutputStream out; - out = new SideBandOutputStream(CH_PROGRESS, SMALL_BUF, rawOut); + @SuppressWarnings("resource" /* java 7 */) + final SideBandOutputStream out = new SideBandOutputStream(CH_PROGRESS, + SMALL_BUF, rawOut); out.write(new byte[] { 'a', 'b', 'c' }); out.flush(); assertBuffer("0008\002abc"); @@ -96,8 +98,9 @@ public void testWrite_CH_PROGRESS() throws IOException { @Test public void testWrite_CH_ERROR() throws IOException { - final SideBandOutputStream out; - out = new SideBandOutputStream(CH_ERROR, SMALL_BUF, rawOut); + @SuppressWarnings("resource" /* java 7 */) + final SideBandOutputStream out = new SideBandOutputStream(CH_ERROR, + SMALL_BUF, rawOut); out.write(new byte[] { 'a', 'b', 'c' }); out.flush(); assertBuffer("0008\003abc"); @@ -105,8 +108,9 @@ public void testWrite_CH_ERROR() throws IOException { @Test public void testWrite_Small() throws IOException { - final SideBandOutputStream out; - out = new SideBandOutputStream(CH_DATA, SMALL_BUF, rawOut); + @SuppressWarnings("resource" /* java 7 */) + final SideBandOutputStream out = new SideBandOutputStream(CH_DATA, + SMALL_BUF, rawOut); out.write('a'); out.write('b'); out.write('c'); @@ -116,8 +120,9 @@ public void testWrite_Small() throws IOException { @Test public void testWrite_SmallBlocks1() throws IOException { - final SideBandOutputStream out; - out = new SideBandOutputStream(CH_DATA, 6, rawOut); + @SuppressWarnings("resource" /* java 7 */) + final SideBandOutputStream out = new SideBandOutputStream(CH_DATA, 6, + rawOut); out.write('a'); out.write('b'); out.write('c'); @@ -127,8 +132,9 @@ public void testWrite_SmallBlocks1() throws IOException { @Test public void testWrite_SmallBlocks2() throws IOException { - final SideBandOutputStream out; - out = new SideBandOutputStream(CH_DATA, 6, rawOut); + @SuppressWarnings("resource" /* java 7 */) + final SideBandOutputStream out = new SideBandOutputStream(CH_DATA, 6, + rawOut); out.write(new byte[] { 'a', 'b', 'c' }); out.flush(); assertBuffer("0006\001a0006\001b0006\001c"); @@ -136,8 +142,9 @@ public void testWrite_SmallBlocks2() throws IOException { @Test public void testWrite_SmallBlocks3() throws IOException { - final SideBandOutputStream out; - out = new SideBandOutputStream(CH_DATA, 7, rawOut); + @SuppressWarnings("resource" /* java 7 */) + final SideBandOutputStream out = new SideBandOutputStream(CH_DATA, 7, + rawOut); out.write('a'); out.write(new byte[] { 'b', 'c' }); out.flush(); @@ -152,8 +159,9 @@ public void testWrite_Large() throws IOException { buf[i] = (byte) i; } - final SideBandOutputStream out; - out = new SideBandOutputStream(CH_DATA, MAX_BUF, rawOut); + @SuppressWarnings("resource" /* java 7 */) + final SideBandOutputStream out = new SideBandOutputStream(CH_DATA, + MAX_BUF, rawOut); out.write(buf); out.flush(); @@ -167,6 +175,7 @@ public void testWrite_Large() throws IOException { } } + @SuppressWarnings("resource" /* java 7 */) @Test public void testFlush() throws IOException { final int[] flushCnt = new int[1]; diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/TemporaryBufferTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/TemporaryBufferTest.java index 8b67532a9..5f5968dbc 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/TemporaryBufferTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/TemporaryBufferTest.java @@ -353,6 +353,7 @@ public void testInCoreLimit_SwitchOnCopy() throws IOException { @Test public void testDestroyWhileOpen() throws IOException { + @SuppressWarnings("resource" /* java 7 */) final TemporaryBuffer b = new TemporaryBuffer.LocalFile(); try { b.write(new TestRng(getName()) @@ -411,6 +412,7 @@ public void testRandomWrites() throws IOException { @Test public void testHeap() throws IOException { + @SuppressWarnings("resource" /* java 7 */) final TemporaryBuffer b = new TemporaryBuffer.Heap(2 * 8 * 1024); final byte[] r = new byte[8 * 1024]; b.write(r); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/io/EolCanonicalizingInputStreamTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/io/EolCanonicalizingInputStreamTest.java index 52ad0139c..bd1524563 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/io/EolCanonicalizingInputStreamTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/io/EolCanonicalizingInputStreamTest.java @@ -121,7 +121,9 @@ private void test(byte[] input, byte[] expected, boolean detectBinary) throws IO } assertEquals(expected.length, read); + cis2.close(); } + cis1.close(); } private static byte[] asBytes(String in) { diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/io/UnionInputStreamTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/io/UnionInputStreamTest.java index daebffbc1..c213157b3 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/io/UnionInputStreamTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/io/UnionInputStreamTest.java @@ -69,6 +69,7 @@ public void testEmptyStream() throws IOException { @Test public void testReadSingleBytes() throws IOException { + @SuppressWarnings("resource" /* java 7 */) final UnionInputStream u = new UnionInputStream(); assertTrue(u.isEmpty()); @@ -101,6 +102,7 @@ public void testReadSingleBytes() throws IOException { @Test public void testReadByteBlocks() throws IOException { + @SuppressWarnings("resource" /* java 7 */) final UnionInputStream u = new UnionInputStream(); u.add(new ByteArrayInputStream(new byte[] { 1, 0, 2 })); u.add(new ByteArrayInputStream(new byte[] { 3 })); @@ -124,6 +126,7 @@ private static byte[] slice(byte[] in, int len) { @Test public void testArrayConstructor() throws IOException { + @SuppressWarnings("resource" /* java 7 */) final UnionInputStream u = new UnionInputStream( new ByteArrayInputStream(new byte[] { 1, 0, 2 }), new ByteArrayInputStream(new byte[] { 3 }), @@ -141,6 +144,7 @@ public void testArrayConstructor() throws IOException { @Test public void testMarkSupported() { + @SuppressWarnings("resource" /* java 7 */) final UnionInputStream u = new UnionInputStream(); assertFalse(u.markSupported()); u.add(new ByteArrayInputStream(new byte[] { 1, 0, 2 })); @@ -149,6 +153,7 @@ public void testMarkSupported() { @Test public void testSkip() throws IOException { + @SuppressWarnings("resource" /* java 7 */) final UnionInputStream u = new UnionInputStream(); u.add(new ByteArrayInputStream(new byte[] { 1, 0, 2 })); u.add(new ByteArrayInputStream(new byte[] { 3 })); @@ -171,6 +176,7 @@ public long skip(long n) { @Test public void testAutoCloseDuringRead() throws IOException { + @SuppressWarnings("resource" /* java 7 */) final UnionInputStream u = new UnionInputStream(); final boolean closed[] = new boolean[2]; u.add(new ByteArrayInputStream(new byte[] { 1 }) { @@ -248,6 +254,7 @@ public int read() throws IOException { throw new IOException("Expected"); } }; + @SuppressWarnings("resource" /* java 7 */) final UnionInputStream u = new UnionInputStream( new ByteArrayInputStream(new byte[]{1,2,3}), errorReadStream); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/GC.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/GC.java index bf3a8a2b0..b0fab6f4b 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/GC.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/GC.java @@ -662,6 +662,7 @@ private PackFile writePack(Set want, JGitText.get().cannotCreateIndexfile, tmpIdx.getPath())); // write the packfile + @SuppressWarnings("resource" /* java 7 */) FileChannel channel = new FileOutputStream(tmpPack).getChannel(); OutputStream channelStream = Channels.newOutputStream(channel); try { @@ -673,6 +674,7 @@ private PackFile writePack(Set want, } // write the packindex + @SuppressWarnings("resource") FileChannel idxChannel = new FileOutputStream(tmpIdx).getChannel(); OutputStream idxStream = Channels.newOutputStream(idxChannel); try { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectoryInserter.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectoryInserter.java index ffd5c4149..a9e403a16 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectoryInserter.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectoryInserter.java @@ -146,6 +146,7 @@ public void release() { } } + @SuppressWarnings("resource" /* java 7 */) private File toTemp(final MessageDigest md, final int type, long len, final InputStream is) throws IOException, FileNotFoundException, Error { @@ -185,6 +186,7 @@ private File toTemp(final MessageDigest md, final int type, long len, } } + @SuppressWarnings("resource" /* java 7 */) private File toTemp(final int type, final byte[] buf, final int pos, final int len) throws IOException, FileNotFoundException { boolean delete = true; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java index c7a94b29e..c2cda5498 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java @@ -1079,7 +1079,7 @@ private void sendPack() throws IOException { private boolean reportInternalServerErrorOverSideband() { try { - @SuppressWarnings("resource") + @SuppressWarnings("resource" /* java 7 */) SideBandOutputStream err = new SideBandOutputStream( SideBandOutputStream.CH_ERROR, SideBandOutputStream.SMALL_BUF, @@ -1121,7 +1121,7 @@ private void sendPack(final boolean sideband) throws IOException { } catch (ServiceMayNotContinueException noPack) { if (sideband && noPack.getMessage() != null) { noPack.setOutput(); - @SuppressWarnings("resource") + @SuppressWarnings("resource" /* java 7 */) SideBandOutputStream err = new SideBandOutputStream( SideBandOutputStream.CH_ERROR, SideBandOutputStream.SMALL_BUF, rawOut); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java index 4abe4a875..0975cd3b4 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/IO.java @@ -216,6 +216,7 @@ public static ByteBuffer readWholeStream(InputStream in, int sizeHint) if (last < 0) return ByteBuffer.wrap(out, 0, pos); + @SuppressWarnings("resource" /* java 7 */) TemporaryBuffer.Heap tmp = new TemporaryBuffer.Heap(Integer.MAX_VALUE); tmp.write(out); tmp.write(last);