Open auto-closeable resources in try-with-resource

When an auto-closeable resources is not opened in try-with-resource,
the warning "should be managed by try-with-resource" is emitted by
Eclipse.

Fix the ones that can be silenced simply by moving the declaration of
the variable into a try-with-resource.

In cases where we explicitly call the close() method, for example in
tests where we are testing specific behavior caused by the close(),
suppress the warning.

Leave the ones that will require more significant refcactoring to fix.
They can be done in separate commits that can be reviewed and tested
in isolation.

Change-Id: I9682cd20fb15167d3c7f9027cecdc82bc50b83c4
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
This commit is contained in:
David Pursehouse 2018-03-13 11:44:23 +09:00 committed by Matthias Sohn
parent e23b09ad6e
commit 5c70be0085
47 changed files with 430 additions and 605 deletions

View File

@ -220,12 +220,9 @@ public static void sendPlainText(final String content,
public static void send(byte[] content, final HttpServletRequest req,
final HttpServletResponse rsp) throws IOException {
content = sendInit(content, req, rsp);
final OutputStream out = rsp.getOutputStream();
try {
try (OutputStream out = rsp.getOutputStream()) {
out.write(content);
out.flush();
} finally {
out.close();
}
}

View File

@ -110,11 +110,8 @@ public void close() throws IOException {
if (256 < out.length() && acceptsGzipEncoding(req)) {
TemporaryBuffer gzbuf = new TemporaryBuffer.Heap(LIMIT);
try {
GZIPOutputStream gzip = new GZIPOutputStream(gzbuf);
try {
try (GZIPOutputStream gzip = new GZIPOutputStream(gzbuf)) {
out.writeTo(gzip, null);
} finally {
gzip.close();
}
if (gzbuf.length() < out.length()) {
out = gzbuf;
@ -131,12 +128,9 @@ public void close() throws IOException {
// hardcoded LIMIT constant above assures us we wouldn't store
// more than 2 GiB of content in memory.
rsp.setContentLength((int) out.length());
final OutputStream os = rsp.getOutputStream();
try {
try (OutputStream os = rsp.getOutputStream()) {
out.writeTo(os, null);
os.flush();
} finally {
os.close();
}
}
}

View File

@ -149,19 +149,15 @@ public void testPush_UnpackError_TruncatedPack() throws Exception {
c.setRequestProperty("Content-Type",
GitSmartHttpTools.RECEIVE_PACK_REQUEST_TYPE);
c.setFixedLengthStreamingMode(reqbin.length);
OutputStream out = c.getOutputStream();
try {
try (OutputStream out = c.getOutputStream()) {
out.write(reqbin);
} finally {
out.close();
}
assertEquals(200, c.getResponseCode());
assertEquals(GitSmartHttpTools.RECEIVE_PACK_RESULT_TYPE,
c.getContentType());
InputStream rawin = c.getInputStream();
try {
try (InputStream rawin = c.getInputStream()) {
PacketLineIn pckin = new PacketLineIn(rawin);
assertEquals("unpack error "
+ JGitText.get().packfileIsTruncatedNoParam,
@ -169,8 +165,6 @@ public void testPush_UnpackError_TruncatedPack() throws Exception {
assertEquals("ng refs/objects/A n/a (unpacker error)",
pckin.readString());
assertSame(PacketLineIn.END, pckin.readString());
} finally {
rawin.close();
}
} finally {
c.disconnect();

View File

@ -107,8 +107,7 @@ public void testSetHeaders() throws IOException {
assertEquals("http", remoteURI.getScheme());
Transport t = Transport.open(dst, remoteURI);
try {
try (Transport t = Transport.open(dst, remoteURI)) {
assertTrue("isa TransportHttp", t instanceof TransportHttp);
assertTrue("isa HttpTransport", t instanceof HttpTransport);
@ -117,8 +116,6 @@ public void testSetHeaders() throws IOException {
headers.put("AnotherKey", "someValue");
((TransportHttp) t).setAdditionalHeaders(headers);
t.openFetch();
} finally {
t.close();
}
List<AccessEvent> requests = getRequests();

View File

@ -267,9 +267,9 @@ public void doFilter(ServletRequest request,
final HttpServletResponse r = (HttpServletResponse) response;
r.setContentType("text/plain");
r.setCharacterEncoding("UTF-8");
PrintWriter w = r.getWriter();
w.print("OK");
w.close();
try (PrintWriter w = r.getWriter()) {
w.print("OK");
}
}
@Override
@ -397,11 +397,8 @@ public void testListRemote() throws IOException {
assertTrue("isa TransportHttp", t instanceof TransportHttp);
assertTrue("isa HttpTransport", t instanceof HttpTransport);
FetchConnection c = t.openFetch();
try {
try (FetchConnection c = t.openFetch()) {
map = c.getRefsMap();
} finally {
c.close();
}
}

View File

@ -94,20 +94,13 @@ public abstract class RepositoryTestCase extends LocalDiskRepositoryTestCase {
*/
protected static void copyFile(final File src, final File dst)
throws IOException {
final FileInputStream fis = new FileInputStream(src);
try {
final FileOutputStream fos = new FileOutputStream(dst);
try {
final byte[] buf = new byte[4096];
int r;
while ((r = fis.read(buf)) > 0) {
fos.write(buf, 0, r);
}
} finally {
fos.close();
try (FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dst)) {
final byte[] buf = new byte[4096];
int r;
while ((r = fis.read(buf)) > 0) {
fos.write(buf, 0, r);
}
} finally {
fis.close();
}
}
@ -293,10 +286,11 @@ protected void resetIndex(FileTreeIterator treeItr)
dce.setFileMode(treeItr.getEntryFileMode());
dce.setLastModified(treeItr.getEntryLastModified());
dce.setLength((int) len);
FileInputStream in = new FileInputStream(
treeItr.getEntryFile());
dce.setObjectId(inserter.insert(Constants.OBJ_BLOB, len, in));
in.close();
try (FileInputStream in = new FileInputStream(
treeItr.getEntryFile())) {
dce.setObjectId(
inserter.insert(Constants.OBJ_BLOB, len, in));
}
builder.add(dce);
treeItr.next(1);
}
@ -380,8 +374,9 @@ public static long fsTick(File lastFile) throws InterruptedException,
while (actTime <= startTime) {
Thread.sleep(sleepTime);
sleepTime *= 2;
FileOutputStream fos = new FileOutputStream(tmp);
fos.close();
try (FileOutputStream fos = new FileOutputStream(tmp)) {
// Do nothing
}
actTime = fs.lastModified(tmp);
}
return actTime;

View File

@ -96,14 +96,9 @@ private String getBundleVersion() {
}
private static String getBundleVersion(URL url) {
try {
InputStream is = url.openStream();
try {
Manifest manifest = new Manifest(is);
return manifest.getMainAttributes().getValue("Bundle-Version"); //$NON-NLS-1$
} finally {
is.close();
}
try (InputStream is = url.openStream()) {
Manifest manifest = new Manifest(is);
return manifest.getMainAttributes().getValue("Bundle-Version"); //$NON-NLS-1$
} catch (IOException e) {
// do nothing - will return null
}

View File

@ -288,11 +288,8 @@ protected void run() throws Exception {
else
rb.findGitDir(dir);
Repository repo = rb.build();
try {
try (Repository repo = rb.build()) {
run(repo);
} finally {
repo.close();
}
}
}

View File

@ -100,39 +100,39 @@ public void setupRepository() throws IOException, JGitInternalException,
File nestedFile = new File(dir, "b.txt");
FileUtils.createNewFile(nestedFile);
PrintWriter nesterFileWriter = new PrintWriter(nestedFile);
nesterFileWriter.print("content");
nesterFileWriter.flush();
try (PrintWriter nestedFileWriter = new PrintWriter(nestedFile)) {
nestedFileWriter.print("content");
nestedFileWriter.flush();
// create file
indexFile = new File(db.getWorkTree(), "a.txt");
FileUtils.createNewFile(indexFile);
PrintWriter writer = new PrintWriter(indexFile);
writer.print("content");
writer.flush();
// create file
indexFile = new File(db.getWorkTree(), "a.txt");
FileUtils.createNewFile(indexFile);
try (PrintWriter writer = new PrintWriter(indexFile)) {
writer.print("content");
writer.flush();
// add file and commit it
git.add().addFilepattern("dir").addFilepattern("a.txt").call();
secondCommit = git.commit().setMessage("adding a.txt and dir/b.txt")
.call();
// add file and commit it
git.add().addFilepattern("dir").addFilepattern("a.txt").call();
secondCommit = git.commit()
.setMessage("adding a.txt and dir/b.txt").call();
prestage = DirCache.read(db.getIndexFile(), db.getFS()).getEntry(
indexFile.getName());
prestage = DirCache.read(db.getIndexFile(), db.getFS())
.getEntry(indexFile.getName());
// modify file and add to index
writer.print("new content");
writer.close();
nesterFileWriter.print("new content");
nesterFileWriter.close();
// modify file and add to index
writer.print("new content");
}
nestedFileWriter.print("new content");
}
git.add().addFilepattern("a.txt").addFilepattern("dir").call();
// create a file not added to the index
untrackedFile = new File(db.getWorkTree(),
"notAddedToIndex.txt");
FileUtils.createNewFile(untrackedFile);
PrintWriter writer2 = new PrintWriter(untrackedFile);
writer2.print("content");
writer2.close();
try (PrintWriter writer2 = new PrintWriter(untrackedFile)) {
writer2.print("content");
}
}
@Test

View File

@ -146,15 +146,15 @@ public void testWhole_SmallObject() throws Exception {
assertFalse("is not large", ol.isLarge());
assertTrue("same content", Arrays.equals(data, ol.getCachedBytes()));
ObjectStream in = ol.openStream();
assertNotNull("have stream", in);
assertEquals(type, in.getType());
assertEquals(data.length, in.getSize());
byte[] data2 = new byte[data.length];
IO.readFully(in, data2, 0, data.length);
assertTrue("same content", Arrays.equals(data2, data));
assertEquals("stream at EOF", -1, in.read());
in.close();
try (ObjectStream in = ol.openStream()) {
assertNotNull("have stream", in);
assertEquals(type, in.getType());
assertEquals(data.length, in.getSize());
byte[] data2 = new byte[data.length];
IO.readFully(in, data2, 0, data.length);
assertTrue("same content", Arrays.equals(data2, data));
assertEquals("stream at EOF", -1, in.read());
}
}
@Test
@ -180,15 +180,15 @@ public void testWhole_LargeObject() throws Exception {
.getMessage());
}
ObjectStream in = ol.openStream();
assertNotNull("have stream", in);
assertEquals(type, in.getType());
assertEquals(data.length, in.getSize());
byte[] data2 = new byte[data.length];
IO.readFully(in, data2, 0, data.length);
assertTrue("same content", Arrays.equals(data2, data));
assertEquals("stream at EOF", -1, in.read());
in.close();
try (ObjectStream in = ol.openStream()) {
assertNotNull("have stream", in);
assertEquals(type, in.getType());
assertEquals(data.length, in.getSize());
byte[] data2 = new byte[data.length];
IO.readFully(in, data2, 0, data.length);
assertTrue("same content", Arrays.equals(data2, data));
assertEquals("stream at EOF", -1, in.read());
}
}
@Test
@ -239,15 +239,15 @@ public void testDelta_SmallObjectChain() throws Exception {
assertNotNull(ol.getCachedBytes());
assertArrayEquals(data3, ol.getCachedBytes());
ObjectStream in = ol.openStream();
assertNotNull("have stream", in);
assertEquals(Constants.OBJ_BLOB, in.getType());
assertEquals(data3.length, in.getSize());
byte[] act = new byte[data3.length];
IO.readFully(in, act, 0, data3.length);
assertTrue("same content", Arrays.equals(act, data3));
assertEquals("stream at EOF", -1, in.read());
in.close();
try (ObjectStream in = ol.openStream()) {
assertNotNull("have stream", in);
assertEquals(Constants.OBJ_BLOB, in.getType());
assertEquals(data3.length, in.getSize());
byte[] act = new byte[data3.length];
IO.readFully(in, act, 0, data3.length);
assertTrue("same content", Arrays.equals(act, data3));
assertEquals("stream at EOF", -1, in.read());
}
}
}
@ -282,22 +282,16 @@ public void testDelta_FailsOver2GiB() throws Exception {
File packName = new File(dir, idA.name() + ".pack");
File idxName = new File(dir, idA.name() + ".idx");
FileOutputStream f = new FileOutputStream(packName);
try {
try (FileOutputStream f = new FileOutputStream(packName)) {
f.write(pack.toByteArray());
} finally {
f.close();
}
f = new FileOutputStream(idxName);
try {
try (FileOutputStream f = new FileOutputStream(idxName)) {
List<PackedObjectInfo> list = new ArrayList<>();
list.add(a);
list.add(b);
Collections.sort(list);
new PackIndexWriterV1(f).write(list, footer);
} finally {
f.close();
}
PackFile packFile = new PackFile(packName, PackExt.INDEX.getBit());
@ -321,16 +315,17 @@ public void testConfigurableStreamFileThreshold() throws Exception {
assertTrue("has blob", wc.has(id));
ObjectLoader ol = wc.open(id);
ObjectStream in = ol.openStream();
assertTrue(in instanceof ObjectStream.SmallStream);
assertEquals(300, in.available());
in.close();
try (ObjectStream in = ol.openStream()) {
assertTrue(in instanceof ObjectStream.SmallStream);
assertEquals(300, in.available());
}
wc.setStreamFileThreshold(299);
ol = wc.open(id);
in = ol.openStream();
assertTrue(in instanceof ObjectStream.Filter);
assertEquals(1, in.available());
try (ObjectStream in = ol.openStream()) {
assertTrue(in instanceof ObjectStream.Filter);
assertEquals(1, in.available());
}
}
private static byte[] clone(int first, byte[] base) {

View File

@ -515,11 +515,8 @@ public void testWriteIndex() throws Exception {
// Validate that an index written by PackWriter is the same.
final File idx2File = new File(indexFile.getAbsolutePath() + ".2");
final FileOutputStream is = new FileOutputStream(idx2File);
try {
try (FileOutputStream is = new FileOutputStream(idx2File)) {
writer.writeIndex(is);
} finally {
is.close();
}
final PackIndex idx2 = PackIndex.open(idx2File);
assertTrue(idx2 instanceof PackIndexV2);
@ -715,14 +712,14 @@ private static PackIndex writePack(FileRepository repo, RevWalk walk,
String id = pw.computeName().getName();
File packdir = repo.getObjectDatabase().getPackDirectory();
File packFile = new File(packdir, "pack-" + id + ".pack");
FileOutputStream packOS = new FileOutputStream(packFile);
pw.writePack(NullProgressMonitor.INSTANCE,
NullProgressMonitor.INSTANCE, packOS);
packOS.close();
try (FileOutputStream packOS = new FileOutputStream(packFile)) {
pw.writePack(NullProgressMonitor.INSTANCE,
NullProgressMonitor.INSTANCE, packOS);
}
File idxFile = new File(packdir, "pack-" + id + ".idx");
FileOutputStream idxOS = new FileOutputStream(idxFile);
pw.writeIndex(idxOS);
idxOS.close();
try (FileOutputStream idxOS = new FileOutputStream(idxFile)) {
pw.writeIndex(idxOS);
}
return PackIndex.open(idxFile);
}
}

View File

@ -137,10 +137,10 @@ public void test000_openRepoBadArgs() throws IOException {
@Test
public void test000_openrepo_default_gitDirSet() throws IOException {
File repo1Parent = new File(trash.getParentFile(), "r1");
Repository repo1initial = new FileRepository(new File(repo1Parent,
Constants.DOT_GIT));
repo1initial.create();
repo1initial.close();
try (Repository repo1initial = new FileRepository(
new File(repo1Parent, Constants.DOT_GIT))) {
repo1initial.create();
}
File theDir = new File(repo1Parent, Constants.DOT_GIT);
FileRepository r = (FileRepository) new FileRepositoryBuilder()
@ -162,10 +162,10 @@ public void test000_openrepo_default_gitDirSet() throws IOException {
public void test000_openrepo_default_gitDirAndWorkTreeSet()
throws IOException {
File repo1Parent = new File(trash.getParentFile(), "r1");
Repository repo1initial = new FileRepository(new File(repo1Parent,
Constants.DOT_GIT));
repo1initial.create();
repo1initial.close();
try (Repository repo1initial = new FileRepository(
new File(repo1Parent, Constants.DOT_GIT))) {
repo1initial.create();
}
File theDir = new File(repo1Parent, Constants.DOT_GIT);
FileRepository r = (FileRepository) new FileRepositoryBuilder()
@ -187,10 +187,10 @@ public void test000_openrepo_default_gitDirAndWorkTreeSet()
@Test
public void test000_openrepo_default_workDirSet() throws IOException {
File repo1Parent = new File(trash.getParentFile(), "r1");
Repository repo1initial = new FileRepository(new File(repo1Parent,
Constants.DOT_GIT));
repo1initial.create();
repo1initial.close();
try (Repository repo1initial = new FileRepository(
new File(repo1Parent, Constants.DOT_GIT))) {
repo1initial.create();
}
File theDir = new File(repo1Parent, Constants.DOT_GIT);
FileRepository r = (FileRepository) new FileRepositoryBuilder()
@ -213,13 +213,13 @@ public void test000_openrepo_default_absolute_workdirconfig()
File repo1Parent = new File(trash.getParentFile(), "r1");
File workdir = new File(trash.getParentFile(), "rw");
FileUtils.mkdir(workdir);
FileRepository repo1initial = new FileRepository(new File(repo1Parent,
Constants.DOT_GIT));
repo1initial.create();
final FileBasedConfig cfg = repo1initial.getConfig();
cfg.setString("core", null, "worktree", workdir.getAbsolutePath());
cfg.save();
repo1initial.close();
try (FileRepository repo1initial = new FileRepository(
new File(repo1Parent, Constants.DOT_GIT))) {
repo1initial.create();
final FileBasedConfig cfg = repo1initial.getConfig();
cfg.setString("core", null, "worktree", workdir.getAbsolutePath());
cfg.save();
}
File theDir = new File(repo1Parent, Constants.DOT_GIT);
FileRepository r = (FileRepository) new FileRepositoryBuilder()
@ -242,13 +242,13 @@ public void test000_openrepo_default_relative_workdirconfig()
File repo1Parent = new File(trash.getParentFile(), "r1");
File workdir = new File(trash.getParentFile(), "rw");
FileUtils.mkdir(workdir);
FileRepository repo1initial = new FileRepository(new File(repo1Parent,
Constants.DOT_GIT));
repo1initial.create();
final FileBasedConfig cfg = repo1initial.getConfig();
cfg.setString("core", null, "worktree", "../../rw");
cfg.save();
repo1initial.close();
try (FileRepository repo1initial = new FileRepository(
new File(repo1Parent, Constants.DOT_GIT))) {
repo1initial.create();
final FileBasedConfig cfg = repo1initial.getConfig();
cfg.setString("core", null, "worktree", "../../rw");
cfg.save();
}
File theDir = new File(repo1Parent, Constants.DOT_GIT);
FileRepository r = (FileRepository) new FileRepositoryBuilder()
@ -273,26 +273,24 @@ public void test000_openrepo_alternate_index_file_and_objdirs()
File indexFile = new File(trash, "idx");
File objDir = new File(trash, "../obj");
File altObjDir = db.getObjectDatabase().getDirectory();
Repository repo1initial = new FileRepository(new File(repo1Parent,
Constants.DOT_GIT));
repo1initial.create();
repo1initial.close();
try (Repository repo1initial = new FileRepository(
new File(repo1Parent, Constants.DOT_GIT))) {
repo1initial.create();
}
File theDir = new File(repo1Parent, Constants.DOT_GIT);
FileRepository r = (FileRepository) new FileRepositoryBuilder() //
try (FileRepository r = (FileRepository) new FileRepositoryBuilder() //
.setGitDir(theDir).setObjectDirectory(objDir) //
.addAlternateObjectDirectory(altObjDir) //
.setIndexFile(indexFile) //
.build();
assertEqualsPath(theDir, r.getDirectory());
assertEqualsPath(theDir.getParentFile(), r.getWorkTree());
assertEqualsPath(indexFile, r.getIndexFile());
assertEqualsPath(objDir, r.getObjectDatabase().getDirectory());
assertNotNull(r.open(ObjectId
.fromString("6db9c2ebf75590eef973081736730a9ea169a0c4")));
// Must close or the default repo pack files created by this test gets
// locked via the alternate object directories on Windows.
r.close();
.build()) {
assertEqualsPath(theDir, r.getDirectory());
assertEqualsPath(theDir.getParentFile(), r.getWorkTree());
assertEqualsPath(indexFile, r.getIndexFile());
assertEqualsPath(objDir, r.getObjectDatabase().getDirectory());
assertNotNull(r.open(ObjectId
.fromString("6db9c2ebf75590eef973081736730a9ea169a0c4")));
}
}
protected void assertEqualsPath(File expected, File actual)
@ -417,14 +415,11 @@ public void test009_CreateCommitOldFormat() throws IOException {
// Verify the commit we just wrote is in the correct format.
ObjectDatabase odb = db.getObjectDatabase();
assertTrue("is ObjectDirectory", odb instanceof ObjectDirectory);
final XInputStream xis = new XInputStream(new FileInputStream(
((ObjectDirectory) odb).fileFor(cmtid)));
try {
try (XInputStream xis = new XInputStream(
new FileInputStream(((ObjectDirectory) odb).fileFor(cmtid)))) {
assertEquals(0x78, xis.readUInt8());
assertEquals(0x9c, xis.readUInt8());
assertEquals(0, 0x789c % 31);
} finally {
xis.close();
}
// Verify we can read it.

View File

@ -130,15 +130,15 @@ public void testStandardFormat_SmallObject() throws Exception {
assertFalse("is not large", ol.isLarge());
assertTrue("same content", Arrays.equals(data, ol.getCachedBytes()));
ObjectStream in = ol.openStream();
assertNotNull("have stream", in);
assertEquals(type, in.getType());
assertEquals(data.length, in.getSize());
byte[] data2 = new byte[data.length];
IO.readFully(in, data2, 0, data.length);
assertTrue("same content", Arrays.equals(data2, data));
assertEquals("stream at EOF", -1, in.read());
in.close();
try (ObjectStream in = ol.openStream()) {
assertNotNull("have stream", in);
assertEquals(type, in.getType());
assertEquals(data.length, in.getSize());
byte[] data2 = new byte[data.length];
IO.readFully(in, data2, 0, data.length);
assertTrue("same content", Arrays.equals(data2, data));
assertEquals("stream at EOF", -1, in.read());
}
}
@Test
@ -150,11 +150,8 @@ public void testStandardFormat_LargeObject() throws Exception {
ObjectLoader ol;
{
FileInputStream fs = new FileInputStream(path(id));
try {
try (FileInputStream fs = new FileInputStream(path(id))) {
ol = UnpackedObject.open(fs, path(id), id, wc);
} finally {
fs.close();
}
}
@ -171,15 +168,15 @@ public void testStandardFormat_LargeObject() throws Exception {
.getMessage());
}
ObjectStream in = ol.openStream();
assertNotNull("have stream", in);
assertEquals(type, in.getType());
assertEquals(data.length, in.getSize());
byte[] data2 = new byte[data.length];
IO.readFully(in, data2, 0, data.length);
assertTrue("same content", Arrays.equals(data2, data));
assertEquals("stream at EOF", -1, in.read());
in.close();
try (ObjectStream in = ol.openStream()) {
assertNotNull("have stream", in);
assertEquals(type, in.getType());
assertEquals(data.length, in.getSize());
byte[] data2 = new byte[data.length];
IO.readFully(in, data2, 0, data.length);
assertTrue("same content", Arrays.equals(data2, data));
assertEquals("stream at EOF", -1, in.read());
}
}
@Test
@ -316,23 +313,13 @@ public void testStandardFormat_LargeObject_CorruptZLibStream()
write(id, gz);
ObjectLoader ol;
{
FileInputStream fs = new FileInputStream(path(id));
try {
ol = UnpackedObject.open(fs, path(id), id, wc);
} finally {
fs.close();
}
try (FileInputStream fs = new FileInputStream(path(id))) {
ol = UnpackedObject.open(fs, path(id), id, wc);
}
try {
byte[] tmp = new byte[data.length];
InputStream in = ol.openStream();
try {
IO.readFully(in, tmp, 0, tmp.length);
} finally {
in.close();
}
byte[] tmp = new byte[data.length];
try (InputStream in = ol.openStream()) {
IO.readFully(in, tmp, 0, tmp.length);
fail("Did not throw CorruptObjectException");
} catch (CorruptObjectException coe) {
assertEquals(MessageFormat.format(JGitText.get().objectIsCorrupt,
@ -354,16 +341,12 @@ public void testStandardFormat_LargeObject_TruncatedZLibStream()
write(id, tr);
ObjectLoader ol;
{
FileInputStream fs = new FileInputStream(path(id));
try {
ol = UnpackedObject.open(fs, path(id), id, wc);
} finally {
fs.close();
}
try (FileInputStream fs = new FileInputStream(path(id))) {
ol = UnpackedObject.open(fs, path(id), id, wc);
}
byte[] tmp = new byte[data.length];
@SuppressWarnings("resource") // We are testing that the close() method throws
InputStream in = ol.openStream();
IO.readFully(in, tmp, 0, tmp.length);
try {
@ -389,16 +372,12 @@ public void testStandardFormat_LargeObject_TrailingGarbage()
write(id, tr);
ObjectLoader ol;
{
FileInputStream fs = new FileInputStream(path(id));
try {
ol = UnpackedObject.open(fs, path(id), id, wc);
} finally {
fs.close();
}
try (FileInputStream fs = new FileInputStream(path(id))) {
ol = UnpackedObject.open(fs, path(id), id, wc);
}
byte[] tmp = new byte[data.length];
@SuppressWarnings("resource") // We are testing that the close() method throws
InputStream in = ol.openStream();
IO.readFully(in, tmp, 0, tmp.length);
try {
@ -426,14 +405,15 @@ public void testPackFormat_SmallObject() throws Exception {
assertFalse("is not large", ol.isLarge());
assertTrue("same content", Arrays.equals(data, ol.getCachedBytes()));
ObjectStream in = ol.openStream();
assertNotNull("have stream", in);
assertEquals(type, in.getType());
assertEquals(data.length, in.getSize());
byte[] data2 = new byte[data.length];
IO.readFully(in, data2, 0, data.length);
assertTrue("same content", Arrays.equals(data, ol.getCachedBytes()));
in.close();
try (ObjectStream in = ol.openStream()) {
assertNotNull("have stream", in);
assertEquals(type, in.getType());
assertEquals(data.length, in.getSize());
byte[] data2 = new byte[data.length];
IO.readFully(in, data2, 0, data.length);
assertTrue("same content",
Arrays.equals(data, ol.getCachedBytes()));
}
}
@Test
@ -444,13 +424,8 @@ public void testPackFormat_LargeObject() throws Exception {
write(id, compressPackFormat(type, data));
ObjectLoader ol;
{
FileInputStream fs = new FileInputStream(path(id));
try {
ol = UnpackedObject.open(fs, path(id), id, wc);
} finally {
fs.close();
}
try (FileInputStream fs = new FileInputStream(path(id))) {
ol = UnpackedObject.open(fs, path(id), id, wc);
}
assertNotNull("created loader", ol);
@ -466,15 +441,15 @@ public void testPackFormat_LargeObject() throws Exception {
.getMessage());
}
ObjectStream in = ol.openStream();
assertNotNull("have stream", in);
assertEquals(type, in.getType());
assertEquals(data.length, in.getSize());
byte[] data2 = new byte[data.length];
IO.readFully(in, data2, 0, data.length);
assertTrue("same content", Arrays.equals(data2, data));
assertEquals("stream at EOF", -1, in.read());
in.close();
try (ObjectStream in = ol.openStream()) {
assertNotNull("have stream", in);
assertEquals(type, in.getType());
assertEquals(data.length, in.getSize());
byte[] data2 = new byte[data.length];
IO.readFully(in, data2, 0, data.length);
assertTrue("same content", Arrays.equals(data2, data));
assertEquals("stream at EOF", -1, in.read());
}
}
@Test
@ -573,11 +548,8 @@ private File path(ObjectId id) {
private void write(ObjectId id, byte[] data) throws IOException {
File path = path(id);
FileUtils.mkdirs(path.getParentFile());
FileOutputStream out = new FileOutputStream(path);
try {
try (FileOutputStream out = new FileOutputStream(path)) {
out.write(data);
} finally {
out.close();
}
}

View File

@ -74,11 +74,10 @@ public void setUp() throws Exception {
super.setUp();
toLoad = new ArrayList<>();
final BufferedReader br = new BufferedReader(new InputStreamReader(
try (BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(JGitTestUtil
.getTestResourceFile("all_packed_objects.txt")),
Constants.CHARSET));
try {
Constants.CHARSET))) {
String line;
while ((line = br.readLine()) != null) {
final String[] parts = line.split(" {1,}");
@ -90,8 +89,6 @@ public void setUp() throws Exception {
// parts[4] is the offset in the pack
toLoad.add(o);
}
} finally {
br.close();
}
assertEquals(96, toLoad.size());
}

View File

@ -176,12 +176,9 @@ public void testRacyGitDetection() throws Exception {
private File addToWorkDir(String path, String content) throws IOException {
File f = new File(db.getWorkTree(), path);
FileOutputStream fos = new FileOutputStream(f);
try {
try (FileOutputStream fos = new FileOutputStream(f)) {
fos.write(content.getBytes(Constants.CHARACTER_ENCODING));
return f;
} finally {
fos.close();
}
}
}

View File

@ -253,11 +253,11 @@ public void testReadLoosePackedRef() throws IOException,
InterruptedException {
Ref ref = db.exactRef("refs/heads/master");
assertEquals(Storage.PACKED, ref.getStorage());
FileOutputStream os = new FileOutputStream(new File(db.getDirectory(),
"refs/heads/master"));
os.write(ref.getObjectId().name().getBytes());
os.write('\n');
os.close();
try (FileOutputStream os = new FileOutputStream(
new File(db.getDirectory(), "refs/heads/master"))) {
os.write(ref.getObjectId().name().getBytes());
os.write('\n');
}
ref = db.exactRef("refs/heads/master");
assertEquals(Storage.LOOSE, ref.getStorage());

View File

@ -94,24 +94,25 @@ public void testBareFileKey() throws IOException {
@Test
public void testFileKeyOpenExisting() throws IOException {
Repository r;
try (Repository r = new FileKey(db.getDirectory(), db.getFS())
.open(true)) {
assertNotNull(r);
assertEqualsFile(db.getDirectory(), r.getDirectory());
}
r = new FileKey(db.getDirectory(), db.getFS()).open(true);
assertNotNull(r);
assertEqualsFile(db.getDirectory(), r.getDirectory());
r.close();
r = new FileKey(db.getDirectory(), db.getFS()).open(false);
assertNotNull(r);
assertEqualsFile(db.getDirectory(), r.getDirectory());
r.close();
try (Repository r = new FileKey(db.getDirectory(), db.getFS())
.open(false)) {
assertNotNull(r);
assertEqualsFile(db.getDirectory(), r.getDirectory());
}
}
@Test
public void testFileKeyOpenNew() throws IOException {
final Repository n = createRepository(true, false);
final File gitdir = n.getDirectory();
n.close();
File gitdir;
try (Repository n = createRepository(true, false)) {
gitdir = n.getDirectory();
}
recursiveDelete(gitdir);
assertFalse(gitdir.exists());
@ -143,6 +144,7 @@ public void testCacheRegisterOpen() throws Exception {
@Test
public void testCacheOpen() throws Exception {
final FileKey loc = FileKey.exact(db.getDirectory(), db.getFS());
@SuppressWarnings("resource") // We are testing the close() method
final Repository d2 = RepositoryCache.open(loc);
assertNotSame(db, d2);
assertSame(d2, RepositoryCache.open(FileKey.exact(loc.getFile(), db.getFS())));
@ -176,6 +178,7 @@ public void testUnregister() {
@Test
public void testRepositoryUsageCount() throws Exception {
FileKey loc = FileKey.exact(db.getDirectory(), db.getFS());
@SuppressWarnings("resource") // We are testing the close() method
Repository d2 = RepositoryCache.open(loc);
assertEquals(1, d2.useCnt.get());
RepositoryCache.open(FileKey.exact(loc.getFile(), db.getFS()));
@ -189,6 +192,7 @@ public void testRepositoryUsageCount() throws Exception {
@Test
public void testRepositoryUsageCountWithRegisteredRepository()
throws IOException {
@SuppressWarnings("resource") // We are testing the close() method
Repository repo = createRepository(false, false);
assertEquals(1, repo.useCnt.get());
RepositoryCache.register(repo);
@ -200,6 +204,7 @@ public void testRepositoryUsageCountWithRegisteredRepository()
@Test
public void testRepositoryNotUnregisteringWhenClosing() throws Exception {
FileKey loc = FileKey.exact(db.getDirectory(), db.getFS());
@SuppressWarnings("resource") // We are testing the close() method
Repository d2 = RepositoryCache.open(loc);
assertEquals(1, d2.useCnt.get());
assertThat(RepositoryCache.getRegisteredKeys(),
@ -214,6 +219,7 @@ public void testRepositoryNotUnregisteringWhenClosing() throws Exception {
@Test
public void testRepositoryUnregisteringWhenExpiredAndUsageCountNegative()
throws Exception {
@SuppressWarnings("resource") // We are testing the close() method
Repository repoA = createBareRepository();
RepositoryCache.register(repoA);
@ -234,7 +240,9 @@ public void testRepositoryUnregisteringWhenExpiredAndUsageCountNegative()
@Test
public void testRepositoryUnregisteringWhenExpired() throws Exception {
@SuppressWarnings("resource") // We are testing the close() method
Repository repoA = createRepository(true, false);
@SuppressWarnings("resource") // We are testing the close() method
Repository repoB = createRepository(true, false);
Repository repoC = createBareRepository();
RepositoryCache.register(repoA);
@ -268,6 +276,7 @@ public void testRepositoryUnregisteringWhenExpired() throws Exception {
@Test
public void testReconfigure() throws InterruptedException, IOException {
@SuppressWarnings("resource") // We are testing the close() method
Repository repo = createRepository(false, false);
RepositoryCache.register(repo);
assertTrue(RepositoryCache.isCached(repo));

View File

@ -66,12 +66,9 @@ public void testReadWriteMergeMsg() throws IOException {
db.writeSquashCommitMsg(null);
assertEquals(db.readSquashCommitMsg(), null);
assertFalse(new File(db.getDirectory(), Constants.SQUASH_MSG).exists());
FileOutputStream fos = new FileOutputStream(new File(db.getDirectory(),
Constants.SQUASH_MSG));
try {
try (FileOutputStream fos = new FileOutputStream(
new File(db.getDirectory(), Constants.SQUASH_MSG))) {
fos.write(squashMsg.getBytes(Constants.CHARACTER_ENCODING));
} finally {
fos.close();
}
assertEquals(db.readSquashCommitMsg(), squashMsg);
}

View File

@ -1033,19 +1033,21 @@ public void checkLockedFilesToBeDeleted(MergeStrategy strategy)
git.commit().setMessage("added c.txt").call();
// Get a handle to the the file so on windows it can't be deleted.
FileInputStream fis = new FileInputStream(new File(db.getWorkTree(),
"b.txt"));
MergeResult mergeRes = git.merge().setStrategy(strategy)
.include(masterCommit).call();
if (mergeRes.getMergeStatus().equals(MergeStatus.FAILED)) {
// probably windows
assertEquals(1, mergeRes.getFailingPaths().size());
assertEquals(MergeFailureReason.COULD_NOT_DELETE, mergeRes
.getFailingPaths().get("b.txt"));
try (FileInputStream fis = new FileInputStream(
new File(db.getWorkTree(), "b.txt"))) {
MergeResult mergeRes = git.merge().setStrategy(strategy)
.include(masterCommit).call();
if (mergeRes.getMergeStatus().equals(MergeStatus.FAILED)) {
// probably windows
assertEquals(1, mergeRes.getFailingPaths().size());
assertEquals(MergeFailureReason.COULD_NOT_DELETE,
mergeRes.getFailingPaths().get("b.txt"));
}
assertEquals(
"[a.txt, mode:100644, content:master]"
+ "[c.txt, mode:100644, content:side]",
indexState(CONTENT));
}
assertEquals("[a.txt, mode:100644, content:master]"
+ "[c.txt, mode:100644, content:side]", indexState(CONTENT));
fis.close();
}
@Theory

View File

@ -96,17 +96,14 @@ public void testError_CcTruncatedOld() throws IOException {
private Patch parseTestPatchFile() throws IOException {
final String patchFile = JGitTestUtil.getName() + ".patch";
final InputStream in = getClass().getResourceAsStream(patchFile);
if (in == null) {
fail("No " + patchFile + " test vector");
return null; // Never happens
}
try {
try (InputStream in = getClass().getResourceAsStream(patchFile)) {
if (in == null) {
fail("No " + patchFile + " test vector");
return null; // Never happens
}
final Patch p = new Patch();
p.parse(in);
return p;
} finally {
in.close();
}
}

View File

@ -199,17 +199,14 @@ public void testParse_CcDeleteFile() throws IOException {
private Patch parseTestPatchFile() throws IOException {
final String patchFile = JGitTestUtil.getName() + ".patch";
final InputStream in = getClass().getResourceAsStream(patchFile);
if (in == null) {
fail("No " + patchFile + " test vector");
return null; // Never happens
}
try {
try (InputStream in = getClass().getResourceAsStream(patchFile)) {
if (in == null) {
fail("No " + patchFile + " test vector");
return null; // Never happens
}
final Patch p = new Patch();
p.parse(in);
return p;
} finally {
in.close();
}
}
}

View File

@ -177,17 +177,14 @@ public void testError_GitBinaryNoForwardHunk() throws IOException {
private Patch parseTestPatchFile() throws IOException {
final String patchFile = JGitTestUtil.getName() + ".patch";
final InputStream in = getClass().getResourceAsStream(patchFile);
if (in == null) {
fail("No " + patchFile + " test vector");
return null; // Never happens
}
try {
try (InputStream in = getClass().getResourceAsStream(patchFile)) {
if (in == null) {
fail("No " + patchFile + " test vector");
return null; // Never happens
}
final Patch p = new Patch();
p.parse(in);
return p;
} finally {
in.close();
}
}
}

View File

@ -357,17 +357,14 @@ public void testParse_AddNoNewline() throws IOException {
private Patch parseTestPatchFile() throws IOException {
final String patchFile = JGitTestUtil.getName() + ".patch";
final InputStream in = getClass().getResourceAsStream(patchFile);
if (in == null) {
fail("No " + patchFile + " test vector");
return null; // Never happens
}
try {
try (InputStream in = getClass().getResourceAsStream(patchFile)) {
if (in == null) {
fail("No " + patchFile + " test vector");
return null; // Never happens
}
final Patch p = new Patch();
p.parse(in);
return p;
} finally {
in.close();
}
}
}

View File

@ -129,10 +129,11 @@ public void addSubmodule() throws Exception {
command.setPath(path);
String uri = db.getDirectory().toURI().toString();
command.setURI(uri);
Repository repo = command.call();
assertNotNull(repo);
ObjectId subCommit = repo.resolve(Constants.HEAD);
repo.close();
ObjectId subCommit;
try (Repository repo = command.call()) {
assertNotNull(repo);
subCommit = repo.resolve(Constants.HEAD);
}
SubmoduleWalk generator = SubmoduleWalk.forIndex(db);
assertTrue(generator.next());
@ -141,10 +142,10 @@ public void addSubmodule() throws Exception {
assertEquals(uri, generator.getModulesUrl());
assertEquals(path, generator.getModulesPath());
assertEquals(uri, generator.getConfigUrl());
Repository subModRepo = generator.getRepository();
assertNotNull(subModRepo);
assertEquals(subCommit, commit);
subModRepo.close();
try (Repository subModRepo = generator.getRepository()) {
assertNotNull(subModRepo);
assertEquals(subCommit, commit);
}
Status status = Git.wrap(db).status().call();
assertTrue(status.getAdded().contains(Constants.DOT_GIT_MODULES));
@ -209,16 +210,14 @@ public void addSubmoduleWithRelativeUri() throws Exception {
fullUri = fullUri.replace('\\', '/');
}
assertEquals(fullUri, generator.getConfigUrl());
Repository subModRepo = generator.getRepository();
assertNotNull(subModRepo);
assertEquals(
fullUri,
subModRepo
.getConfig()
.getString(ConfigConstants.CONFIG_REMOTE_SECTION,
Constants.DEFAULT_REMOTE_NAME,
ConfigConstants.CONFIG_KEY_URL));
subModRepo.close();
try (Repository subModRepo = generator.getRepository()) {
assertNotNull(subModRepo);
assertEquals(fullUri,
subModRepo.getConfig().getString(
ConfigConstants.CONFIG_REMOTE_SECTION,
Constants.DEFAULT_REMOTE_NAME,
ConfigConstants.CONFIG_KEY_URL));
}
assertEquals(commit, repo.resolve(Constants.HEAD));
Status status = Git.wrap(db).status().call();

View File

@ -135,12 +135,14 @@ public void apply(DirCacheEntry ent) {
generator = SubmoduleWalk.forIndex(db);
assertTrue(generator.next());
assertEquals(url, generator.getConfigUrl());
Repository subModRepository = generator.getRepository();
StoredConfig submoduleConfig = subModRepository.getConfig();
subModRepository.close();
assertEquals(url, submoduleConfig.getString(
ConfigConstants.CONFIG_REMOTE_SECTION,
Constants.DEFAULT_REMOTE_NAME, ConfigConstants.CONFIG_KEY_URL));
try (Repository subModRepository = generator.getRepository()) {
StoredConfig submoduleConfig = subModRepository.getConfig();
assertEquals(url,
submoduleConfig.getString(
ConfigConstants.CONFIG_REMOTE_SECTION,
Constants.DEFAULT_REMOTE_NAME,
ConfigConstants.CONFIG_KEY_URL));
}
}
@Test
@ -208,11 +210,13 @@ public void apply(DirCacheEntry ent) {
generator = SubmoduleWalk.forIndex(db);
assertTrue(generator.next());
assertEquals("git://server/sub.git", generator.getConfigUrl());
Repository subModRepository1 = generator.getRepository();
StoredConfig submoduleConfig = subModRepository1.getConfig();
subModRepository1.close();
assertEquals("git://server/sub.git", submoduleConfig.getString(
ConfigConstants.CONFIG_REMOTE_SECTION,
Constants.DEFAULT_REMOTE_NAME, ConfigConstants.CONFIG_KEY_URL));
try (Repository subModRepository1 = generator.getRepository()) {
StoredConfig submoduleConfig = subModRepository1.getConfig();
assertEquals("git://server/sub.git",
submoduleConfig.getString(
ConfigConstants.CONFIG_REMOTE_SECTION,
Constants.DEFAULT_REMOTE_NAME,
ConfigConstants.CONFIG_KEY_URL));
}
}
}

View File

@ -121,10 +121,10 @@ public void apply(DirCacheEntry ent) {
SubmoduleWalk generator = SubmoduleWalk.forIndex(db);
assertTrue(generator.next());
Repository subRepo = generator.getRepository();
assertNotNull(subRepo);
assertEquals(commit, subRepo.resolve(Constants.HEAD));
subRepo.close();
try (Repository subRepo = generator.getRepository()) {
assertNotNull(subRepo);
assertEquals(commit, subRepo.resolve(Constants.HEAD));
}
}
@Test

View File

@ -74,10 +74,10 @@ public void setUp() throws Exception {
}
private void config(final String data) throws IOException {
final OutputStreamWriter fw = new OutputStreamWriter(
new FileOutputStream(configFile), "UTF-8");
fw.write(data);
fw.close();
try (OutputStreamWriter fw = new OutputStreamWriter(
new FileOutputStream(configFile), "UTF-8")) {
fw.write(data);
}
}
@Test

View File

@ -93,8 +93,7 @@ public class PackParserTest extends RepositoryTestCase {
@Test
public void test1() throws IOException {
File packFile = JGitTestUtil.getTestResourceFile("pack-34be9032ac282b11fa9babdc2b2a93ca996c9c2f.pack");
final InputStream is = new FileInputStream(packFile);
try {
try (InputStream is = new FileInputStream(packFile)) {
ObjectDirectoryPackParser p = (ObjectDirectoryPackParser) index(is);
p.parse(NullProgressMonitor.INSTANCE);
PackFile file = p.getPackFile();
@ -107,8 +106,6 @@ public void test1() throws IOException {
assertTrue(file.hasObject(ObjectId.fromString("902d5476fa249b7abc9d84c611577a81381f0327")));
assertTrue(file.hasObject(ObjectId.fromString("aabf2ffaec9b497f0950352b3e582d73035c2035")));
assertTrue(file.hasObject(ObjectId.fromString("c59759f143fb1fe21c197981df75a7ee00290799")));
} finally {
is.close();
}
}
@ -121,8 +118,7 @@ public void test1() throws IOException {
@Test
public void test2() throws IOException {
File packFile = JGitTestUtil.getTestResourceFile("pack-df2982f284bbabb6bdb59ee3fcc6eb0983e20371.pack");
final InputStream is = new FileInputStream(packFile);
try {
try (InputStream is = new FileInputStream(packFile)) {
ObjectDirectoryPackParser p = (ObjectDirectoryPackParser) index(is);
p.parse(NullProgressMonitor.INSTANCE);
PackFile file = p.getPackFile();
@ -140,8 +136,6 @@ public void test2() throws IOException {
assertTrue(file.hasObject(ObjectId.fromString("20a8ade77639491ea0bd667bf95de8abf3a434c8")));
assertTrue(file.hasObject(ObjectId.fromString("2675188fd86978d5bc4d7211698b2118ae3bf658")));
// and lots more...
} finally {
is.close();
}
}

View File

@ -419,12 +419,9 @@ static String publicAddress() throws Exception {
URLConnection c = url.openConnection();
c.setConnectTimeout(500);
c.setReadTimeout(500);
BufferedReader reader = new BufferedReader(
new InputStreamReader(c.getInputStream()));
try {
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(c.getInputStream()))) {
return reader.readLine();
} finally {
reader.close();
}
} catch (UnknownHostException | SocketTimeoutException e) {
return "Can't reach http://checkip.amazonaws.com to"
@ -654,9 +651,9 @@ static void configCreate(String algorithm) throws Exception {
Properties props = Props.discover();
props.put(AmazonS3.Keys.PASSWORD, JGIT_PASS);
props.put(AmazonS3.Keys.CRYPTO_ALG, algorithm);
PrintWriter writer = new PrintWriter(JGIT_CONF_FILE);
props.store(writer, "JGIT S3 connection configuration file.");
writer.close();
try (PrintWriter writer = new PrintWriter(JGIT_CONF_FILE)) {
props.store(writer, "JGIT S3 connection configuration file.");
}
}
/**
@ -668,9 +665,9 @@ static void configCreate(String algorithm) throws Exception {
static void configCreate(Properties source) throws Exception {
Properties target = Props.discover();
target.putAll(source);
PrintWriter writer = new PrintWriter(JGIT_CONF_FILE);
target.store(writer, "JGIT S3 connection configuration file.");
writer.close();
try (PrintWriter writer = new PrintWriter(JGIT_CONF_FILE)) {
target.store(writer, "JGIT S3 connection configuration file.");
}
}
/**
@ -836,10 +833,10 @@ static void verifyCrypto(WalkEncryption crypto) throws IOException {
{
byte[] origin = sourceText.getBytes(charset);
ByteArrayOutputStream target = new ByteArrayOutputStream();
OutputStream source = crypto.encrypt(target);
source.write(origin);
source.flush();
source.close();
try (OutputStream source = crypto.encrypt(target)) {
source.write(origin);
source.flush();
}
cipherText = target.toByteArray();
}
{
@ -1074,10 +1071,10 @@ void cryptoTest(Properties props) throws Exception {
remoteConfig.update(config);
config.save();
Git git = Git.open(dirOne);
git.checkout().setName("master").call();
git.push().setRemote(remote).setRefSpecs(specs).call();
git.close();
try (Git git = Git.open(dirOne)) {
git.checkout().setName("master").call();
git.push().setRemote(remote).setRefSpecs(specs).call();
}
File fileStatic = new File(dirOne, nameStatic);
assertTrue("Provided by setup", fileStatic.exists());
@ -1089,11 +1086,11 @@ void cryptoTest(Properties props) throws Exception {
File fileStatic = new File(dirTwo, nameStatic);
assertFalse("Not Provided by setup", fileStatic.exists());
Git git = Git.cloneRepository().setURI(uri).setDirectory(dirTwo)
.call();
git.close();
try (Git git = Git.cloneRepository().setURI(uri)
.setDirectory(dirTwo).call()) {
assertTrue("Provided by clone", fileStatic.exists());
}
assertTrue("Provided by clone", fileStatic.exists());
}
{ // Verify static file content.
@ -1111,11 +1108,11 @@ void cryptoTest(Properties props) throws Exception {
assertTrue("Provided by create", fileDynamic.exists());
assertTrue("Need content to encrypt", fileDynamic.length() > 0);
Git git = Git.open(dirOne);
git.add().addFilepattern(nameDynamic).call();
git.commit().setMessage(nameDynamic).call();
git.push().setRemote(remote).setRefSpecs(specs).call();
git.close();
try (Git git = Git.open(dirOne)) {
git.add().addFilepattern(nameDynamic).call();
git.commit().setMessage(nameDynamic).call();
git.push().setRemote(remote).setRefSpecs(specs).call();
}
}
@ -1124,9 +1121,9 @@ void cryptoTest(Properties props) throws Exception {
File fileDynamic = new File(dirTwo, nameDynamic);
assertFalse("Not Provided by setup", fileDynamic.exists());
Git git = Git.open(dirTwo);
git.pull().call();
git.close();
try (Git git = Git.open(dirTwo)) {
git.pull().call();
}
assertTrue("Provided by pull", fileDynamic.exists());
}

View File

@ -57,12 +57,13 @@
public class NotTreeFilterTest extends RepositoryTestCase {
@Test
public void testWrap() throws Exception {
final TreeWalk tw = new TreeWalk(db);
final TreeFilter a = TreeFilter.ALL;
final TreeFilter n = NotTreeFilter.create(a);
assertNotNull(n);
assertTrue(a.include(tw));
assertFalse(n.include(tw));
try (TreeWalk tw = new TreeWalk(db)) {
final TreeFilter a = TreeFilter.ALL;
final TreeFilter n = NotTreeFilter.create(a);
assertNotNull(n);
assertTrue(a.include(tw));
assertFalse(n.include(tw));
}
}
@Test

View File

@ -87,10 +87,8 @@ public void testOneByte() throws IOException {
assertEquals(1, r.length);
assertEquals(test, r[0]);
}
{
final ByteArrayOutputStream o = new ByteArrayOutputStream();
try (ByteArrayOutputStream o = new ByteArrayOutputStream()) {
b.writeTo(o, null);
o.close();
final byte[] r = o.toByteArray();
assertEquals(1, r.length);
assertEquals(test, r[0]);
@ -118,10 +116,8 @@ public void testOneBlock_BulkWrite() throws IOException {
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
}
{
final ByteArrayOutputStream o = new ByteArrayOutputStream();
try (ByteArrayOutputStream o = new ByteArrayOutputStream()) {
b.writeTo(o, null);
o.close();
final byte[] r = o.toByteArray();
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
@ -149,10 +145,8 @@ public void testOneBlockAndHalf_BulkWrite() throws IOException {
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
}
{
final ByteArrayOutputStream o = new ByteArrayOutputStream();
try (ByteArrayOutputStream o = new ByteArrayOutputStream()) {
b.writeTo(o, null);
o.close();
final byte[] r = o.toByteArray();
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
@ -178,10 +172,8 @@ public void testOneBlockAndHalf_SingleWrite() throws IOException {
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
}
{
final ByteArrayOutputStream o = new ByteArrayOutputStream();
try (ByteArrayOutputStream o = new ByteArrayOutputStream()) {
b.writeTo(o, null);
o.close();
final byte[] r = o.toByteArray();
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
@ -208,10 +200,8 @@ public void testOneBlockAndHalf_Copy() throws IOException {
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
}
{
final ByteArrayOutputStream o = new ByteArrayOutputStream();
try (ByteArrayOutputStream o = new ByteArrayOutputStream()) {
b.writeTo(o, null);
o.close();
final byte[] r = o.toByteArray();
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
@ -236,10 +226,8 @@ public void testLarge_SingleWrite() throws IOException {
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
}
{
final ByteArrayOutputStream o = new ByteArrayOutputStream();
try (ByteArrayOutputStream o = new ByteArrayOutputStream()) {
b.writeTo(o, null);
o.close();
final byte[] r = o.toByteArray();
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
@ -253,14 +241,13 @@ public void testLarge_SingleWrite() throws IOException {
public void testInCoreInputStream() throws IOException {
final int cnt = 256;
final byte[] test = new TestRng(getName()).nextBytes(cnt);
final TemporaryBuffer.Heap b = new TemporaryBuffer.Heap(cnt + 4);
b.write(test);
b.close();
InputStream in = b.openInputStream();
byte[] act = new byte[cnt];
IO.readFully(in, act, 0, cnt);
assertArrayEquals(test, act);
try (final TemporaryBuffer.Heap b = new TemporaryBuffer.Heap(cnt + 4)) {
b.write(test);
InputStream in = b.openInputStream();
byte[] act = new byte[cnt];
IO.readFully(in, act, 0, cnt);
assertArrayEquals(test, act);
}
}
@Test
@ -279,10 +266,8 @@ public void testInCoreLimit_SwitchOnAppendByte() throws IOException {
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
}
{
final ByteArrayOutputStream o = new ByteArrayOutputStream();
try (ByteArrayOutputStream o = new ByteArrayOutputStream()) {
b.writeTo(o, null);
o.close();
final byte[] r = o.toByteArray();
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
@ -308,10 +293,8 @@ public void testInCoreLimit_SwitchBeforeAppendByte() throws IOException {
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
}
{
final ByteArrayOutputStream o = new ByteArrayOutputStream();
try (ByteArrayOutputStream o = new ByteArrayOutputStream()) {
b.writeTo(o, null);
o.close();
final byte[] r = o.toByteArray();
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
@ -340,10 +323,8 @@ public void testInCoreLimit_SwitchOnCopy() throws IOException {
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
}
{
final ByteArrayOutputStream o = new ByteArrayOutputStream();
try (ByteArrayOutputStream o = new ByteArrayOutputStream()) {
b.writeTo(o, null);
o.close();
final byte[] r = o.toByteArray();
assertEquals(test.length, r.length);
assertArrayEquals(test, r);
@ -399,10 +380,8 @@ public void testRandomWrites() throws IOException {
assertEquals(expect.length, r.length);
assertArrayEquals(expect, r);
}
{
final ByteArrayOutputStream o = new ByteArrayOutputStream();
try (ByteArrayOutputStream o = new ByteArrayOutputStream()) {
b.writeTo(o, null);
o.close();
final byte[] r = o.toByteArray();
assertEquals(expect.length, r.length);
assertArrayEquals(expect, r);

View File

@ -96,32 +96,31 @@ private void assertNoCrLfHelper(String expect, String input)
for (int i = -4; i < 5; ++i) {
int size = Math.abs(i);
byte[] buf = new byte[size];
InputStream in = new ByteArrayInputStream(inbytes);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
OutputStream out = new AutoCRLFOutputStream(bos);
if (i > 0) {
int n;
while ((n = in.read(buf)) >= 0) {
out.write(buf, 0, n);
try (InputStream in = new ByteArrayInputStream(inbytes);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
OutputStream out = new AutoCRLFOutputStream(bos)) {
if (i > 0) {
int n;
while ((n = in.read(buf)) >= 0) {
out.write(buf, 0, n);
}
} else if (i < 0) {
int n;
while ((n = in.read(buf)) >= 0) {
byte[] b = new byte[n];
System.arraycopy(buf, 0, b, 0, n);
out.write(b);
}
} else {
int c;
while ((c = in.read()) != -1)
out.write(c);
}
} else if (i < 0) {
int n;
while ((n = in.read(buf)) >= 0) {
byte[] b = new byte[n];
System.arraycopy(buf, 0, b, 0, n);
out.write(b);
}
} else {
int c;
while ((c = in.read()) != -1)
out.write(c);
out.flush();
byte[] actualBytes = bos.toByteArray();
Assert.assertEquals("bufsize=" + size, encode(expectBytes),
encode(actualBytes));
}
out.flush();
in.close();
out.close();
byte[] actualBytes = bos.toByteArray();
Assert.assertEquals("bufsize=" + size, encode(expectBytes),
encode(actualBytes));
}
}

View File

@ -58,13 +58,13 @@
public class UnionInputStreamTest {
@Test
public void testEmptyStream() throws IOException {
final UnionInputStream u = new UnionInputStream();
assertTrue(u.isEmpty());
assertEquals(-1, u.read());
assertEquals(-1, u.read(new byte[1], 0, 1));
assertEquals(0, u.available());
assertEquals(0, u.skip(1));
u.close();
try (UnionInputStream u = new UnionInputStream()) {
assertTrue(u.isEmpty());
assertEquals(-1, u.read());
assertEquals(-1, u.read(new byte[1], 0, 1));
assertEquals(0, u.available());
assertEquals(0, u.skip(1));
}
}
@Test
@ -211,25 +211,24 @@ public void close() {
@Test
public void testCloseDuringClose() throws IOException {
final UnionInputStream u = new UnionInputStream();
final boolean closed[] = new boolean[2];
u.add(new ByteArrayInputStream(new byte[] { 1 }) {
@Override
public void close() {
closed[0] = true;
}
});
u.add(new ByteArrayInputStream(new byte[] { 2 }) {
@Override
public void close() {
closed[1] = true;
}
});
try (UnionInputStream u = new UnionInputStream()) {
u.add(new ByteArrayInputStream(new byte[] { 1 }) {
@Override
public void close() {
closed[0] = true;
}
});
u.add(new ByteArrayInputStream(new byte[] { 2 }) {
@Override
public void close() {
closed[1] = true;
}
});
assertFalse(closed[0]);
assertFalse(closed[1]);
u.close();
assertFalse(closed[0]);
assertFalse(closed[1]);
}
assertTrue(closed[0]);
assertTrue(closed[1]);
@ -237,6 +236,7 @@ public void close() {
@Test
public void testExceptionDuringClose() {
@SuppressWarnings("resource") // We are testing the close() method
final UnionInputStream u = new UnionInputStream();
u.add(new ByteArrayInputStream(new byte[] { 1 }) {
@Override

View File

@ -386,12 +386,9 @@ private void cloneSubmodules(Repository clonedRepo) throws IOException,
if (!update.call().isEmpty()) {
SubmoduleWalk walk = SubmoduleWalk.forIndex(clonedRepo);
while (walk.next()) {
Repository subRepo = walk.getRepository();
if (subRepo != null) {
try {
try (Repository subRepo = walk.getRepository()) {
if (subRepo != null) {
cloneSubmodules(subRepo);
} finally {
subRepo.close();
}
}
}

View File

@ -1734,23 +1734,17 @@ private static void createFile(File parentDir, String name,
String content)
throws IOException {
File file = new File(parentDir, name);
FileOutputStream fos = new FileOutputStream(file);
try {
try (FileOutputStream fos = new FileOutputStream(file)) {
fos.write(content.getBytes(Constants.CHARACTER_ENCODING));
fos.write('\n');
} finally {
fos.close();
}
}
private static void appendToFile(File file, String content)
throws IOException {
FileOutputStream fos = new FileOutputStream(file, true);
try {
try (FileOutputStream fos = new FileOutputStream(file, true)) {
fos.write(content.getBytes(Constants.CHARACTER_ENCODING));
fos.write('\n');
} finally {
fos.close();
}
}
}

View File

@ -303,12 +303,9 @@ public RevCommit call() throws GitAPIException {
entry.setLastModified(wtIter.getEntryLastModified());
entry.setFileMode(wtIter.getEntryFileMode());
long contentLength = wtIter.getEntryContentLength();
InputStream in = wtIter.openEntryStream();
try {
try (InputStream in = wtIter.openEntryStream()) {
entry.setObjectId(inserter.insert(
Constants.OBJ_BLOB, contentLength, in));
} finally {
in.close();
}
if (indexIter == null && headIter == null)

View File

@ -147,19 +147,13 @@ void hash(ObjectLoader obj) throws MissingObjectException, IOException,
private void hashLargeObject(ObjectLoader obj) throws IOException,
TableFullException {
ObjectStream in1 = obj.openStream();
boolean text;
try {
try (ObjectStream in1 = obj.openStream()) {
text = !RawText.isBinary(in1);
} finally {
in1.close();
}
ObjectStream in2 = obj.openStream();
try {
try (ObjectStream in2 = obj.openStream()) {
hash(in2, in2.getSize(), text);
} finally {
in2.close();
}
}

View File

@ -131,18 +131,10 @@ public void copy() throws IOException {
File srcFile = new File(repo.getWorkTree(),
path + "/" + src); //$NON-NLS-1$
File destFile = new File(repo.getWorkTree(), dest);
FileInputStream input = new FileInputStream(srcFile);
try {
FileOutputStream output = new FileOutputStream(destFile);
try {
FileChannel channel = input.getChannel();
output.getChannel().transferFrom(
channel, 0, channel.size());
} finally {
output.close();
}
} finally {
input.close();
try (FileInputStream input = new FileInputStream(srcFile);
FileOutputStream output = new FileOutputStream(destFile)) {
FileChannel channel = input.getChannel();
output.getChannel().transferFrom(channel, 0, channel.size());
}
}
}

View File

@ -209,8 +209,7 @@ private PackIndex idx(DfsReader ctx) throws IOException {
try {
ctx.stats.readIdx++;
long start = System.nanoTime();
ReadableChannel rc = ctx.db.openFile(desc, INDEX);
try {
try (ReadableChannel rc = ctx.db.openFile(desc, INDEX)) {
InputStream in = Channels.newInputStream(rc);
int wantSize = 8192;
int bs = rc.blockSize();
@ -221,7 +220,6 @@ else if (bs <= 0)
idx = PackIndex.read(new BufferedInputStream(in, bs));
ctx.stats.readIdxBytes += rc.position();
} finally {
rc.close();
ctx.stats.readIdxMicros += elapsedMicros(start);
}
} catch (EOFException e) {

View File

@ -429,8 +429,7 @@ protected void onEndThinPack() throws IOException {
private void writeIdx() throws IOException {
List<PackedObjectInfo> list = getSortedObjectList(null /* by ObjectId */);
final FileOutputStream os = new FileOutputStream(tmpIdx);
try {
try (FileOutputStream os = new FileOutputStream(tmpIdx)) {
final PackIndexWriter iw;
if (indexVersion <= 0)
iw = PackIndexWriter.createOldestPossible(os, list);
@ -438,8 +437,6 @@ private void writeIdx() throws IOException {
iw = PackIndexWriter.createVersion(os, indexVersion);
iw.write(list, packHash);
os.getChannel().force(true);
} finally {
os.close();
}
}

View File

@ -194,8 +194,7 @@ public byte[] getCachedBytes(int sizeLimit) throws LargeObjectException,
if (!isLarge())
return getCachedBytes();
ObjectStream in = openStream();
try {
try (ObjectStream in = openStream()) {
long sz = in.getSize();
if (sizeLimit < sz)
throw new LargeObjectException.ExceedsLimit(sizeLimit, sz);
@ -212,8 +211,6 @@ public byte[] getCachedBytes(int sizeLimit) throws LargeObjectException,
IO.readFully(in, buf, 0, buf.length);
return buf;
} finally {
in.close();
}
}
@ -255,8 +252,7 @@ public abstract ObjectStream openStream() throws MissingObjectException,
public void copyTo(OutputStream out) throws MissingObjectException,
IOException {
if (isLarge()) {
ObjectStream in = openStream();
try {
try (ObjectStream in = openStream()) {
final long sz = in.getSize();
byte[] tmp = new byte[8192];
long copied = 0;
@ -269,8 +265,6 @@ public void copyTo(OutputStream out) throws MissingObjectException,
}
if (0 <= in.read())
throw new EOFException();
} finally {
in.close();
}
} else {
out.write(getCachedBytes());

View File

@ -1946,11 +1946,8 @@ private String readCommitMsgFile(String msgFilename) throws IOException {
private void writeCommitMsg(File msgFile, String msg) throws IOException {
if (msg != null) {
FileOutputStream fos = new FileOutputStream(msgFile);
try {
try (FileOutputStream fos = new FileOutputStream(msgFile)) {
fos.write(msg.getBytes(Constants.CHARACTER_ENCODING));
} finally {
fos.close();
}
} else {
FileUtils.delete(msgFile, FileUtils.SKIP_MISSING);

View File

@ -1642,17 +1642,17 @@ public static class ObjectTypeAndSize {
private void inflateAndSkip(final Source src, final long inflatedSize)
throws IOException {
final InputStream inf = inflate(src, inflatedSize);
IO.skipFully(inf, inflatedSize);
inf.close();
try (InputStream inf = inflate(src, inflatedSize)) {
IO.skipFully(inf, inflatedSize);
}
}
private byte[] inflateAndReturn(final Source src, final long inflatedSize)
throws IOException {
final byte[] dst = new byte[(int) inflatedSize];
final InputStream inf = inflate(src, inflatedSize);
IO.readFully(inf, dst, 0, dst.length);
inf.close();
try (InputStream inf = inflate(src, inflatedSize)) {
IO.readFully(inf, dst, 0, dst.length);
}
return dst;
}

View File

@ -339,11 +339,8 @@ private Ref readRef(final TreeMap<String, Ref> avail, final String rn)
final String s;
String ref = ROOT_DIR + rn;
try {
final BufferedReader br = openReader(ref);
try {
try (BufferedReader br = openReader(ref)) {
s = br.readLine();
} finally {
br.close();
}
} catch (FileNotFoundException noRef) {
return null;

View File

@ -853,17 +853,12 @@ else if (tmpIdx.isFile()) {
pm.beginTask("Get " + idxName.substring(0, 12) + "..idx", //$NON-NLS-1$ //$NON-NLS-2$
s.length < 0 ? ProgressMonitor.UNKNOWN
: (int) (s.length / 1024));
try {
final FileOutputStream fos = new FileOutputStream(tmpIdx);
try {
final byte[] buf = new byte[2048];
int cnt;
while (!pm.isCancelled() && (cnt = s.in.read(buf)) >= 0) {
fos.write(buf, 0, cnt);
pm.update(cnt / 1024);
}
} finally {
fos.close();
try (final FileOutputStream fos = new FileOutputStream(tmpIdx)) {
final byte[] buf = new byte[2048];
int cnt;
while (!pm.isCancelled() && (cnt = s.in.read(buf)) >= 0) {
fos.write(buf, 0, cnt);
pm.update(cnt / 1024);
}
} catch (IOException err) {
FileUtils.delete(tmpIdx);

View File

@ -1280,11 +1280,8 @@ private static class PerDirectoryIgnoreNode extends IgnoreNode {
IgnoreNode load() throws IOException {
IgnoreNode r = new IgnoreNode();
InputStream in = entry.openInputStream();
try {
try (InputStream in = entry.openInputStream()) {
r.parse(in);
} finally {
in.close();
}
return r.getRules().isEmpty() ? null : r;
}
@ -1332,11 +1329,8 @@ IgnoreNode load() throws IOException {
private static void loadRulesFromFile(IgnoreNode r, File exclude)
throws FileNotFoundException, IOException {
if (FS.DETECTED.exists(exclude)) {
FileInputStream in = new FileInputStream(exclude);
try {
try (FileInputStream in = new FileInputStream(exclude)) {
r.parse(in);
} finally {
in.close();
}
}
}
@ -1353,11 +1347,8 @@ private static class PerDirectoryAttributesNode extends AttributesNode {
AttributesNode load() throws IOException {
AttributesNode r = new AttributesNode();
InputStream in = entry.openInputStream();
try {
try (InputStream in = entry.openInputStream()) {
r.parse(in);
} finally {
in.close();
}
return r.getRules().isEmpty() ? null : r;
}

View File

@ -487,11 +487,8 @@ public byte[] toByteArray() throws IOException {
if (Integer.MAX_VALUE < len)
throw new OutOfMemoryError(JGitText.get().lengthExceedsMaximumArraySize);
final byte[] out = new byte[(int) len];
final FileInputStream in = new FileInputStream(onDiskFile);
try {
try (FileInputStream in = new FileInputStream(onDiskFile)) {
IO.readFully(in, out, 0, (int) len);
} finally {
in.close();
}
return out;
}
@ -505,16 +502,13 @@ public void writeTo(final OutputStream os, ProgressMonitor pm)
}
if (pm == null)
pm = NullProgressMonitor.INSTANCE;
final FileInputStream in = new FileInputStream(onDiskFile);
try {
try (FileInputStream in = new FileInputStream(onDiskFile)) {
int cnt;
final byte[] buf = new byte[Block.SZ];
while ((cnt = in.read(buf)) >= 0) {
os.write(buf, 0, cnt);
pm.update(cnt / 1024);
}
} finally {
in.close();
}
}