I have looked at this for some time and played with some ideas. Firstly, I want to say that atm NIO2 sucks. It sucks because there are no decent provider implementations. So using the knowledge from VFS2 today, I think a great contribution can be made to "re-use" the VFS2 projects for NIO2.

I think one can take two routes:

[1] Provide separate providers i.e. fts, sftp etc. which are simply loaded separately. This has the advantage that each provider can be developed independently whilst having some core code that is shared. The core code could include stuff such as caching, which already has some good solutions in VFS2

[2] Provide a single front-end scheme, which then also loads the subsequent protocol i.e. vfs:ftp://. This could potentially then just load up a VFS system underneath and re-use most of the code as-is. I think there will be quite some technical problems to solve, as I am not sure whether the current VFS2 architecture will play along being a NIO2 provider (maybe it will, but I don't know).

Unfortunately I have not seen any way to handle multi-scheme such as zip:http:// in NIO2. It might be possible to do something like that in route #2.

My gut feeling, is to just start following #1 for now and roll out separate providers for each protocol. This will allow for some usage patterns to develop in the community.


On 02/06/2016 00:28, Benson Margulies wrote:
Which direction do you have in mind here? I'd be up for helping to
build a device that makes commons-vfs act as an NIO2 file system
provider, but you might be aiming in the opposite direction.


On Wed, Jun 1, 2016 at 7:02 PM, Peter Ansell <ansell.pe...@gmail.com> wrote:
On 2 June 2016 at 01:48, Mark Fortner <phidia...@gmail.com> wrote:
There was some discussion during the last release about a NIO-compatible
version of VFS.  This raised a few questions in my mind.

    1. Is there a branch where this work should start?
    2. Are there any specific API proposals, if so where are they (or will
    they) be documented?  Would there be branches with specific proposal code,
    or a wiki?
    3. Does anyone have an "out of the gate" proposal? A proposed file
    system implementation that they're willing to contribute/collaborate on?
    Preferably something that's easy to test without additional server setup.
    Perhaps a db-based file system that could use java db?
    4. How would the code be organized? Would each implementation have to
    have its own repo? If so, this might slow down initial API development.
    And you always run into the danger that any API changes you make break
    implementing code.
    5. Has anyone considered support for virtual roots in file system URLs?
    Like "home://", "documents://", "music://", etc.
Virtual roots are very simple in NIO2. They are implemented using
FileSystemProvider with a
META-INF/services/java.nio.file.spi.FileSystemProvider file for
autodiscovery by java.util.ServiceLoader.

https://docs.oracle.com/javase/7/docs/technotes/guides/io/fsp/filesystemprovider.html

Cheers,

Peter

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org



--
Schalk W. Cronjé
Twitter / Ello / Toeter : @ysb33r

Reply via email to