The regular expression which should handle the user/password part in an URI was potentially processing too many chars. This led to problems when user/pwd and port was specified Change-Id: I87db02494c4b367283e1d00437b1c06d2c8fdd28 Signed-off-by: Christian Halstrick <christian.halstrick@sap.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>tags/v0.10.1
@@ -424,4 +424,27 @@ public class URIishTest extends TestCase { | |||
assertEquals("c", humanishName); | |||
} | |||
public void testUserPasswordAndPort() throws URISyntaxException { | |||
String str = "http://user:secret@host.xy:80/some/path"; | |||
URIish u = new URIish(str); | |||
assertEquals("http", u.getScheme()); | |||
assertTrue(u.isRemote()); | |||
assertEquals("/some/path", u.getPath()); | |||
assertEquals("host.xy", u.getHost()); | |||
assertEquals(80, u.getPort()); | |||
assertEquals("user", u.getUser()); | |||
assertEquals("secret", u.getPass()); | |||
assertEquals(u, new URIish(str)); | |||
str = "http://user:secret@pass@host.xy:80/some/path"; | |||
u = new URIish(str); | |||
assertEquals("http", u.getScheme()); | |||
assertTrue(u.isRemote()); | |||
assertEquals("/some/path", u.getPath()); | |||
assertEquals("host.xy", u.getHost()); | |||
assertEquals(80, u.getPort()); | |||
assertEquals("user", u.getUser()); | |||
assertEquals("secret@pass", u.getPass()); | |||
assertEquals(u, new URIish(str)); | |||
} | |||
} |
@@ -2,6 +2,7 @@ | |||
* Copyright (C) 2009, Mykola Nikishov <mn@mn.com.ua> | |||
* Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com> | |||
* Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org> | |||
* Copyright (C) 2010, Christian Halstrick <christian.halstrick@sap.com> | |||
* and other copyright owners as documented in the project's IP log. | |||
* | |||
* This program and the accompanying materials are made available | |||
@@ -74,7 +75,7 @@ public class URIish implements Serializable { | |||
* capturing groups: the first containing the user and the second containing | |||
* the password | |||
*/ | |||
private static final String OPT_USER_PWD_P = "(?:([^/]+?)(?::([^/]+?))?@)?"; | |||
private static final String OPT_USER_PWD_P = "(?:([^/:@]+)(?::([^/]+))?@)?"; | |||
/** | |||
* Part of a pattern which matches the optional host part of URIs. Defines |