[
https://issues.apache.org/jira/browse/COCOON-2022?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12480952
]
Jorg Heymans commented on COCOON-2022:
--------------------------------------
You can look at the maven test report in
cocoon-core/target/surefire-reports/TEST-org.apache.cocoon.components.source.impl.ZipSourceTestCase.xml
<testcase time="0.12" name="testURIHandling"> <failure
type="junit.framework.ComparisonFailure" message="Uri is wrong.
expected:&lt;zip:file:/[/]test.zip!/test.xml&gt; but
was:&lt;zip:file:/[]test.zip!/test.xml&gt;">junit.framework.ComparisonFailure:
Uri is wrong. expected:&zip:file:/[/]test.zip!/test.xml& but
was:&zip:file:/[]test.zip!/test.xml& at
junit.framework.Assert.assertEquals(Assert.java:81) at
org.apache.cocoon.components.source.impl.ZipSourceTestCase.testURIHandling(ZipSourceTestCase.java:28)</failure>
<system-out>[DEBUG] SourceResolver: Using base URL:
file:/Users/jheymans/src/cocoon-trunk/core/cocoon-core/[DEBUG] Resolving
'zip:file://test.zip!/test.xml' with base 'null' in context
'file:/Users/jheymans/src/cocoon-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:/Users/jheymans/src/cocoon-trunk/core/cocoon-core/'
[DEBUG] Resolved to systemID : file://test.zip
[DEBUG] Creating source object for file://test.zip
</system-out>
</testcase>
> 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.