Actually, Reference seems to have some odd behavior in general when constructed
with baseRef. Depending on the construction one may end up with null values, odd
values, wrong URIs, NullPointerExceptions, and infinite loops resulting in
StackOverflowErrors.
Here are my test cases:
Reference host = new Reference("http://host.com")
scheme: http
authority: host.com
path: null
baseRef: null
rel-part: java.lang.StackOverflowError
rem-part: http://host.com
toString: http://host.com
targetRef: http://host.com
Reference slashdir = new Reference(host, "/dir")
scheme: null
authority: null
path: /dir
baseRef: http://host.com
rel-part: /dir
Apr 10, 2007 4:45:55 PM org.restlet.data.Reference getRemainingPart
WARNING: Cannot get the remaining part. [baseRef,internalRef]=[http://host.com,
/dir]
java.lang.StringIndexOutOfBoundsException: String index out of range: -11
at java.lang.String.substring(String.java:1768)
at java.lang.String.substring(String.java:1735)
at org.restlet.data.Reference.getRemainingPart(Reference.java:781)
at xex.webdb.Main.display(Main.java:69)
at xex.webdb.Main.main(Main.java:44)
rem-part: null
toString: /dir
targetRef: http://host.com/dir
Reference dir = new Reference(host, "dir")
scheme: null
authority: null
path: dir
baseRef: http://host.com
rel-part: dir
Apr 10, 2007 4:45:55 PM org.restlet.data.Reference getRemainingPart
WARNING: Cannot get the remaining part. [baseRef,internalRef]=[http://host.com,
dir]
java.lang.StringIndexOutOfBoundsException: String index out of range: -12
at java.lang.String.substring(String.java:1768)
at java.lang.String.substring(String.java:1735)
at org.restlet.data.Reference.getRemainingPart(Reference.java:781)
at xex.webdb.Main.display(Main.java:69)
at xex.webdb.Main.main(Main.java:45)
rem-part: null
toString: dir
targetRef: http://host.com/dir
Reference dirslash = new Reference(host, "dir/")
scheme: null
authority: null
path: dir/
baseRef: http://host.com
rel-part: dir/
Apr 10, 2007 4:45:55 PM org.restlet.data.Reference getRemainingPart
WARNING: Cannot get the remaining part. [baseRef,internalRef]=[http://host.com,
dir/]
java.lang.StringIndexOutOfBoundsException: String index out of range: -11
at java.lang.String.substring(String.java:1768)
at java.lang.String.substring(String.java:1735)
at org.restlet.data.Reference.getRemainingPart(Reference.java:781)
at xex.webdb.Main.display(Main.java:69)
at xex.webdb.Main.main(Main.java:46)
rem-part: null
toString: dir/
targetRef: http://host.com/dir/
Reference fulldir = new Reference("http://host.com/dir")
scheme: http
authority: host.com
path: /dir
baseRef: null
rel-part: java.lang.StackOverflowError
rem-part: http://host.com/dir
toString: http://host.com/dir
targetRef: http://host.com/dir
Reference fulldirsub = new Reference(fulldir, "sub")
scheme: null
authority: null
path: sub
baseRef: http://host.com/dir
rel-part: sub
Apr 10, 2007 4:45:55 PM org.restlet.data.Reference getRemainingPart
WARNING: Cannot get the remaining part.
[baseRef,internalRef]=[http://host.com/dir, sub]
java.lang.StringIndexOutOfBoundsException: String index out of range: -16
at java.lang.String.substring(String.java:1768)
at java.lang.String.substring(String.java:1735)
at org.restlet.data.Reference.getRemainingPart(Reference.java:781)
at xex.webdb.Main.display(Main.java:69)
at xex.webdb.Main.main(Main.java:49)
rem-part: null
toString: sub
targetRef: http://host.com/sub
Reference fulldirslashsub = new Reference(fulldir, "/sub")
scheme: null
authority: null
path: /sub
baseRef: http://host.com/dir
rel-part: /sub
Apr 10, 2007 4:45:55 PM org.restlet.data.Reference getRemainingPart
WARNING: Cannot get the remaining part.
[baseRef,internalRef]=[http://host.com/dir, /sub]
java.lang.StringIndexOutOfBoundsException: String index out of range: -15
at java.lang.String.substring(String.java:1768)
at java.lang.String.substring(String.java:1735)
at org.restlet.data.Reference.getRemainingPart(Reference.java:781)
at xex.webdb.Main.display(Main.java:69)
at xex.webdb.Main.main(Main.java:50)
rem-part: null
toString: /sub
targetRef: http://host.com/sub
Reference slashdirsub = new Reference(slashdir, "sub")
scheme: null
authority: null
path: sub
baseRef: /dir
rel-part: sub
Apr 10, 2007 4:45:55 PM org.restlet.data.Reference getRemainingPart
WARNING: Cannot get the remaining part. [baseRef,internalRef]=[/dir, sub]
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1768)
at java.lang.String.substring(String.java:1735)
at org.restlet.data.Reference.getRemainingPart(Reference.java:781)
at xex.webdb.Main.display(Main.java:69)
at xex.webdb.Main.main(Main.java:52)
rem-part: null
toString: sub
targetRef: java.lang.NullPointerException
Reference slashdirslashsub = new Reference(slashdir, "/sub")
scheme: null
authority: null
path: /sub
baseRef: /dir
rel-part: /sub
rem-part:
toString: /sub
targetRef: java.lang.NullPointerException
Reference dirslashsub = new Reference(dirslash, "sub");
scheme: null
authority: null
path: sub
baseRef: dir/
rel-part: sub
Apr 10, 2007 4:45:55 PM org.restlet.data.Reference getRemainingPart
WARNING: Cannot get the remaining part. [baseRef,internalRef]=[dir/, sub]
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1768)
at java.lang.String.substring(String.java:1735)
at org.restlet.data.Reference.getRemainingPart(Reference.java:781)
at xex.webdb.Main.display(Main.java:69)
at xex.webdb.Main.main(Main.java:55)
rem-part: null
toString: sub
targetRef: java.lang.NullPointerException
Reference fullsub = new Reference("http://host.com/dir/sub")
scheme: http
authority: host.com
path: /dir/sub
baseRef: null
rel-part: java.lang.StackOverflowError
rem-part: http://host.com/dir/sub
toString: http://host.com/dir/sub
targetRef: http://host.com/dir/sub