You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Bernd Eckenfels (Jira)" <ji...@apache.org> on 2022/04/26 01:54:00 UTC

[jira] [Commented] (VFS-770) FileSystemManager.createFileSystem(FileObject) fails on Gzip files.

    [ https://issues.apache.org/jira/browse/VFS-770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17527834#comment-17527834 ] 

Bernd Eckenfels commented on VFS-770:
-------------------------------------

BTW just FYI April 22 Update of Java 17 (and others) introduced new Mime types including the ones for `.gz` (`application/gzip`) and `.jar` (`application/java-archive`).

This bugfix helps with these new types in a way that it will consider the file extensions when the new types are not registered. It therefore would have prevented a regression for us.

Backports are here: https://bugs.openjdk.java.net/browse/JDK-8273655



> FileSystemManager.createFileSystem(FileObject) fails on Gzip files.
> -------------------------------------------------------------------
>
>                 Key: VFS-770
>                 URL: https://issues.apache.org/jira/browse/VFS-770
>             Project: Commons VFS
>          Issue Type: Bug
>    Affects Versions: 2.6.0
>         Environment: Both Java 8 and Java 13
>            Reporter: Thomas BELOT
>            Priority: Major
>             Fix For: 2.10.0
>
>
> Stack trace : 
> {noformat}
> Exception in thread "main" org.apache.commons.vfs2.FileSystemException: Could not find a file provider that can handle file "file:///C:/DIR/00-test.gz".
> 	at org.apache.commons.vfs2.FileSystemException.requireNonNull(FileSystemException.java:87)
> 	at org.apache.commons.vfs2.impl.DefaultFileSystemManager.createFileSystem(DefaultFileSystemManager.java:909)
> 	at MyClass.test(MyClass.java:77)
> 	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
> 	at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
> 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
> 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
> 	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
> 	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
> 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> 	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
> 	at one.util.streamex.AbstractStreamEx.forEach(AbstractStreamEx.java:314)
> 	at MyClass.main(MyClass.java:45)
> {noformat}
> Caused by : [fileNameMap.getContentTypeFor(name);|https://gitbox.apache.org/repos/asf?p=commons-vfs.git;a=blob;f=commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/FileContentInfoFilenameFactory.java;h=2888ff6545055c8d00cbd73412671d17560b2592;hb=HEAD#l42] which delegates content type resolution to Java's URLConnection.getFileNameMap() which in turn resolves GZip to a generic application/octet-stream hence leading to this exception.
>  If the resolution had triggered a null or an application/x-gzip it would not have lead to this problem.
> Forcing resolution with fsManager.createFileSystem("gz",f) is a workaround



--
This message was sent by Atlassian Jira
(v8.20.7#820007)