Carsten,

I've recently switched to the new source-resolving excalibur code and I
found that you use the following

     File file = new File( this.systemId.substring( "file".length() ) );

to obtain the 'path' part of a 'file' URI. The above might work on UNIX,
but it clearly doesn't work on other operating systems, since URIs like
these

    file:///c:/path/to/file

are totally valid and your code is not able to handle them.

Now, my suggestion would be to use the standard java.net API because
they already handle all these issues (file: protocol handling is
expecially tricky on regards of the number of slashes).

NOTE: there is no official indication on how the file: URI should be
addressed, but all these

    file:/file
    file://file
    file:///file

are all valid URIs and should point to the same file (at least, this was
my understanding). It could be possible to add

    file:file

to indicate a relative location. This is normally achieved by avoiding
to indicate the protocol (such as in "file"), but since we need a
protocol to identify the handler, "file:file" might just be a way to
encode relativity in file positioning.

                                  - o -

I just found another bug: the docs say that if you call

   resolver.resolveURI()

and the resource doesn't exist, you get a SourceNotFoundException. If yo 
are accessing file resources, instead you get a FileNotFoundException, 
which is not even inherited.

Expect more bug report soon since I'm getting pretty heavy on sources :)

-- 
Stefano Mazzocchi      One must still have chaos in oneself to be
                             able to give birth to a dancing star.
<[EMAIL PROTECTED]>                             Friedrich Nietzsche
--------------------------------------------------------------------






---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to