[kaffe] CVS kaffe (robilad): Resynced with GNU Classpath: URI fixes
Kaffe CVS
cvs-commits at kaffe.org
Tue Jan 18 07:27:02 PST 2005
PatchSet 5871
Date: 2005/01/18 15:18:42
Author: robilad
Branch: HEAD
Tag: (none)
Log:
Resynced with GNU Classpath: URI fixes
2005-01-18 Dalibor Topic <robilad at kaffe.org>
Resynced with GNU Classpath.
2005-01-17 Michael Koch <konqueror at gmx.de>
PR libgcj/19444
* java/net/URI.java
(AUTHORITY_REGEXP): New regexp constant.
(AUTHORITY_USERINFO_GROUP): New constant.
(AUTHORITY_HOST_GROUP): Likewise.
(AUTHORITY_PORT_GROUP): Likewise.
(port): Changed default value to -1.
(parseURI): Parse authority part and initialize host,
port and userInfo.
Members:
ChangeLog:1.3412->1.3413
libraries/javalib/java/net/URI.java:1.9->1.10
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3412 kaffe/ChangeLog:1.3413
--- kaffe/ChangeLog:1.3412 Tue Jan 18 15:14:47 2005
+++ kaffe/ChangeLog Tue Jan 18 15:18:42 2005
@@ -1,6 +1,22 @@
2005-01-18 Dalibor Topic <robilad at kaffe.org>
Resynced with GNU Classpath.
+
+ 2005-01-17 Michael Koch <konqueror at gmx.de>
+
+ PR libgcj/19444
+ * java/net/URI.java
+ (AUTHORITY_REGEXP): New regexp constant.
+ (AUTHORITY_USERINFO_GROUP): New constant.
+ (AUTHORITY_HOST_GROUP): Likewise.
+ (AUTHORITY_PORT_GROUP): Likewise.
+ (port): Changed default value to -1.
+ (parseURI): Parse authority part and initialize host,
+ port and userInfo.
+
+2005-01-18 Dalibor Topic <robilad at kaffe.org>
+
+ Resynced with GNU Classpath.
2005-01-17 Jerry Quinn <jlquinn at optonline.net>
Index: kaffe/libraries/javalib/java/net/URI.java
diff -u kaffe/libraries/javalib/java/net/URI.java:1.9 kaffe/libraries/javalib/java/net/URI.java:1.10
--- kaffe/libraries/javalib/java/net/URI.java:1.9 Sat Oct 16 13:31:00 2004
+++ kaffe/libraries/javalib/java/net/URI.java Tue Jan 18 15:18:49 2005
@@ -1,5 +1,5 @@
-/* URI.java - An URI class --
- Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+/* URI.java -- An URI class
+ Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -35,6 +35,7 @@
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package java.net;
import java.io.IOException;
@@ -44,7 +45,6 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-
/**
* @author Ito Kazumitsu (ito.kazumitsu at hitachi-cable.co.jp)
* @author Dalibor Topic (robilad at kaffe.org)
@@ -64,6 +64,9 @@
private static final String URI_REGEXP =
"^(([^:/?#]+):)?((//([^/?#]*))?([^?#]*)(\\?([^#]*))?)?(#(.*))?";
+ private static final String AUTHORITY_REGEXP =
+ "^(([^?#]*)@([^?#]*):([^?#]*))?";
+
/**
* Valid characters (taken from rfc2396)
*/
@@ -111,6 +114,11 @@
* Index of fragment component in parsed URI.
*/
private static final int FRAGMENT_GROUP = 10;
+
+ private static final int AUTHORITY_USERINFO_GROUP = 2;
+ private static final int AUTHORITY_HOST_GROUP = 3;
+ private static final int AUTHORITY_PORT_GROUP = 4;
+
private transient String scheme;
private transient String rawSchemeSpecificPart;
private transient String schemeSpecificPart;
@@ -120,7 +128,7 @@
private transient String userInfo;
private transient String rawHost;
private transient String host;
- private transient int port;
+ private transient int port = -1;
private transient String rawPath;
private transient String path;
private transient String rawQuery;
@@ -168,6 +176,7 @@
{
Pattern pattern = Pattern.compile(URI_REGEXP);
Matcher matcher = pattern.matcher(str);
+
if (matcher.matches())
{
scheme = getURIGroup(matcher, SCHEME_GROUP);
@@ -180,10 +189,42 @@
else
throw new URISyntaxException(str, "doesn't match URI regular expression");
+ if (rawAuthority != null)
+ {
+ pattern = Pattern.compile(AUTHORITY_REGEXP);
+ matcher = pattern.matcher(rawAuthority);
+
+ if (matcher.matches())
+ {
+ rawUserInfo = getURIGroup(matcher, AUTHORITY_USERINFO_GROUP);
+ rawHost = getURIGroup(matcher, AUTHORITY_HOST_GROUP);
+
+ String portStr = getURIGroup(matcher, AUTHORITY_PORT_GROUP);
+
+ if (portStr != null)
+ try
+ {
+ port = Integer.parseInt(portStr);
+ }
+ catch (NumberFormatException e)
+ {
+ URISyntaxException use =
+ new URISyntaxException
+ (str, "doesn't match URI regular expression");
+ use.initCause(e);
+ throw use;
+ }
+ }
+ else
+ throw new URISyntaxException(str, "doesn't match URI regular expression");
+ }
+
// We must eagerly unquote the parts, because this is the only time
// we may throw an exception.
schemeSpecificPart = unquote(rawSchemeSpecificPart);
authority = unquote(rawAuthority);
+ userInfo = unquote(rawUserInfo);
+ host = unquote(rawHost);
path = unquote(rawPath);
query = unquote(rawQuery);
fragment = unquote(rawFragment);
More information about the kaffe
mailing list