diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java index 01d382018..9b4ebf90d 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java @@ -62,6 +62,26 @@ public class URIishTest { private static final String GIT_SCHEME = "git://"; + @Test + public void shouldRaiseErrorOnEmptyURI() throws Exception { + try { + new URIish(""); + fail("expecting an exception"); + } catch (URISyntaxException e) { + // expected + } + } + + @Test + public void shouldRaiseErrorOnNullURI() throws Exception { + try { + new URIish((String) null); + fail("expecting an exception"); + } catch (URISyntaxException e) { + // expected + } + } + @Test public void testUnixFile() throws Exception { final String str = "/home/m y"; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java index 1c9397922..8fe7b2aa5 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java @@ -55,6 +55,7 @@ import java.util.regex.Pattern; import org.eclipse.jgit.JGitText; import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.util.StringUtils; /** * This URI like construct used for referencing Git archives over the net, as @@ -193,6 +194,10 @@ public class URIish implements Serializable { * @throws URISyntaxException */ public URIish(String s) throws URISyntaxException { + if (StringUtils.isEmptyOrNull(s)) { + throw new URISyntaxException("The uri was empty or null", + JGitText.get().cannotParseGitURIish); + } Matcher matcher = SINGLE_SLASH_FILE_URI.matcher(s); if (matcher.matches()) { scheme = matcher.group(1); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java index 59f3d83cc..5e43b2693 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java @@ -222,4 +222,15 @@ public final class StringUtils { private StringUtils() { // Do not create instances } + + /** + * Test if a string is empty or null. + * + * @param stringValue + * the string to check + * @return true if the string is null or empty + */ + public static boolean isEmptyOrNull(String stringValue) { + return stringValue == null || stringValue.length() == 0; + } }