Storage Management Interface

Gw
This is the Storage interface as of revision 299:
public interface Storage
{
    public Iterator blame(String path, long revisionStart, long revisionEnd) throws StorageException
    public OutputStream storeFile(String path) throws StorageException;
    public InputStream getFile(String path) throws StorageException;
    public InputStream getFile(String path, int revision) throws StorageException;
    public Iterator getDirListing(String path) throws StorageException;
    public Iterator getDirListing(String path, long revision) throws StorageException;
    public Map getStatus(String path) throws StorageException;
    public Map getStatus(String path, boolean recursive) throws StorageException;
    public boolean fileExists(String path) throws StorageException;
    public boolean isDirectory(String path) throws StorageException;
    public void makeDirectory(String path) throws StorageException;
    public void moveFile(String oldPath, String newPath, boolean force) throws StorageException;
    public void deleteFile(String path, boolean force) throws StorageException;
    public void revertFile(String path) throws StorageException;
    public void revertFile(String path, long revision) throws StorageException;
    public String getFileDiff(String path, long revision1, long revision2) throws StorageException;
    public SortedSet getLog(String path) throws StorageException;
    public void setProperty(String path, String property, String value, boolean recurse) throws StorageException;
    public Map getProperties(String path) throws StorageException;

    public boolean commit(String message) throws StorageException;
    public boolean update() throws StorageException;
    public Iterator getConflicts() throws StorageException;
    public void setResolved(String path) throws StorageException;

    public void addListener(StorageListener listener);
    public void removeListener(StorageListener listener);

    // Please note that transactions are not implemented yet.
    public void beginTransaction() throws StorageException;
    public void cancelTransaction() throws StorageException;
    public void endTransaction(String message) throws StorageException;
}
                                                                                                                                                             
class SVNStorage implements Storage {
    public SVNStorage(String repository, String username, String password) throws StorageException;
                                                                                                                                                             
    // ...
}
                                                                                                                                                             
class StorageException extends Exception;
class SVNStorageException extends StorageException;
class AuthStorageException extends StorageException;
                                                                                                                                                             
                                                                                                                                                             
interface StorageListener extends EventListener {
    public void fileAdded(String path);
    public void fileDeleted(String path);
    public void fileModified(String path);
    public void fileMoved(String from, String to);
}

class StorageLogMessage implements Comparable {
    public String getAuthor();
    public Map getChangedPaths();
    public Date getDate();
    public String getMessage();
    public long getRevisionNumber();
}

class StorageBlameLine
{
    public Date getChanged();
    public long getRevision();
    public String getAuthor();
    public String getLine();
}