blob: e02ef833382a206899d970dc59d1a03601d5a083 [file] [log] [blame]
<?xml version="1.0"?>
<document>
<properties>
<title>TODO</title>
<author email="jstrachan@apache.org">James Strachan</author>
<author email="adammurdoch@apache.org">Adam Murdoch</author>
<author email="imario@apache.org">Mario Ivankovits</author>
</properties>
<body>
<section name="TODO">
<p>
The following is a list of items that need to be completed.
Contributions are welcome!
</p>
<ul>
<li>More documentation (status, file naming etc).</li>
<li>Fix the
<a href="task-list.html">TODO items</a> in the code.
</li>
<li>Add more providers:
<ul>
<li>nfs</li>
<li>tar</li>
<li>
<strike>gzip</strike> (done)
</li>
<li>
<strike>bzip2</strike> (done)
</li>
<li>rsync</li>
<li>
<strike>ClassLoader resources</strike> (done)
</li>
<li>cvs</li>
<li>subversion</li>
<li>jdbc filesystem</li>
<li>xml filesystem</li>
<li>jndi</li>
<li>imap</li>
<li>local mirror</li>
<li>spidering http</li>
<li>...</li>
</ul>
</li>
<li>JNDI integration.</li>
<li>Formalise the provider API.</li>
<li>WebDAV Provider:
<ul>
<li>Add plain http support, and auto-detect dav resources.</li>
<li>Add set last-modified.</li>
<li>
<strike>Add proxy support</strike> (done)
</li>
<li>HTTPS</li>
</ul>
</li>
<li>SFTP Provider:
<ul>
<li>
<strike>Add key-based authentication.</strike> (done)
</li>
<li>
<strike>Support last-modified.</strike> (done)
</li>
</ul>
</li>
<li>Zip/Jar Provider:
<ul>
<li>Extract an AbstractLayerFileSystem out of ZipFileSystem.</li>
<li>
Track changes to the parent layer. Eg when the
parent layer is deleted, mark all the files in the
fs as 'does-not-exist'.
</li>
<li>Add support for writing to zip/jar files.</li>
</ul>
</li>
<li>FTP Provider:
<ul>
<li>
<strike>Fix set last-modified.</strike> (done)
</li>
<li>
<strike>Support passive mode.</strike> (done FtpFileSystemConfigBuilder)
</li>
<li>
<strike>Add proxy support.</strike> no ftp-proxy standard available. If you are lucky - you simply could use special formed urls.
</li>
</ul>
</li>
<li>URL Provider:
<ul>
<li>Support attributes.</li>
</ul>
</li>
<li>HTTP Provider:
<ul>
<li>Support attributes.</li>
<li>HTTPS support.</li>
</ul>
</li>
<li>
<strike>The in-memory caching mechanism is pretty rudimentary at
this stage. It needs work to make it size capped. In addition,
some mechanism needs to be provided to release and refresh
cached info.</strike> (done)
<br/>
<strike>Some mechanism needs to be provided refresh cached info</strike>
(FileObject.close() rereads the file informations - this is threadsafe)
</li>
<li>
The local disk caching mechanism also needs more work. Needs
to check last-modified time. Replicator needs to be more
configurable.
</li>
<li>Add persistent replicator.</li>
<li>Change the model so that folders may have content.</li>
<li>
Finish support for junctions: Make ancestors of a junction
point visible, fire events when junction is added or removed,
tests.
</li>
<li>
Add support for federation (ie transparently crossing file
system boundaries, such as drilling down into the contents
of a Jar file).
</li>
<li>
<strike>Add Filtering file systems, which sit on top of another
file system, and alter the contents. For example, gzip or bzip2.
</strike>
<br/>No longer needet - VFS handles compressed files like a filesystem with only one entry
</li>
<li>Add an equivalent of the fileScanner Jelly tag.</li>
<li>
Add an equivalent of Ant path, fileset, dirset, filelist, etc.
Ideally, these can be abstracted into a single data type.
</li>
<li>
Allow selectors, name mappers, and filters to be specified
for the Ant tasks.
</li>
<li>Add capabilities to FileObject.</li>
<li>Attributes and attribute schema.</li>
<li>
Handle file canonicalisation better (for cases like
case-insensitive file systems, symbolic links, name mangling, etc).
</li>
<li>Add more selectors: XPath, Ant style, regular expression.</li>
<li>Add adaptor (NodePointerFactory?) for use with JXpath.</li>
<li>
Add content-changed, attribute-changed, and move events to
FileListener. Maybe split into structure and content
listeners.
</li>
<li>Provide a hook for authentication.</li>
<li>Get/set the file permissions.</li>
<li>Sort out threading model.</li>
<li>Automatically checksum and/or verify remote files.</li>
<li>
Use remote copies and moves for those file systems that
support it.
</li>
<li>Add a file monitor, that watches for external changes to files.</li>
<li>Add a DefaultFileSystemManager subclass that is an Avalon component.</li>
<li>
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.
</li>
</ul>
</section>
</body>
</document>