abashev / vfs-s3

Amazon S3 driver for Apache commons-vfs (Virtual File System) project
Apache License 2.0
93 stars 50 forks source link

S3FileSystemConfigBuilder is not recognized by DelegatingFileSystemOptionsBuilder #42

Closed sergey-derugo closed 7 years ago

sergey-derugo commented 7 years ago

S3FileSystemConfigBuilder is not recognized by DelegatingFileSystemOptionsBuilder. The exception is " File provider for URL scheme "s3" does not provide a configuration builder."

Full stack trace:

org.apache.commons.vfs2.FileSystemException: File provider for URL scheme "s3" does not provide a configuration builder. at org.apache.commons.vfs2.util.DelegatingFileSystemOptionsBuilder.createSchemeMethods(DelegatingFileSystemOptionsBuilder.java:438) at org.apache.commons.vfs2.util.DelegatingFileSystemOptionsBuilder.getSchemeMethods(DelegatingFileSystemOptionsBuilder.java:423) at org.apache.commons.vfs2.util.DelegatingFileSystemOptionsBuilder.fillConfigSetters(DelegatingFileSystemOptionsBuilder.java:404) at org.apache.commons.vfs2.util.DelegatingFileSystemOptionsBuilder.setValues(DelegatingFileSystemOptionsBuilder.java:194) at org.apache.commons.vfs2.util.DelegatingFileSystemOptionsBuilder.setConfigStrings(DelegatingFileSystemOptionsBuilder.java:139) at org.apache.commons.vfs2.util.DelegatingFileSystemOptionsBuilder.setConfigString(DelegatingFileSystemOptionsBuilder.java:122) at test.VfsS3Test.testCreate(VfsS3Test.java:19)

The attached sample demonstrates the issue. vfss3test.zip

sergey-derugo commented 7 years ago

I suggest:

  1. Make com.github.vfss3.S3FileSystemOptions.S3FileSystemConfigBuilder public

  2. Add the following lines to com.github.vfss3.S3FileSystemOptions.S3FileSystemConfigBuilder private static final S3FileSystemConfigBuilder BUILDER = new S3FileSystemConfigBuilder();
    ` /* Gets the singleton builder. @return the singleton builder. */ public static S3FileSystemConfigBuilder getInstance(){ return BUILDER; }`

  3. Add the following lines to S3FileProvider: ` /* Return config builder. @return A config builder for S3FileSystem. @see org.apache.commons.vfs2.provider.AbstractFileProvider#getConfigBuilder() */ @Override public FileSystemConfigBuilder getConfigBuilder() { return S3FileSystemConfigBuilder.getInstance(); }` Any objections?

sergey-derugo commented 7 years ago

Could you please release a new version 2.4.1 since the PR is merged?