[
https://issues.apache.org/jira/browse/VFS-399?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Konstantin Kasatkin updated VFS-399:
------------------------------------
Attachment: test.zip
I've attached complete example based on
org.apache.commons.vfs2.example.ShowProperties class. There are two run
scripts: first - with original 2.0 VFS, second - with patched zip provider.
> Custom VFSes over ZIP crashes with Null pointer Exception
> ---------------------------------------------------------
>
> Key: VFS-399
> URL: https://issues.apache.org/jira/browse/VFS-399
> Project: Commons VFS
> Issue Type: Bug
> Affects Versions: 2.0
> Environment: Windows XP x64
> Oracle JDK 1.6.0.27
> Reporter: Konstantin Kasatkin
> Priority: Blocker
> Attachments: test.zip
>
> Original Estimate: 5m
> Remaining Estimate: 5m
>
> When I implement any intermediate VFS provider and try to connect it to ZIP
> VFS provider like jar:myprovider:///myurl/myclasses.jar I get Null Pointer
> Exception due to wrong implementation of ZIP provider. Because it initializes
> NULL zip entry and tries to get last modification time of this entry without
> checking for null value.
> I suggest the solution for this issue in two steps.
> 1. For elimination of issue in class
> org.apache.commons.vfs2.provider.zip.ZipFileObject.java in method
> doGetLastModifiedTime() {color:red}line 149{color}
> change code: [{color:red} return entry.getTime();{color}]
> to code [{color:red}return entry==null ? 0 : entry.getTime();{color}]
> 2. For correct passing of last modification tate from parent VFS to ZIP VFS
> in class org.apache.commons.vfs2.provider.zip.ZipFileSystem.java method
> init() {color:red}line 115{color}
> change code [{color:red}parent = createZipFileObject(parentName,
> null);{color}]
> to code [{color:red}
> ZipEntry parentEntry = new
> ZipEntry(getParentLayer().getFileSystem().getRoot().getName().getPath());
> parentEntry.setSize(0);
> try {
>
> parentEntry.setTime(getParentLayer().getFileSystem().getRoot().getContent().getLastModifiedTime());
> } catch (Exception e) { }
> parent = createZipFileObject(parentName, entry);{color}
> ]
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira