[ 
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.

Reply via email to