You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2006/10/03 23:00:45 UTC
svn commit: r452619 - in /incubator/abdera/java/trunk/core/src:
main/java/org/apache/abdera/util/io/ main/java/org/apache/abdera/util/iri/
test/java/org/apache/abdera/test/iri/
Author: jmsnell
Date: Tue Oct 3 14:00:44 2006
New Revision: 452619
URL: http://svn.apache.org/viewvc?view=rev&rev=452619
Log:
Much better IRI parsing based on the regex given in RFC3986. This should make the parse more efficient
support for non-typical URI schemes much easier and more robust. All the tests still pass (at east on
my machine). Please give the IRI test cases a run through to ensure that no new charset issues have
crept up.
Added:
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/DefaultScheme.java
Removed:
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/Builder.java
Modified:
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/io/CharUtils.java
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/AbstractScheme.java
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/HttpScheme.java
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/IRI.java
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/Scheme.java
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/SchemeRegistry.java
incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/iri/TestIRI.java
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/io/CharUtils.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/io/CharUtils.java?view=diff&rev=452619&r1=452618&r2=452619
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/io/CharUtils.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/io/CharUtils.java Tue Oct 3 14:00:44 2006
@@ -86,6 +86,7 @@
}
public static void verify(String s, BitSet set) throws InvalidCharacterException {
+ if (s == null) return;
CodepointIterator ci = CodepointIterator.forCharSequence(s);
RestrictedCodepointIterator rci = new RestrictedCodepointIterator(ci,set,false);
while (rci.hasNext()) rci.next();
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/AbstractScheme.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/AbstractScheme.java?view=diff&rev=452619&r1=452618&r2=452619
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/AbstractScheme.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/AbstractScheme.java Tue Oct 3 14:00:44 2006
@@ -17,8 +17,6 @@
*/
package org.apache.abdera.util.iri;
-import org.apache.abdera.util.io.CodepointIterator;
-
/**
* Base implementation for IRI scheme providers
*/
@@ -45,15 +43,16 @@
}
/**
- * Default to use default parsing
+ * Default return unmodified
*/
- public boolean parse(
- CodepointIterator reader,
- Builder builder) {
- return false;
- }
-
public IRI normalize(IRI iri) {
- return null;
+ return iri;
+ }
+
+ /**
+ * Default return unmodified
+ */
+ public String normalizePath(String path) {
+ return path;
}
}
Added: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/DefaultScheme.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/DefaultScheme.java?view=auto&rev=452619
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/DefaultScheme.java (added)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/DefaultScheme.java Tue Oct 3 14:00:44 2006
@@ -0,0 +1,26 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License. For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.util.iri;
+
+public class DefaultScheme extends AbstractScheme {
+
+ public DefaultScheme(String name) {
+ super(name);
+ }
+
+}
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/HttpScheme.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/HttpScheme.java?view=diff&rev=452619&r1=452618&r2=452619
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/HttpScheme.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/HttpScheme.java Tue Oct 3 14:00:44 2006
@@ -46,7 +46,8 @@
return true;
if (!iri1.getScheme().equals(iri2.getScheme()))
return false;
-
+ iri1 = iri1.normalize();
+ iri2 = iri2.normalize();
int port1 = (iri1.getPort() != -1) ? iri1.getPort() : getDefaultPort();
int port2 = (iri2.getPort() != -1) ? iri2.getPort() : getDefaultPort();
return
@@ -81,9 +82,13 @@
port,
IRI.normalize(this,iri.getPath()),
iri.getQuery(),
- iri.getFragment(),
- iri.doubleslash
+ iri.getFragment()
);
+ }
+
+ // use the path normalization coded into the IRI class
+ public String normalizePath(String path) {
+ return null;
}
}
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/IRI.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/IRI.java?view=diff&rev=452619&r1=452618&r2=452619
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/IRI.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/IRI.java Tue Oct 3 14:00:44 2006
@@ -1,20 +1,3 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. The ASF licenses this file to You
- * under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License. For additional information regarding
- * copyright in this work, please see the NOTICE file in the top level
- * directory of this distribution.
- */
package org.apache.abdera.util.iri;
import java.io.IOException;
@@ -22,17 +5,17 @@
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
-import java.util.BitSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.apache.abdera.util.io.CharUtils;
-import org.apache.abdera.util.io.CodepointIterator;
+import org.apache.abdera.util.io.InvalidCharacterException;
import org.apache.abdera.util.unicode.Normalizer;
-
public class IRI
implements Serializable,
Cloneable {
-
+
private static final long serialVersionUID = -4530530782760282284L;
Scheme _scheme;
private String scheme;
@@ -43,7 +26,6 @@
private String path;
private String query;
private String fragment;
- boolean doubleslash;
private String a_host;
private String a_fragment;
@@ -97,8 +79,7 @@
b.port,
b.path,
b.query,
- b.fragment,
- b.doubleslash);
+ b.fragment);
}
public IRI(String iri, Normalizer.Form nf) throws IRISyntaxException, IOException {
@@ -118,9 +99,8 @@
StringBuffer buf = new StringBuffer();
buildAuthority(buf,userinfo, host, port);
String authority = (buf.length()!=0)?buf.toString():null;
- boolean doubleslash = (authority != null);
init(_scheme,scheme,authority,userinfo,
- host,port,path,query,fragment,doubleslash);
+ host,port,path,query,fragment);
}
public IRI(
@@ -128,16 +108,15 @@
String authority,
String path,
String query,
- String fragment) {
- Builder builder = new Builder();
- if (authority != null)
- splitAuthority(authority, builder);
- SchemeRegistry reg = SchemeRegistry.getInstance();
- Scheme _scheme = reg.getScheme(scheme);
- boolean doubleslash = (authority != null);
- init(_scheme,scheme,authority,builder.userinfo,
- builder.host,builder.port,path,query,
- fragment,doubleslash);
+ String fragment)
+ throws IRISyntaxException {
+ Builder builder = new Builder();
+ Parser.parseAuthority(authority, builder);
+ SchemeRegistry reg = SchemeRegistry.getInstance();
+ Scheme _scheme = reg.getScheme(scheme);
+ init(_scheme,scheme,authority,builder.userinfo,
+ builder.host,builder.port,path,query,
+ fragment);
}
public IRI(
@@ -157,10 +136,9 @@
int port,
String path,
String query,
- String fragment,
- boolean doubleslash) {
+ String fragment) {
init(_scheme,scheme,authority,userinfo,
- host,port,path,query,fragment,doubleslash);
+ host,port,path,query,fragment);
}
private void init(
@@ -172,8 +150,7 @@
int port,
String path,
String query,
- String fragment,
- boolean doubleslash) {
+ String fragment) {
this._scheme = _scheme;
this.scheme = scheme;
this.authority = authority;
@@ -183,18 +160,17 @@
this.path = (path != null) ? path : "";
this.query = query;
this.fragment = fragment;
- this.doubleslash = doubleslash;
d_authority = Escaping.decode(authority);
d_userinfo = Escaping.decode(userinfo);
d_path = Escaping.decode(path);
d_query = Escaping.decode(query);
d_fragment = Escaping.decode(fragment);
- d_host = Escaping.decode(host);
+ d_host = IDNA.toUnicode(Escaping.decode(host));
a_host = IDNA.toASCII(d_host);
a_fragment = Escaping.encode(getFragment(),Constants.FRAGMENT);
- a_path = normalize(_scheme,Escaping.encode(getPath(), Constants.PATH));
+ a_path = Escaping.encode(getPath(), Constants.PATH);
a_query = Escaping.encode(getQuery(),Constants.QUERY);
a_userinfo = Escaping.encode(getUserInfo(),Constants.USERINFO);
a_authority = buildASCIIAuthority();
@@ -376,7 +352,11 @@
buildAuthority(buf,aui,ah,port);
return buf.toString();
} else {
- return Escaping.encode(getAuthority(), Constants.USERINFO, Constants.REGNAME);
+ return Escaping.encode(
+ getAuthority(),
+ Constants.USERINFO,
+ Constants.REGNAME,
+ Constants.GENDELIMS);
}
}
@@ -414,8 +394,10 @@
String query,
String fragment) {
StringBuffer buf = new StringBuffer();
- if (doubleslash) buf.append("//");
- if (authority != null) buf.append(authority);
+ if (authority != null) {
+ buf.append("//");
+ buf.append(authority);
+ }
if (path != null && path.length() != 0) {
buf.append(path);
}
@@ -461,8 +443,7 @@
null,null,null,null,-1,
normalize(b._scheme,cpath.substring(bpath.length())),
c.getQuery(),
- c.getFragment(),
- false);
+ c.getFragment());
return iri;
}
@@ -484,7 +465,11 @@
query == null;
}
- public static IRI resolve(IRI b, String c) throws IRISyntaxException, IOException {
+ public static IRI resolve(
+ IRI b,
+ String c)
+ throws IRISyntaxException,
+ IOException {
return resolve(b, IRI.create(c));
}
@@ -510,8 +495,7 @@
b.getPort(),
normalize(b._scheme,b.getPath()),
b.getQuery(),
- cfragment,
- b.doubleslash
+ cfragment
);
}
}
@@ -519,7 +503,6 @@
Scheme _scheme = b._scheme;
String scheme = b.scheme;
- boolean ds = b.doubleslash;
String query = c.getQuery();
String fragment = c.getFragment();
String userinfo = null;
@@ -542,7 +525,16 @@
port = c.getPort();
path = normalize(b._scheme,c.getPath());
}
- return new IRI(_scheme,scheme,authority,userinfo,host,port,path,query,fragment,ds);
+ return new IRI(
+ _scheme,
+ scheme,
+ authority,
+ userinfo,
+ host,
+ port,
+ path,
+ query,
+ fragment);
}
public IRI normalize() {
@@ -564,14 +556,16 @@
iri.getPort(),
normalize(iri._scheme,iri.getPath()),
iri.getQuery(),
- iri.getFragment(),
- iri.doubleslash
+ iri.getFragment()
);
}
static String normalize(Scheme scheme, String path) {
- if (scheme != null && !(scheme instanceof HttpScheme)) return path;
- if (path == null) return "/";
+ if (scheme != null) {
+ String n = scheme.normalizePath(path);
+ if (n != null) return n;
+ }
+ if (path == null || path.length() == 0) return "/";
String[] segments = path.split("/");
if (segments.length < 2) return path;
StringBuffer buf = new StringBuffer("/");
@@ -651,61 +645,46 @@
return buf.toString();
}
- public java.net.URI toURI() throws URISyntaxException {
- return new java.net.URI(toASCIIString());
+ public java.net.URI toURI()
+ throws URISyntaxException {
+ return new java.net.URI(toASCIIString());
}
- public java.net.URL toURL() throws MalformedURLException, URISyntaxException {
+ public java.net.URL toURL()
+ throws MalformedURLException,
+ URISyntaxException {
return toURI().toURL();
}
////////// parse implementation
- private static void parse(String uri, Builder builder) throws IRISyntaxException {
- SchemeRegistry reg = SchemeRegistry.getInstance();
- builder.chars = uri.toCharArray();
- CodepointIterator ci = CodepointIterator.forCharArray(builder.chars);
+ private static void parse(
+ String uri,
+ Builder builder)
+ throws IRISyntaxException {
try {
- Parser.parse(ci, builder, reg);
+ Parser.parse(uri, builder, SchemeRegistry.getInstance());
} catch (IOException e) {
throw new IRISyntaxException(e);
}
}
- public static IRI create(String iri) throws IRISyntaxException {
+ public static IRI create(
+ String iri)
+ throws IRISyntaxException {
return new IRI(iri);
}
- public static IRI create(String iri, Normalizer.Form nf) throws IRISyntaxException, IOException {
+ public static IRI create(
+ String iri,
+ Normalizer.Form nf)
+ throws IRISyntaxException,
+ IOException {
return new IRI(iri,nf);
}
- static void splitAuthority(String authority, Builder builder) {
- if (authority != null) {
- int n = authority.indexOf('@');
- if (n > -1) builder.userinfo = authority.substring(0,n);
- int a = authority.indexOf('[',n);
- if (a > -1) {
- int m = authority.indexOf(']',a);
- if (m > -1) a = m;
- a = authority.indexOf(':',a);
- } else
- a = authority.indexOf(':',n);
- if (a > -1) {
- builder.host = authority.substring(n+1,a);
- String p = authority.substring(a+1);
- if (p.length() > 0) {
- try {
- builder.port = Integer.parseInt(p);
- } catch (Exception e) {}
- }
- } else builder.host = authority.substring(n+1);
- }
- }
-
- static class Builder implements org.apache.abdera.util.iri.Builder {
+ static class Builder {
private Scheme schemeobj;
- private char[] chars;
private String scheme;
private String authority;
private String userinfo;
@@ -714,104 +693,69 @@
private String path;
private String query;
private String fragment;
- private boolean doubleslash;
-
- private void setScheme(Scheme scheme) {
- this.schemeobj = scheme;
- }
-
- public void scheme(int s, int l) {
- scheme = (l > 0) ? new String(chars,s,l).toLowerCase() : null;
- }
- public void authority(int s, int l) {
- authority = (l > 0) ? new String(chars,s,l) : null;
- splitAuthority(authority, this);
- }
- public void path(int s, int l) {
- path = (l > 0) ? new String(chars,s,l) : null;
- }
- public void query(int s, int l) {
- query = (l > 0) ? new String(chars,s,l) : null;
- }
- public void fragment(int s, int l) {
- fragment = (l > 0) ? new String(chars,s,l) : null;
- }
public IRI getAtomURI() {
return new IRI(
schemeobj,
scheme,authority,userinfo,
- host,port,path,query,fragment,
- doubleslash);
+ host,port,path,query,fragment);
}
}
static class Parser {
- static void parse(CodepointIterator ci, Builder builder, SchemeRegistry reg)
+
+ static final Pattern p =
+ Pattern.compile(
+ "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?");
+
+ static final Pattern a =
+ Pattern.compile("^((.*)?@)?(\\[.*\\])?([^:]*)?(:(\\d*))?");
+
+ static void parseAuthority(String authority, Builder builder) throws IRISyntaxException {
+ if (authority != null) {
+ Matcher auth = a.matcher(authority);
+ if (auth.find()) {
+ if (auth.group(2) != null) builder.userinfo = auth.group(2);
+ if (auth.group(3) != null) builder.host = auth.group(3);
+ else builder.host = auth.group(4);
+ if (auth.group(6) != null) builder.port = Integer.parseInt(auth.group(6));
+ }
+ try {
+ CharUtils.verify(builder.userinfo, Constants.IUSERINFO);
+ CharUtils.verify(builder.host, Constants.IREGNAME);
+ } catch (InvalidCharacterException e) {
+ throw new IRISyntaxException(e);
+ }
+ }
+ }
+
+ static void parse(String iri, Builder builder, SchemeRegistry reg)
throws IRISyntaxException,
IOException {
- int e = ci.position();
- scan(ci,Constants.SCHEME,-1);
- if (ci.peek() == ':')
- builder.scheme(e,ci.position()-e);
- Scheme _scheme = null;
- if (builder.scheme != null && builder.scheme.length() != 0) {
- _scheme = reg.getScheme(builder.scheme);
- } else { ci.position(e); }
- if (_scheme != null) {
- // allow for scheme specific parsing. if the resolved scheme
- // does parse the result, skip the rest, otherwise, do the
- // default parsing
- builder.setScheme(_scheme);
- if (_scheme.parse(ci, builder)) return;
- }
- // default parsing. works for most common schemes
- scan(ci, Constants.COLON,1);
- e = ci.position();
- if (ci.peek() == '/' &&
- ci.peek(ci.position() + 1) == '/') {
- scan(ci,Constants.SLASH,2);
- builder.doubleslash = true;
- }
- e = ci.position();
- int f = find(ci,Constants.SEPS);
- if(f != 0) {
- scan(ci,Constants.ISERVER,-1);
- if (ci.peek() == -1 || CharUtils.isSet(ci.peek(), Constants.SEPS)) {
- builder.authority(e,ci.position()-e);
- }
- else ci.position(e);
- e = ci.position();
+ Matcher irim = p.matcher(iri);
+ if (irim.find()) {
+
+ builder.scheme = irim.group(2);
+ builder.schemeobj = reg.getScheme(builder.scheme);
+ builder.authority = irim.group(4);
+ builder.path = irim.group(5);
+ builder.query = irim.group(7);
+ builder.fragment = irim.group(9);
+
+ parseAuthority(builder.authority, builder);
+
+ try {
+ CharUtils.verify(builder.scheme, Constants.SCHEME);
+ CharUtils.verify(builder.path, Constants.IPATH);
+ CharUtils.verify(builder.query, Constants.IQUERY);
+ CharUtils.verify(builder.fragment, Constants.IFRAGMENT);
+ } catch (InvalidCharacterException e) {
+ throw new IRISyntaxException(e);
+ }
+ } else {
+ throw new IRISyntaxException("Invalid Syntax");
}
- scan(ci,Constants.IPATH,-1);
- builder.path(e,ci.position()-e);
- scan(ci,Constants.QUERYMARK,-1);
- e = ci.position();
- scan(ci,Constants.IQUERY,-1);
- builder.query(e,ci.position()-e);
- scan(ci,Constants.HASH,-1);
- e = ci.position();
- scan(ci,Constants.IFRAGMENT,-1);
- builder.fragment(e,ci.position()-e);
}
}
- private static int find(CodepointIterator ci, BitSet set) throws IOException {
- int n = ci.position();
- int c = -1;
- while((c = ci.peek(n++)) != -1 && set.get(c)) { n++; }
- return n-1;
- }
-
- private static int scan(CodepointIterator ci, BitSet set, int count) throws IOException, IRISyntaxException {
- while (ci.hasNext() && ci.peek() != -1 && set.get(ci.peek())){
- int p = ci.next();
- if (!set.get(p)) {
- if (!CharUtils.isSet(p, Constants.RESERVED, Constants.IUNRESERVED, Constants.HASH))
- throw new IRISyntaxException("Invalid Character (0x" + Integer.toHexString(p) + ") In URI");
- return -1;
- }
- }
- return -1;
- }
}
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/Scheme.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/Scheme.java?view=diff&rev=452619&r1=452618&r2=452619
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/Scheme.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/Scheme.java Tue Oct 3 14:00:44 2006
@@ -17,8 +17,6 @@
*/
package org.apache.abdera.util.iri;
-import org.apache.abdera.util.io.CodepointIterator;
-
/**
* Interface implemented by custom IRI scheme parsers
*/
@@ -28,8 +26,8 @@
boolean equivalent(IRI iri1, IRI iri2);
- boolean parse(CodepointIterator reader, Builder builder);
-
IRI normalize(IRI iri);
+
+ String normalizePath(String path);
}
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/SchemeRegistry.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/SchemeRegistry.java?view=diff&rev=452619&r1=452618&r2=452619
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/SchemeRegistry.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/iri/SchemeRegistry.java Tue Oct 3 14:00:44 2006
@@ -69,7 +69,9 @@
}
public Scheme getScheme(String scheme) {
- return schemes.get(scheme.toLowerCase());
+ if (scheme == null) return null;
+ Scheme s = schemes.get(scheme.toLowerCase());
+ return (s != null) ? s : new DefaultScheme(scheme);
}
}
Modified: incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/iri/TestIRI.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/iri/TestIRI.java?view=diff&rev=452619&r1=452618&r2=452619
==============================================================================
--- incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/iri/TestIRI.java (original)
+++ incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/iri/TestIRI.java Tue Oct 3 14:00:44 2006
@@ -81,19 +81,20 @@
assertFalse(iri3.equals(iri1)); // false
assertFalse(iri3.equals(iri2)); // false
- assertTrue(iri1.normalize().equals(iri2.normalize())); //true
- assertFalse(iri1.normalize().equals(iri3.normalize())); //false
- assertTrue(iri2.normalize().equals(iri1.normalize())); //true
- assertFalse(iri2.normalize().equals(iri3.normalize())); //false
- assertFalse(iri3.normalize().equals(iri1.normalize())); //false
- assertFalse(iri3.normalize().equals(iri2.normalize())); //false
- assertTrue(iri1.equivalent(iri2)); // true
- assertTrue(iri1.equivalent(iri3)); // true
- assertTrue(iri2.equivalent(iri1)); // true
- assertTrue(iri2.equivalent(iri3)); // true
- assertTrue(iri3.equivalent(iri1)); // true
- assertTrue(iri3.equivalent(iri2)); // true
+ assertTrue(iri1.normalize().equals(iri2.normalize()));
+ assertTrue(iri1.normalize().equals(iri3.normalize()));
+ assertTrue(iri2.normalize().equals(iri1.normalize()));
+ assertTrue(iri2.normalize().equals(iri3.normalize()));
+ assertTrue(iri3.normalize().equals(iri1.normalize()));
+ assertTrue(iri3.normalize().equals(iri2.normalize()));
+
+ assertTrue(iri1.equivalent(iri2));
+ assertTrue(iri1.equivalent(iri3));
+ assertTrue(iri2.equivalent(iri1));
+ assertTrue(iri2.equivalent(iri3));
+ assertTrue(iri3.equivalent(iri1));
+ assertTrue(iri3.equivalent(iri2));
}