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]

Reply via email to