summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Loskutov <loskutov@gmx.de>2015-11-30 22:48:13 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2015-12-12 00:55:31 +0100
commit85d09a9ec7d599d0234efd53b924dc2767a3843b (patch)
treedd18b7d50aa9e4e75a0c616e2e71e09da322559c
parente23521f0d9040d49dead2ce6fbfab6bde3b7b2c6 (diff)
downloadjgit-85d09a9ec7d599d0234efd53b924dc2767a3843b.tar.gz
jgit-85d09a9ec7d599d0234efd53b924dc2767a3843b.zip
URIish: fixed full uri pattern not expecting end of line after host name
Bug: 483326 Change-Id: I8b6e3eb648c8ec2c38f73de22382537b1276b779 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java15
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java12
2 files changed, 23 insertions, 4 deletions
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 745c322013..76eb18afdf 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
@@ -928,4 +928,19 @@ public class URIishTest {
}
}
}
+
+ @Test
+ public void testStringConstructor() throws Exception {
+ String str = "http://example.com/";
+ URIish u = new URIish(str);
+ assertEquals("example.com", u.getHost());
+ assertEquals("/", u.getPath());
+ assertEquals(str, u.toString());
+
+ str = "http://example.com";
+ u = new URIish(str);
+ assertEquals("example.com", u.getHost());
+ assertEquals("", u.getPath());
+ assertEquals(str, u.toString());
+ }
}
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 3c22b1cad6..9aeb840ebe 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java
@@ -137,7 +137,11 @@ public class URIish implements Serializable {
+ OPT_PORT_P //
+ "(" // open a group capturing the user-home-dir-part //$NON-NLS-1$
+ (USER_HOME_P + "?") //$NON-NLS-1$
- + "[\\\\/])" //$NON-NLS-1$
+ + "(?:" // start non capturing group for host //$NON-NLS-1$
+ // separator or end of line
+ + "[\\\\/])|$" //$NON-NLS-1$
+ + ")" // close non capturing group for the host//$NON-NLS-1$
+ // separator or end of line
+ ")?" // close the optional group containing hostname //$NON-NLS-1$
+ "(.+)?" //$NON-NLS-1$
+ "$"); //$NON-NLS-1$
@@ -640,7 +644,7 @@ public class URIish implements Serializable {
if (getPath() != null) {
if (getScheme() != null) {
- if (!getPath().startsWith("/")) //$NON-NLS-1$
+ if (!getPath().startsWith("/") && !getPath().isEmpty()) //$NON-NLS-1$
r.append('/');
} else if (getHost() != null)
r.append(':');
@@ -711,9 +715,9 @@ public class URIish implements Serializable {
*/
public String getHumanishName() throws IllegalArgumentException {
String s = getPath();
- if ("/".equals(s)) //$NON-NLS-1$
+ if ("/".equals(s) || "".equals(s)) //$NON-NLS-1$
s = getHost();
- if ("".equals(s) || s == null) //$NON-NLS-1$
+ if (s == null) // $NON-NLS-1$
throw new IllegalArgumentException();
String[] elements;