Hi Philippe, > -----Original Message----- > From: Philippe Poulard [mailto:[EMAIL PROTECTED] > Sent: lundi 17 juillet 2006 11:28 > To: Jakarta Commons Users List > Subject: Re: [VFS] Why resolveFile API doesn't accepting URI ? > > Vincent Massol wrote: > > Hi Mario, > > > > > >>-----Original Message----- > >>From: Mario Ivankovits [mailto:[EMAIL PROTECTED] > >>Sent: lundi 17 juillet 2006 08:25 > >>To: Jakarta Commons Users List > >>Subject: Re: [VFS] Why resolveFile API doesn't accepting URI ? > >> > >>Hi! > >> > >>>I've just tried to use VFS and I was surprised to see that the > >> > >>resolveFile > >> > >>>API does not have a signature accepting a URI object. > >> > >>I think (this decision were felt before I jumped to VFS) the main reason > >>is, that vfs supports "layered" URIs. So you can have > >>tar:gz:http://www....... > >>The java URI class cant really deal with this, can it? > > > > > > I think it can. See > > http://java.sun.com/j2se/1.4.2/docs/api/java/net/URI.html > > > > They give this example in the javadoc: > > urn:isbn:096139210x > > > > In addition the general format is: [scheme:]scheme-specific- > part[#fragment] > > I'm not an expert but I guess one could consider that the scheme is > > "tar:gz:http" in your example above. > > not at all : the scheme is "tar" and the scheme specific part is the > remainder ;
Ah right. As I said I'm not an expert ;-) > unfortunately, the URI class doesn't perform further parsing > for the other parts because the RFCs doesn't specify a separator ; VFS > uses "!" What do you think would not work if VFS used an URI class? It seems to me that getScheme() and getSchemeSpecificPart() will always return the full URI, no? I wrote a little unit test to ensure I understand what's going on: public void testURI() throws Exception { URI uri1 = new URI("file://c:/anyhost/dir/mytar.tar.gz"); assertEquals("file", uri1.getScheme()); assertEquals("//c:/anyhost/dir/mytar.tar.gz", uri1.getSchemeSpecificPart()); assertEquals("c:", uri1.getAuthority()); assertEquals("/anyhost/dir/mytar.tar.gz", uri1.getPath()); URI uri2 = new URI("tar:gz:http://anyhost/dir/mytar.tar.gz!/mytar.tar!" + "/path/in/tar/README.txt"); assertEquals("tar", uri2.getScheme()); assertEquals("gz:http://anyhost/dir/mytar.tar.gz!/mytar.tar!" + "/path/in/tar/README.txt", uri2.getSchemeSpecificPart()); assertNull(uri2.getAuthority()); assertNull(uri2.getPath()); } As the general format is "[scheme:]scheme-specific-part[#fragment]" if we used only the getScheme() and getSchemeSpecificPart() APIs wouldn't it work just fine? The scheme-specific part would be parsed as it's currently done. In other words what do you think wouldn't work if we used the URI Java class? Thanks -Vincent ___________________________________________________________________________ Yahoo! Mail réinvente le mail ! Découvrez le nouveau Yahoo! Mail et son interface révolutionnaire. http://fr.mail.yahoo.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]