[ https://issues.apache.org/jira/browse/COCOON-2022?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12480939 ]
Jorg Heymans commented on COCOON-2022: -------------------------------------- Could it be that this fix breaks a testcase ? On my local CI build i get : Running org.apache.cocoon.components.source.impl.ZipSourceTestCase [DEBUG] SourceResolver: Using base URL: file:/home/maven/.hudson/jobs/Cocoon/workspace/trunk/core/cocoon-core/ [DEBUG] Resolving 'zip:file://test.zip!/test.xml' with base 'null' in context 'file:/home/maven/.hudson/jobs/Cocoon/workspace/trunk/core/cocoon-core/' [DEBUG] Resolved to systemID : zip:file://test.zip!/test.xml [DEBUG] Resolving 'file://test.zip' with base 'null' in context 'file:/home/maven/.hudson/jobs/Cocoon/workspace/trunk/core/cocoon-core/' [DEBUG] Resolved to systemID : file://test.zip [DEBUG] Creating source object for file://test.zip Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.053 sec <<< FAILURE! > 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.