excalibur-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From solprovi...@apache.org
Subject Re: Bug in FileSource?
Date Mon, 28 Jan 2008 18:35:37 GMT
[Using a friend's computer.]  Bug is obvious:
    public FileSource(String uri) throws SourceException, MalformedURLException
    {
        int pos = SourceUtil.indexOfSchemeColon(uri);
        if (pos == -1)
        {
            throw new MalformedURLException("Invalid URI : " + uri);
        }

        String scheme = uri.substring(0, pos);
        String fileName = uri.substring(pos + 1);
        fileName = SourceUtil.decodePath(fileName);
        this.init(scheme, new File(fileName));
    }

Anything before the first colon is treated as the protocol.  Are
single letter schemes illegal? Or is there a "not a real OS" flag to
check for a  "drive letter"?

This code will also fail for real operating systems because it assumes
the String is a URI.  new FileSource("/var/myfile") will throw an
Exception.

I misunderstood the API doc:
   Builds a FileSource given an URI, which doesn't necessarily have to
start with "file:"
That seems to imply a FileSource can be created from a filepath
string.  Guess it means a FileSource can be created from other
protocols.

The API doc needs to explicitly exclude filepaths.  I am surprised a
FileSource cannot be created from a filepath String.  That seems like
the most common operation.

I can fix my code with a simple "file://" prefix.

solprovider

On Jan 28, 2008 5:02 AM, Carsten Ziegeler <cziegeler@apache.org> wrote:
> this seems to be a bug - can you file a bug please?
>
> Thanks
> Carsten
>
>
> solprovider@apache.org wrote:
> > FileSource incorrectly repeats the drive specification on Windows.
> > This causes errors retrieving files relative to the FileSource.
> >
> > We are receiving this error using excalibur-sourceresolve-2.2.3.jar
> > (from Cocoon-2.1.11)
> > cause: java.io.FileNotFoundException: F:\F:\mydirectory\page2xhtml.xsl
> > (The filename, directory name, or volume label syntax is incorrect)
> > org.apache.cocoon.ProcessingException: Unable to get transformer
> > handler for F:///F:/myDirectory/page2xhtml-homepage.xsl
> >
> > FILE: page2xhtml-homepage.xsl (relatively imports page2xhtml.xsl.)
> > <?xml version="1.0"?>
> > <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> > <xsl:import href="page2xhtml.xsl"/>
> > </xsl:stylesheet>
> >
> > JAVA TEST:
> > import java.io.File;
> > import org.apache.excalibur.source.Source;
> > import org.apache.excalibur.source.impl.FileSource;
> > public class mySourceFactory implements SourceFactory{
> >   public Source getSource(String location, Map parameters) throws
> > IOException, MalformedURLException {
> >       File file = new File(myDirectory, location);
> >       if(!file.exists()) throw new IOException("Bad file.");
> >       filepath = file.getAbsolutePath(); //Original assignment is
> >       print(filepath);  \\ "F:\myDirectory\myfile.xsl"
> >       FileSource source = new FileSource(filepath);
> >       print(source.getURI()); \\"F:///F:/myDirectory/myfile.xslt"
> >       return source;
> >    }
> > }
> >
> > Are we doing something wrong?  Does FileSource.getURI() contain a bug?
> >  What is the workaround?
> >
> > TIA,
> > solprovider
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@excalibur.apache.org
> > For additional commands, e-mail: user-help@excalibur.apache.org
> >
> >
>
>
> --
> Carsten Ziegeler
> cziegeler@apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@excalibur.apache.org
> For additional commands, e-mail: user-help@excalibur.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@excalibur.apache.org
For additional commands, e-mail: user-help@excalibur.apache.org


Mime
View raw message