Fixed URI regexp regarding user/password part

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>
This commit is contained in:
Christian Halstrick 2010-10-06 15:43:42 +02:00 committed by Matthias Sohn
parent cee08c3027
commit 2136095203
2 changed files with 25 additions and 1 deletions

View File

@ -424,4 +424,27 @@ public void testGetValidWithSlashesDotGitSlashHumanishName()
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));
}
}

View File

@ -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