##### Commons VFS

- Overview
- Download and Build
- 3rd party plugins
- Using the API
- API JavaDocs
- File Systems
- Ant Tasks
- Wiki

##### Development

- Test Server
- Mailing Lists
- Issue Tracking
- Source Repository
- To Do List

##### Project Documentation

- About
- Project Info
- Project Reports
- Development Process

##### Commons

- Home
- Components
- Sandbox
- Dormant
- Volunteering
- Contributing Patches
- Building Components
- Releasing Components
- Wiki

##### Legend

- External Link
- Opens in a new window

## TODO

The following is a list of items that need to be completed. Contributions are welcome!

### Release 1.1

- moveTo should handle a directory move if it moves from a different filesystem.

### Open

- More documentation (status, file naming etc).
- Fix the TODO items in the code.
- Add more providers:
  - rsync
  - subversion
  - nfs
  - cvs
  - jdbc filesystem
  - xml filesystem
  - jndi
  - imap
  - local mirror
  - spidering http
  - ...
- JNDI integration.
- Formalise the provider API.
- WebDAV Provider:
  - Add plain http support, and auto-detect dav resources.
  - Add set last-modified.
  - HTTPS
- Zip/Jar Provider:
  - Extract an AbstractLayerFileSystem out of ZipFileSystem.
  - Track changes to the parent layer. Eg when the parent layer is deleted, mark all the files in the fs as 'does-not-exist'.
  - Add support for writing to zip/jar files.
- URL Provider:
  - Support attributes.
- HTTP Provider:
  - Support attributes.
  - HTTPS support.
- The local disk caching mechanism also needs more work. Needs to check last-modified time. Replicator needs to be more configurable.
- Add persistent replicator.
- Finish support for junctions: Make ancestors of a junction point visible, fire events when junction is added or removed, tests.
- Add support for federation (ie transparently crossing file system boundaries, such as drilling down into the contents of a Jar file).
- Add an equivalent of the fileScanner Jelly tag.
- Add an equivalent of Ant path, fileset, dirset, filelist, etc. Ideally, these can be abstracted into a single data type.
- Allow selectors, name mappers, and filters to be specified for the Ant tasks.
- Add capabilities to FileObject.
- Attributes and attribute schema.
- Handle file canonicalisation better (for cases like case-insensitive file systems, symbolic links, name mangling, etc).
- Add more selectors: XPath, Ant style, regular expression.
- Add adaptor (NodePointerFactory?) for use with JXpath.
- Add content-changed, attribute-changed, and move events to FileListener. Maybe split into structure and content listeners.
- Get/set the file permissions.
- Automatically checksum and/or verify remote files.
- Look at adding native code for fine-grained control over permissions, file monitoring, faster moves, etc. Must be optional - the thing should still build and run without the native code.

## Library upgrades

The following describes things I discovered during testing newer dependencies.

### webdavlib 2.1

- resource.listWebdavResources() do no longer list directories?
  Figure out what to do