From 38eec8f4a26935ba9e75bfbdde8a5682e05f338d Mon Sep 17 00:00:00 2001 From: Matthias Sohn Date: Fri, 10 Dec 2010 21:58:05 +0100 Subject: [PATCH] [findbugs] Do not ignore exceptional return value of mkdir java.io.File.mkdir() and mkdirs() report failure as an exceptional return value false. Fix the code which silently ignored this exceptional return value. Change-Id: I41244f4b9d66176e68e2c07e2329cf08492f8619 Signed-off-by: Matthias Sohn --- .../src/org/eclipse/jgit/iplog/IpLogMeta.java | 4 +- .../junit/LocalDiskRepositoryTestCase.java | 3 +- .../org/eclipse/jgit/pgm/eclipse/Iplog.java | 4 +- .../org/eclipse/jgit/api/AddCommandTest.java | 58 +++++++++---------- .../jgit/api/CommitAndLogCommandTests.java | 3 +- .../org/eclipse/jgit/api/InitCommandTest.java | 13 +---- .../org/eclipse/jgit/lib/RacyGitTests.java | 7 ++- .../jgit/storage/file/AbbreviationTest.java | 3 +- .../file/FileRepositoryBuilderTest.java | 3 +- .../file/RepositorySetupWorkDirTest.java | 5 +- .../jgit/storage/file/T0003_BasicTest.java | 5 +- .../jgit/storage/file/UnpackedObjectTest.java | 3 +- .../jgit/transport/OpenSshConfigTest.java | 5 +- .../jgit/treewalk/FileTreeIteratorTest.java | 3 +- .../org/eclipse/jgit/util/FileUtilTest.java | 12 ++-- .../findBugs/FindBugsExcludeFilter.xml | 7 +++ .../org/eclipse/jgit/api/RebaseCommand.java | 2 +- .../jgit/dircache/DirCacheCheckout.java | 4 +- .../src/org/eclipse/jgit/lib/GitIndex.java | 3 +- .../jgit/storage/file/FileRepository.java | 4 +- .../eclipse/jgit/storage/file/LockFile.java | 3 +- .../jgit/storage/file/ObjectDirectory.java | 8 +-- .../jgit/storage/file/RefDirectory.java | 16 ++--- 23 files changed, 96 insertions(+), 82 deletions(-) diff --git a/org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogMeta.java b/org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogMeta.java index 372469da0..ba10f6f24 100644 --- a/org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogMeta.java +++ b/org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogMeta.java @@ -62,6 +62,7 @@ import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.storage.file.FileBasedConfig; import org.eclipse.jgit.storage.file.LockFile; import org.eclipse.jgit.util.FS; +import org.eclipse.jgit.util.FileUtils; /** * Manages the {@code .eclipse_iplog} file in a project. @@ -187,8 +188,7 @@ public class IpLogMeta { */ public void syncCQs(File file, FS fs, URL base, String username, String password) throws IOException, ConfigInvalidException { - if (!file.getParentFile().exists()) - file.getParentFile().mkdirs(); + FileUtils.mkdirs(file.getParentFile(), true); LockFile lf = new LockFile(file, fs); if (!lf.lock()) diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java index 3917c487d..45c6c41f2 100644 --- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java +++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java @@ -69,6 +69,7 @@ import org.eclipse.jgit.storage.file.FileRepository; import org.eclipse.jgit.storage.file.WindowCache; import org.eclipse.jgit.storage.file.WindowCacheConfig; import org.eclipse.jgit.util.FS; +import org.eclipse.jgit.util.FileUtils; import org.eclipse.jgit.util.IO; import org.eclipse.jgit.util.SystemReader; import org.junit.After; @@ -389,7 +390,7 @@ public abstract class LocalDiskRepositoryTestCase { * the file could not be written. */ protected void write(final File f, final String body) throws IOException { - f.getParentFile().mkdirs(); + FileUtils.mkdirs(f.getParentFile(), true); Writer w = new OutputStreamWriter(new FileOutputStream(f), "UTF-8"); try { w.write(body); diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/eclipse/Iplog.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/eclipse/Iplog.java index 84859a805..86b93a0f8 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/eclipse/Iplog.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/eclipse/Iplog.java @@ -59,6 +59,7 @@ import org.eclipse.jgit.revwalk.RevObject; import org.eclipse.jgit.revwalk.RevTag; import org.eclipse.jgit.revwalk.RevWalk; import org.eclipse.jgit.storage.file.LockFile; +import org.eclipse.jgit.util.FileUtils; import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.Option; @@ -96,8 +97,7 @@ class Iplog extends TextBuiltin { log.scan(db, rw.parseCommit(start), version); if (output != null) { - if (!output.getParentFile().exists()) - output.getParentFile().mkdirs(); + FileUtils.mkdirs(output.getParentFile(), true); LockFile lf = new LockFile(output, db.getFS()); if (!lf.lock()) throw die(MessageFormat.format(CLIText.get().cannotLock, output)); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/AddCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/AddCommandTest.java index 33f305d48..61b099d61 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/AddCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/AddCommandTest.java @@ -90,7 +90,7 @@ public class AddCommandTest extends RepositoryTestCase { @Test public void testAddExistingSingleFile() throws IOException, NoFilepatternException { File file = new File(db.getWorkTree(), "a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); @@ -106,9 +106,9 @@ public class AddCommandTest extends RepositoryTestCase { @Test public void testAddExistingSingleFileInSubDir() throws IOException, NoFilepatternException { - new File(db.getWorkTree(), "sub").mkdir(); + FileUtils.mkdir(new File(db.getWorkTree(), "sub")); File file = new File(db.getWorkTree(), "sub/a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); @@ -125,7 +125,7 @@ public class AddCommandTest extends RepositoryTestCase { @Test public void testAddExistingSingleFileTwice() throws IOException, NoFilepatternException { File file = new File(db.getWorkTree(), "a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); @@ -149,7 +149,7 @@ public class AddCommandTest extends RepositoryTestCase { @Test public void testAddExistingSingleFileTwiceWithCommit() throws Exception { File file = new File(db.getWorkTree(), "a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); @@ -175,7 +175,7 @@ public class AddCommandTest extends RepositoryTestCase { @Test public void testAddRemovedFile() throws Exception { File file = new File(db.getWorkTree(), "a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); @@ -197,7 +197,7 @@ public class AddCommandTest extends RepositoryTestCase { @Test public void testAddRemovedCommittedFile() throws Exception { File file = new File(db.getWorkTree(), "a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); @@ -223,13 +223,13 @@ public class AddCommandTest extends RepositoryTestCase { // prepare conflict File file = new File(db.getWorkTree(), "a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); File file2 = new File(db.getWorkTree(), "b.txt"); - file2.createNewFile(); + FileUtils.createNewFile(file2); writer = new PrintWriter(file2); writer.print("content b"); writer.close(); @@ -275,13 +275,13 @@ public class AddCommandTest extends RepositoryTestCase { @Test public void testAddTwoFiles() throws Exception { File file = new File(db.getWorkTree(), "a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); File file2 = new File(db.getWorkTree(), "b.txt"); - file2.createNewFile(); + FileUtils.createNewFile(file2); writer = new PrintWriter(file2); writer.print("content b"); writer.close(); @@ -296,15 +296,15 @@ public class AddCommandTest extends RepositoryTestCase { @Test public void testAddFolder() throws Exception { - new File(db.getWorkTree(), "sub").mkdir(); + FileUtils.mkdir(new File(db.getWorkTree(), "sub")); File file = new File(db.getWorkTree(), "sub/a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); File file2 = new File(db.getWorkTree(), "sub/b.txt"); - file2.createNewFile(); + FileUtils.createNewFile(file2); writer = new PrintWriter(file2); writer.print("content b"); writer.close(); @@ -319,21 +319,21 @@ public class AddCommandTest extends RepositoryTestCase { @Test public void testAddIgnoredFile() throws Exception { - new File(db.getWorkTree(), "sub").mkdir(); + FileUtils.mkdir(new File(db.getWorkTree(), "sub")); File file = new File(db.getWorkTree(), "sub/a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); File ignoreFile = new File(db.getWorkTree(), ".gitignore"); - ignoreFile.createNewFile(); + FileUtils.createNewFile(ignoreFile); writer = new PrintWriter(ignoreFile); writer.print("sub/b.txt"); writer.close(); File file2 = new File(db.getWorkTree(), "sub/b.txt"); - file2.createNewFile(); + FileUtils.createNewFile(file2); writer = new PrintWriter(file2); writer.print("content b"); writer.close(); @@ -348,15 +348,15 @@ public class AddCommandTest extends RepositoryTestCase { @Test public void testAddWholeRepo() throws Exception { - new File(db.getWorkTree(), "sub").mkdir(); + FileUtils.mkdir(new File(db.getWorkTree(), "sub")); File file = new File(db.getWorkTree(), "sub/a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); File file2 = new File(db.getWorkTree(), "sub/b.txt"); - file2.createNewFile(); + FileUtils.createNewFile(file2); writer = new PrintWriter(file2); writer.print("content b"); writer.close(); @@ -375,15 +375,15 @@ public class AddCommandTest extends RepositoryTestCase { // file c exists in workdir but not in index -> added @Test public void testAddWithoutParameterUpdate() throws Exception { - new File(db.getWorkTree(), "sub").mkdir(); + FileUtils.mkdir(new File(db.getWorkTree(), "sub")); File file = new File(db.getWorkTree(), "sub/a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); File file2 = new File(db.getWorkTree(), "sub/b.txt"); - file2.createNewFile(); + FileUtils.createNewFile(file2); writer = new PrintWriter(file2); writer.print("content b"); writer.close(); @@ -400,7 +400,7 @@ public class AddCommandTest extends RepositoryTestCase { // new unstaged file sub/c.txt File file3 = new File(db.getWorkTree(), "sub/c.txt"); - file3.createNewFile(); + FileUtils.createNewFile(file3); writer = new PrintWriter(file3); writer.print("content c"); writer.close(); @@ -429,15 +429,15 @@ public class AddCommandTest extends RepositoryTestCase { // file c exists in workdir but not in index -> unchanged @Test public void testAddWithParameterUpdate() throws Exception { - new File(db.getWorkTree(), "sub").mkdir(); + FileUtils.mkdir(new File(db.getWorkTree(), "sub")); File file = new File(db.getWorkTree(), "sub/a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); File file2 = new File(db.getWorkTree(), "sub/b.txt"); - file2.createNewFile(); + FileUtils.createNewFile(file2); writer = new PrintWriter(file2); writer.print("content b"); writer.close(); @@ -454,7 +454,7 @@ public class AddCommandTest extends RepositoryTestCase { // new unstaged file sub/c.txt File file3 = new File(db.getWorkTree(), "sub/c.txt"); - file3.createNewFile(); + FileUtils.createNewFile(file3); writer = new PrintWriter(file3); writer.print("content c"); writer.close(); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTests.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTests.java index 67a9a1b3f..bc313e87e 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTests.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTests.java @@ -66,6 +66,7 @@ import org.eclipse.jgit.lib.RefUpdate; import org.eclipse.jgit.lib.RepositoryTestCase; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.treewalk.TreeWalk; +import org.eclipse.jgit.util.FileUtils; public class CommitAndLogCommandTests extends RepositoryTestCase { public void testSomeCommits() throws NoHeadException, NoMessageException, @@ -169,7 +170,7 @@ public class CommitAndLogCommandTests extends RepositoryTestCase { JGitInternalException, WrongRepositoryStateException, NoFilepatternException { File file = new File(db.getWorkTree(), "a.txt"); - file.createNewFile(); + FileUtils.createNewFile(file); PrintWriter writer = new PrintWriter(file); writer.print("content"); writer.close(); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/InitCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/InitCommandTest.java index 755370c92..15aafc906 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/InitCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/InitCommandTest.java @@ -51,6 +51,7 @@ import java.io.IOException; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.RepositoryTestCase; +import org.eclipse.jgit.util.FileUtils; import org.junit.Before; import org.junit.Test; @@ -93,16 +94,8 @@ public class InitCommandTest extends RepositoryTestCase { public static File createTempDirectory(String name) throws IOException { final File temp; temp = File.createTempFile(name, Long.toString(System.nanoTime())); - - if (!(temp.delete())) { - throw new IOException("Could not delete temp file: " - + temp.getAbsolutePath()); - } - - if (!(temp.mkdir())) { - throw new IOException("Could not create temp directory: " - + temp.getAbsolutePath()); - } + FileUtils.delete(temp); + FileUtils.mkdir(temp); return temp; } diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RacyGitTests.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RacyGitTests.java index 80b853ee7..c25ee4c04 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RacyGitTests.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RacyGitTests.java @@ -53,6 +53,7 @@ import java.util.TreeSet; import org.eclipse.jgit.treewalk.FileTreeIterator; import org.eclipse.jgit.treewalk.FileTreeIteratorWithTimeControl; import org.eclipse.jgit.treewalk.NameConflictTreeWalk; +import org.eclipse.jgit.util.FileUtils; public class RacyGitTests extends RepositoryTestCase { public void testIterator() throws IllegalStateException, IOException, @@ -61,19 +62,19 @@ public class RacyGitTests extends RepositoryTestCase { File lastFile = null; for (int i = 0; i < 10; i++) { lastFile = new File(db.getWorkTree(), "0." + i); - lastFile.createNewFile(); + FileUtils.createNewFile(lastFile); if (i == 5) fsTick(lastFile); } modTimes.add(fsTick(lastFile)); for (int i = 0; i < 10; i++) { lastFile = new File(db.getWorkTree(), "1." + i); - lastFile.createNewFile(); + FileUtils.createNewFile(lastFile); } modTimes.add(fsTick(lastFile)); for (int i = 0; i < 10; i++) { lastFile = new File(db.getWorkTree(), "2." + i); - lastFile.createNewFile(); + FileUtils.createNewFile(lastFile); if (i % 4 == 0) fsTick(lastFile); } diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/AbbreviationTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/AbbreviationTest.java index 2f989e32c..cfb526d63 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/AbbreviationTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/AbbreviationTest.java @@ -68,6 +68,7 @@ import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectReader; import org.eclipse.jgit.revwalk.RevBlob; import org.eclipse.jgit.transport.PackedObjectInfo; +import org.eclipse.jgit.util.FileUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -176,7 +177,7 @@ public class AbbreviationTest extends LocalDiskRepositoryTestCase { File packDir = new File(db.getObjectDatabase().getDirectory(), "pack"); File idxFile = new File(packDir, packName + ".idx"); File packFile = new File(packDir, packName + ".pack"); - packDir.mkdir(); + FileUtils.mkdir(packDir, true); OutputStream dst = new BufferedOutputStream(new FileOutputStream( idxFile)); try { 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 385c8531c..80e0f1a92 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 @@ -48,6 +48,7 @@ import static org.junit.Assert.assertEquals; import java.io.File; import org.eclipse.jgit.junit.LocalDiskRepositoryTestCase; +import org.eclipse.jgit.util.FileUtils; import org.junit.Test; public class FileRepositoryBuilderTest extends LocalDiskRepositoryTestCase { @@ -55,7 +56,7 @@ public class FileRepositoryBuilderTest extends LocalDiskRepositoryTestCase { public void testShouldAutomagicallyDetectGitDirectory() throws Exception { FileRepository r = createWorkRepository(); File d = new File(r.getDirectory(), "sub-dir"); - d.mkdir(); + FileUtils.mkdir(d); assertEquals(r.getDirectory(), new FileRepositoryBuilder() .findGitDir(d).getGitDir()); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RepositorySetupWorkDirTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RepositorySetupWorkDirTest.java index 99d99a5e5..1781c3d62 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RepositorySetupWorkDirTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RepositorySetupWorkDirTest.java @@ -59,6 +59,7 @@ import org.eclipse.jgit.lib.ConfigConstants; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.util.FS; +import org.eclipse.jgit.util.FileUtils; import org.junit.Test; /** @@ -182,12 +183,12 @@ public class RepositorySetupWorkDirTest extends LocalDiskRepositoryTestCase { } } - private File getFile(String... pathComponents) { + private File getFile(String... pathComponents) throws IOException { String rootPath = new File(new File("target"), "trash").getPath(); for (String pathComponent : pathComponents) rootPath = rootPath + File.separatorChar + pathComponent; File result = new File(rootPath); - result.mkdir(); + FileUtils.mkdirs(result, true); return result; } diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/T0003_BasicTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/T0003_BasicTest.java index 7f0436b83..ec5c8848f 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/T0003_BasicTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/T0003_BasicTest.java @@ -81,6 +81,7 @@ import org.eclipse.jgit.lib.TreeFormatter; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevTag; import org.eclipse.jgit.revwalk.RevWalk; +import org.eclipse.jgit.util.FileUtils; import org.junit.Test; public class T0003_BasicTest extends SampleDataRepositoryTestCase { @@ -202,7 +203,7 @@ public class T0003_BasicTest extends SampleDataRepositoryTestCase { throws IOException { File repo1Parent = new File(trash.getParentFile(), "r1"); File workdir = new File(trash.getParentFile(), "rw"); - workdir.mkdir(); + FileUtils.mkdir(workdir); FileRepository repo1initial = new FileRepository(new File(repo1Parent, Constants.DOT_GIT)); repo1initial.create(); @@ -231,7 +232,7 @@ public class T0003_BasicTest extends SampleDataRepositoryTestCase { throws IOException { File repo1Parent = new File(trash.getParentFile(), "r1"); File workdir = new File(trash.getParentFile(), "rw"); - workdir.mkdir(); + FileUtils.mkdir(workdir); FileRepository repo1initial = new FileRepository(new File(repo1Parent, Constants.DOT_GIT)); repo1initial.create(); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/UnpackedObjectTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/UnpackedObjectTest.java index c6199c342..0e6881ef9 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/UnpackedObjectTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/UnpackedObjectTest.java @@ -71,6 +71,7 @@ import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectInserter; import org.eclipse.jgit.lib.ObjectLoader; import org.eclipse.jgit.lib.ObjectStream; +import org.eclipse.jgit.util.FileUtils; import org.eclipse.jgit.util.IO; import org.junit.After; import org.junit.Before; @@ -567,7 +568,7 @@ public class UnpackedObjectTest extends LocalDiskRepositoryTestCase { private void write(ObjectId id, byte[] data) throws IOException { File path = path(id); - path.getParentFile().mkdirs(); + FileUtils.mkdirs(path.getParentFile()); FileOutputStream out = new FileOutputStream(path); try { out.write(data); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/OpenSshConfigTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/OpenSshConfigTest.java index 966cd9812..67123a44b 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/OpenSshConfigTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/OpenSshConfigTest.java @@ -54,6 +54,7 @@ import java.io.OutputStreamWriter; import org.eclipse.jgit.lib.RepositoryTestCase; import org.eclipse.jgit.transport.OpenSshConfig.Host; +import org.eclipse.jgit.util.FileUtils; import org.junit.Before; import org.junit.Test; @@ -69,10 +70,10 @@ public class OpenSshConfigTest extends RepositoryTestCase { super.setUp(); home = new File(trash, "home"); - home.mkdir(); + FileUtils.mkdir(home); configFile = new File(new File(home, ".ssh"), "config"); - configFile.getParentFile().mkdir(); + FileUtils.mkdir(configFile.getParentFile()); System.setProperty("user.name", "jex_junit"); osc = new OpenSshConfig(home, configFile); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java index ad8917a92..0b12058c8 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java @@ -110,8 +110,7 @@ public class FileTreeIteratorTest extends RepositoryTestCase { public void testEmptyIfRootIsEmpty() throws Exception { final File r = new File(trash, "not-existing-file"); assertFalse(r.exists()); - r.mkdir(); - assertTrue(r.isDirectory()); + FileUtils.mkdir(r); final FileTreeIterator fti = new FileTreeIterator(r, db.getFS(), db.getConfig().get(WorkingTreeOptions.KEY)); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FileUtilTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FileUtilTest.java index d81e686c1..08e755752 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FileUtilTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FileUtilTest.java @@ -71,7 +71,7 @@ public class FileUtilTest { @Test public void testDeleteFile() throws IOException { File f = new File(trash, "test"); - assertTrue(f.createNewFile()); + FileUtils.createNewFile(f); FileUtils.delete(f); assertFalse(f.exists()); @@ -92,10 +92,10 @@ public class FileUtilTest { @Test public void testDeleteRecursive() throws IOException { File f1 = new File(trash, "test/test/a"); - f1.mkdirs(); - f1.createNewFile(); + FileUtils.mkdirs(f1.getParentFile()); + FileUtils.createNewFile(f1); File f2 = new File(trash, "test/test/b"); - f2.createNewFile(); + FileUtils.createNewFile(f2); File d = new File(trash, "test"); FileUtils.delete(d, FileUtils.RECURSIVE); assertFalse(d.exists()); @@ -132,7 +132,7 @@ public class FileUtilTest { assertTrue(d.delete()); File f = new File(trash, "test"); - assertTrue(f.createNewFile()); + FileUtils.createNewFile(f); try { FileUtils.mkdir(d); fail("creation of directory having same path as existing file must" @@ -164,7 +164,7 @@ public class FileUtilTest { FileUtils.delete(root, FileUtils.RECURSIVE); File f = new File(trash, "test"); - assertTrue(f.createNewFile()); + FileUtils.createNewFile(f); try { FileUtils.mkdirs(d); fail("creation of directory having path conflicting with existing" diff --git a/org.eclipse.jgit/findBugs/FindBugsExcludeFilter.xml b/org.eclipse.jgit/findBugs/FindBugsExcludeFilter.xml index 948308e77..073f3da9d 100644 --- a/org.eclipse.jgit/findBugs/FindBugsExcludeFilter.xml +++ b/org.eclipse.jgit/findBugs/FindBugsExcludeFilter.xml @@ -9,6 +9,13 @@ + + + + + + + diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java index 36c06702a..e5e604592 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java @@ -509,7 +509,7 @@ public class RebaseCommand extends GitCommand { Collections.reverse(cherryPickList); // create the folder for the meta information - rebaseDir.mkdir(); + FileUtils.mkdir(rebaseDir); createFile(repo.getDirectory(), Constants.ORIG_HEAD, headId.name()); createFile(rebaseDir, REBASE_HEAD, headId.name()); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java index 25acf16a3..dbd05117f 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java @@ -419,7 +419,9 @@ public class DirCacheCheckout { for (String path : updated.keySet()) { // ... create/overwrite this file ... file = new File(repo.getWorkTree(), path); - file.getParentFile().mkdirs(); + if (!file.getParentFile().mkdirs()) { + // ignore + } file.createNewFile(); DirCacheEntry entry = dc.getEntry(path); checkoutEntry(repo, file, entry); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/GitIndex.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/GitIndex.java index 5e6e616e5..0088a15e4 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/GitIndex.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/GitIndex.java @@ -72,6 +72,7 @@ import org.eclipse.jgit.dircache.DirCache; import org.eclipse.jgit.errors.CorruptObjectException; import org.eclipse.jgit.errors.NotSupportedException; import org.eclipse.jgit.events.IndexChangedEvent; +import org.eclipse.jgit.util.FileUtils; import org.eclipse.jgit.util.RawParseUtils; /** @@ -937,7 +938,7 @@ public class GitIndex { ObjectLoader ol = db.open(e.sha1, Constants.OBJ_BLOB); File file = new File(wd, e.getName()); file.delete(); - file.getParentFile().mkdirs(); + FileUtils.mkdirs(file.getParentFile(), true); FileOutputStream dst = new FileOutputStream(file); try { ol.copyTo(dst); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileRepository.java index 28b83b0f9..cedb59472 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileRepository.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileRepository.java @@ -239,11 +239,11 @@ public class FileRepository extends Repository { throw new IllegalStateException(MessageFormat.format( JGitText.get().repositoryAlreadyExists, getDirectory())); } - getDirectory().mkdirs(); + FileUtils.mkdirs(getDirectory(), true); refs.create(); objectDatabase.create(); - new File(getDirectory(), "branches").mkdir(); + FileUtils.mkdir(new File(getDirectory(), "branches")); RefUpdate head = updateRef(Constants.HEAD); head.disableRefLog(); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/LockFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/LockFile.java index 52aa7eeb9..9e637ab4f 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/LockFile.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/LockFile.java @@ -60,6 +60,7 @@ import org.eclipse.jgit.JGitText; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.util.FS; +import org.eclipse.jgit.util.FileUtils; /** * Git style file locking and replacement. @@ -122,7 +123,7 @@ public class LockFile { * does not hold the lock. */ public boolean lock() throws IOException { - lck.getParentFile().mkdirs(); + FileUtils.mkdirs(lck.getParentFile(), true); if (lck.createNewFile()) { haveLck = true; try { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java index 021a91b6d..745c18fdb 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java @@ -171,9 +171,9 @@ public class ObjectDirectory extends FileObjectDatabase { @Override public void create() throws IOException { - objects.mkdirs(); - infoDirectory.mkdir(); - packDirectory.mkdir(); + FileUtils.mkdirs(objects); + FileUtils.mkdir(infoDirectory); + FileUtils.mkdir(packDirectory); } @Override @@ -491,7 +491,7 @@ public class ObjectDirectory extends FileObjectDatabase { // directories are always lazily created. Note that we // try the rename first as the directory likely does exist. // - dst.getParentFile().mkdir(); + FileUtils.mkdir(dst.getParentFile()); if (tmp.renameTo(dst)) { dst.setReadOnly(); unpackedObjectCache.add(id); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java index 2af7ca3e6..c8c7d0dd8 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java @@ -97,6 +97,7 @@ import org.eclipse.jgit.revwalk.RevObject; import org.eclipse.jgit.revwalk.RevTag; import org.eclipse.jgit.revwalk.RevWalk; import org.eclipse.jgit.util.FS; +import org.eclipse.jgit.util.FileUtils; import org.eclipse.jgit.util.IO; import org.eclipse.jgit.util.RawParseUtils; import org.eclipse.jgit.util.RefList; @@ -190,13 +191,14 @@ public class RefDirectory extends RefDatabase { } public void create() throws IOException { - refsDir.mkdir(); - logsDir.mkdir(); - logsRefsDir.mkdir(); - - new File(refsDir, R_HEADS.substring(R_REFS.length())).mkdir(); - new File(refsDir, R_TAGS.substring(R_REFS.length())).mkdir(); - new File(logsRefsDir, R_HEADS.substring(R_REFS.length())).mkdir(); + FileUtils.mkdir(refsDir); + FileUtils.mkdir(logsDir); + FileUtils.mkdir(logsRefsDir); + + FileUtils.mkdir(new File(refsDir, R_HEADS.substring(R_REFS.length()))); + FileUtils.mkdir(new File(refsDir, R_TAGS.substring(R_REFS.length()))); + FileUtils.mkdir(new File(logsRefsDir, + R_HEADS.substring(R_REFS.length()))); } @Override