broken URI handling in ZipSource
--------------------------------

                 Key: COCOON-2022
                 URL: https://issues.apache.org/jira/browse/COCOON-2022
             Project: Cocoon
          Issue Type: Bug
          Components: * Cocoon Core
    Affects Versions: 2.1.10
            Reporter: Jörg Heinicke
         Assigned To: Jörg Heinicke
            Priority: Minor


On behalf of Leonid Geller: 
http://marc.theaimsgroup.com/?t=117337275500004&r=1&w=4:

1. Bug in org.apache.cocoon.components.source.impl.ZipSourceFactory, on this 
line:
        // Get protocol. Protocol is configurable via cocoon.xconf
        final String protocol = location.substring(0, protocolEnd - 1);

Obviously it should be location.substring(0, protocolEnd). This is what causes 
zip to be truncated to "zi".

2. When using a SYSTEM identifier with relative DTD path, the XML parser will 
look for the file relative to the URI of the zipped source, 
zip:archive.zip!/source.xml which is obviously going to fail.

Here, the solution is to have the source implementation class (in this case 
org.apache.cocoon.components.source.impl.ZipSource) to change getURI method to 
return source.xml based on archive.zip location, w/o the zip protocol. Current 
implementation:

        return this.protocol + this.archive.getURI() + "!/" + this.filePath;

is not going to work. Something like this will:

        int iZipIdx = this.archive.getURI().lastIndexOf("/");
        if (iZipIdx < 0) iZipIdx = 0;
        return this.archive.getURI().substring(0,iZipIdx)+"/"+ this.filePath;

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to