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.