diff --git a/src/main/java/loci/common/Location.java b/src/main/java/loci/common/Location.java index 8d214164..78a2be0e 100644 --- a/src/main/java/loci/common/Location.java +++ b/src/main/java/loci/common/Location.java @@ -125,11 +125,11 @@ public Location(File file) { } public Location(String parent, String child) { - this(parent + File.separator + child); + this(parent == null ? child : parent + File.separator + child); } public Location(Location parent, String child) { - this(parent.getAbsolutePath(), child); + this(parent == null ? (String) null : parent.getAbsolutePath(), child); } // -- Location API methods -- @@ -620,7 +620,9 @@ public String getParent() { /* @see java.io.File#getParentFile() */ public Location getParentFile() { - return new Location(getParent()); + String parent = this.getParent(); + if (parent == null) return null; + return new Location(parent); } /* @see java.io.File#getPath() */ diff --git a/src/test/java/loci/common/utests/LocationTest.java b/src/test/java/loci/common/utests/LocationTest.java index c835d804..cb13ef5b 100644 --- a/src/test/java/loci/common/utests/LocationTest.java +++ b/src/test/java/loci/common/utests/LocationTest.java @@ -33,6 +33,7 @@ package loci.common.utests; import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertNull; import java.io.File; import java.io.IOException; @@ -175,6 +176,14 @@ public void testParent() { file.getParentFile().getAbsolutePath()); } } + + @Test + public void testParentNull() { + Location nullParent = new Location((String) null, "nullParentFile"); + assertNull(nullParent.getParentFile()); + nullParent = new Location((Location) null, "nullParentFile"); + assertNull(nullParent.getParentFile()); + } @Test public void testIsDirectory() {