You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by im...@apache.org on 2007/05/14 20:48:44 UTC

svn commit: r537948 - /jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/DelegateFileObject.java

Author: imario
Date: Mon May 14 11:48:43 2007
New Revision: 537948

URL: http://svn.apache.org/viewvc?view=rev&rev=537948
Log:
VFS-152: Added DelegateFileObject.doGetContentInfo - Thanks to Adam Heath for the patch!

Modified:
    jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/DelegateFileObject.java

Modified: jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/DelegateFileObject.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/DelegateFileObject.java?view=diff&rev=537948&r1=537947&r2=537948
==============================================================================
--- jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/DelegateFileObject.java (original)
+++ jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/DelegateFileObject.java Mon May 14 11:48:43 2007
@@ -22,6 +22,7 @@
 import org.apache.commons.vfs.FileObject;
 import org.apache.commons.vfs.FileSystemException;
 import org.apache.commons.vfs.FileType;
+import org.apache.commons.vfs.FileContentInfo;
 import org.apache.commons.vfs.util.WeakRefFileListener;
 
 import java.io.InputStream;
@@ -40,308 +41,317 @@
  * @todo Extract subclass that overlays the children
  */
 public class DelegateFileObject
-    extends AbstractFileObject
-    implements FileListener
+	extends AbstractFileObject
+	implements FileListener
 {
-    private FileObject file;
-    private final Set children = new HashSet();
-    private boolean ignoreEvent;
+	private FileObject file;
+	private final Set children = new HashSet();
+	private boolean ignoreEvent;
 
 	public DelegateFileObject(final FileName name,
-                              final AbstractFileSystem fileSystem,
-                              final FileObject file) throws FileSystemException
-    {
-        super(name, fileSystem);
-        this.file = file;
-        if (file != null)
-        {
+							  final AbstractFileSystem fileSystem,
+							  final FileObject file) throws FileSystemException
+	{
+		super(name, fileSystem);
+		this.file = file;
+		if (file != null)
+		{
 			WeakRefFileListener.installListener(file, this);
-        }
-    }
+		}
+	}
+
+	/**
+	 * Adds a child to this file.
+	 */
+	public void attachChild(final FileName baseName, final FileType type) throws Exception
+	{
+		final FileType oldType = doGetType();
+		if (children.add(baseName.getBaseName()))
+		{
+			childrenChanged(baseName, type);
+		}
+		maybeTypeChanged(oldType);
+	}
 
-    /**
-     * Adds a child to this file.
-     */
-    public void attachChild(final FileName baseName, final FileType type) throws Exception
-    {
-        final FileType oldType = doGetType();
-        if (children.add(baseName.getBaseName()))
-        {
-            childrenChanged(baseName, type);
-        }
-        maybeTypeChanged(oldType);
-    }
-
-    /**
-     * Attaches or detaches the target file.
-     */
-    public void setFile(final FileObject file) throws Exception
-    {
-        final FileType oldType = doGetType();
+	/**
+	 * Attaches or detaches the target file.
+	 */
+	public void setFile(final FileObject file) throws Exception
+	{
+		final FileType oldType = doGetType();
 
-        if (file != null)
-        {
+		if (file != null)
+		{
 			WeakRefFileListener.installListener(file, this);
-        }
-        this.file = file;
-        maybeTypeChanged(oldType);
-    }
-
-    /**
-     * Checks whether the file's type has changed, and fires the appropriate
-     * events.
-     */
-    private void maybeTypeChanged(final FileType oldType) throws Exception
-    {
-        final FileType newType = doGetType();
-        if (oldType == FileType.IMAGINARY && newType != FileType.IMAGINARY)
-        {
-            handleCreate(newType);
-        }
-        else if (oldType != FileType.IMAGINARY && newType == FileType.IMAGINARY)
-        {
-            handleDelete();
-        }
-    }
-
-    /**
-     * Determines the type of the file, returns null if the file does not
-     * exist.
-     */
-    protected FileType doGetType() throws FileSystemException
-    {
-        if (file != null)
-        {
-            return file.getType();
-        }
-        else if (children.size() > 0)
-        {
-            return FileType.FOLDER;
-        }
-        else
-        {
-            return FileType.IMAGINARY;
-        }
-    }
-
-    /**
-     * Determines if this file can be read.
-     */
-    protected boolean doIsReadable() throws FileSystemException
-    {
-        if (file != null)
-        {
-            return file.isReadable();
-        }
-        else
-        {
-            return true;
-        }
-    }
-
-    /**
-     * Determines if this file can be written to.
-     */
-    protected boolean doIsWriteable() throws FileSystemException
-    {
-        if (file != null)
-        {
-            return file.isWriteable();
-        }
-        else
-        {
-            return false;
-        }
-    }
-
-    /**
-     * Determines if this file is hidden.
-     */
-    protected boolean doIsHidden() throws FileSystemException
-    {
-        if (file != null)
-        {
-            return file.isHidden();
-        }
-        else
-        {
-            return false;
-        }
-    }
-
-    /**
-     * Lists the children of the file.
-     */
-    protected String[] doListChildren() throws Exception
-    {
-        if (file != null)
-        {
-            final FileObject[] children = file.getChildren();
-            final String[] childNames = new String[children.length];
-            for (int i = 0; i < children.length; i++)
-            {
-                childNames[i] = children[i].getName().getBaseName();
-            }
-            return childNames;
-        }
-        else
-        {
-            return (String[]) children.toArray(new String[children.size()]);
-        }
-    }
-
-    /**
-     * Creates this file as a folder.
-     */
-    protected void doCreateFolder() throws Exception
-    {
-        ignoreEvent = true;
-        try
-        {
-            file.createFolder();
-        }
-        finally
-        {
-            ignoreEvent = false;
-        }
-    }
-
-    /**
-     * Deletes the file.
-     */
-    protected void doDelete() throws Exception
-    {
-        ignoreEvent = true;
-        try
-        {
-            file.delete();
-        }
-        finally
-        {
-            ignoreEvent = false;
-        }
-    }
-
-    /**
-     * Returns the size of the file content (in bytes).  Is only called if
-     * {@link #doGetType} returns {@link FileType#FILE}.
-     */
-    protected long doGetContentSize() throws Exception
-    {
-        return file.getContent().getSize();
-    }
-
-    /**
-     * Returns the attributes of this file.
-     */
-    protected Map doGetAttributes()
-        throws Exception
-    {
-        return file.getContent().getAttributes();
-    }
-
-    /**
-     * Sets an attribute of this file.
-     */
-    protected void doSetAttribute(final String atttrName,
-                                  final Object value)
-        throws Exception
-    {
-        file.getContent().setAttribute(atttrName, value);
-    }
-
-    /**
-     * Returns the certificates of this file.
-     */
-    protected Certificate[] doGetCertificates() throws Exception
-    {
-        return file.getContent().getCertificates();
-    }
-
-    /**
-     * Returns the last-modified time of this file.
-     */
-    protected long doGetLastModifiedTime() throws Exception
-    {
-        return file.getContent().getLastModifiedTime();
-    }
-
-    /**
-     * Sets the last-modified time of this file.
-     */
-    protected boolean doSetLastModTime(final long modtime)
-        throws Exception
-    {
-        file.getContent().setLastModifiedTime(modtime);
+		}
+		this.file = file;
+		maybeTypeChanged(oldType);
+	}
+
+	/**
+	 * Checks whether the file's type has changed, and fires the appropriate
+	 * events.
+	 */
+	private void maybeTypeChanged(final FileType oldType) throws Exception
+	{
+		final FileType newType = doGetType();
+		if (oldType == FileType.IMAGINARY && newType != FileType.IMAGINARY)
+		{
+			handleCreate(newType);
+		}
+		else if (oldType != FileType.IMAGINARY && newType == FileType.IMAGINARY)
+		{
+			handleDelete();
+		}
+	}
+
+	/**
+	 * Determines the type of the file, returns null if the file does not
+	 * exist.
+	 */
+	protected FileType doGetType() throws FileSystemException
+	{
+		if (file != null)
+		{
+			return file.getType();
+		}
+		else if (children.size() > 0)
+		{
+			return FileType.FOLDER;
+		}
+		else
+		{
+			return FileType.IMAGINARY;
+		}
+	}
+
+	/**
+	 * Determines if this file can be read.
+	 */
+	protected boolean doIsReadable() throws FileSystemException
+	{
+		if (file != null)
+		{
+			return file.isReadable();
+		}
+		else
+		{
+			return true;
+		}
+	}
+
+	/**
+	 * Determines if this file can be written to.
+	 */
+	protected boolean doIsWriteable() throws FileSystemException
+	{
+		if (file != null)
+		{
+			return file.isWriteable();
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Determines if this file is hidden.
+	 */
+	protected boolean doIsHidden() throws FileSystemException
+	{
+		if (file != null)
+		{
+			return file.isHidden();
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * Lists the children of the file.
+	 */
+	protected String[] doListChildren() throws Exception
+	{
+		if (file != null)
+		{
+			final FileObject[] children = file.getChildren();
+			final String[] childNames = new String[children.length];
+			for (int i = 0; i < children.length; i++)
+			{
+				childNames[i] = children[i].getName().getBaseName();
+			}
+			return childNames;
+		}
+		else
+		{
+			return (String[]) children.toArray(new String[children.size()]);
+		}
+	}
+
+	/**
+	 * Creates this file as a folder.
+	 */
+	protected void doCreateFolder() throws Exception
+	{
+		ignoreEvent = true;
+		try
+		{
+			file.createFolder();
+		}
+		finally
+		{
+			ignoreEvent = false;
+		}
+	}
+
+	/**
+	 * Deletes the file.
+	 */
+	protected void doDelete() throws Exception
+	{
+		ignoreEvent = true;
+		try
+		{
+			file.delete();
+		}
+		finally
+		{
+			ignoreEvent = false;
+		}
+	}
+
+	/**
+	 * Returns the size of the file content (in bytes).  Is only called if
+	 * {@link #doGetType} returns {@link FileType#FILE}.
+	 */
+	protected long doGetContentSize() throws Exception
+	{
+		return file.getContent().getSize();
+	}
+
+	/**
+	 * Returns the attributes of this file.
+	 */
+	protected Map doGetAttributes()
+		throws Exception
+	{
+		return file.getContent().getAttributes();
+	}
+
+	/**
+	 * Sets an attribute of this file.
+	 */
+	protected void doSetAttribute(final String atttrName,
+								  final Object value)
+		throws Exception
+	{
+		file.getContent().setAttribute(atttrName, value);
+	}
+
+	/**
+	 * Returns the certificates of this file.
+	 */
+	protected Certificate[] doGetCertificates() throws Exception
+	{
+		return file.getContent().getCertificates();
+	}
+
+	/**
+	 * Returns the last-modified time of this file.
+	 */
+	protected long doGetLastModifiedTime() throws Exception
+	{
+		return file.getContent().getLastModifiedTime();
+	}
+
+	/**
+	 * Sets the last-modified time of this file.
+	 */
+	protected boolean doSetLastModTime(final long modtime)
+		throws Exception
+	{
+		file.getContent().setLastModifiedTime(modtime);
 		return true;
 	}
 
-    /**
-     * Creates an input stream to read the file content from.
-     */
-    protected InputStream doGetInputStream() throws Exception
-    {
-        return file.getContent().getInputStream();
-    }
-
-    /**
-     * Creates an output stream to write the file content to.
-     */
-    protected OutputStream doGetOutputStream(boolean bAppend) throws Exception
-    {
-        return file.getContent().getOutputStream(bAppend);
-    }
-
-    /**
-     * Called when a file is created.
-     */
-    public void fileCreated(final FileChangeEvent event) throws Exception
-    {
-        if (event.getFile() != file) return;
-        if (!ignoreEvent)
-        {
-            handleCreate(file.getType());
-        }
-    }
-
-    /**
-     * Called when a file is deleted.
-     */
-    public void fileDeleted(final FileChangeEvent event) throws Exception
-    {
-        if (event.getFile() != file) return;
-        if (!ignoreEvent)
-        {
-            handleDelete();
-        }
-    }
-
-    /**
-     * Called when a file is changed.
-     * <p/>
-     * This will only happen if you monitor the file using {@link org.apache.commons.vfs.FileMonitor}.
-     */
-    public void fileChanged(FileChangeEvent event) throws Exception
-    {
-        if (event.getFile() != file) return;
-        if (!ignoreEvent)
-        {
-            handleChanged();
-        }
-    }
-
-    /**
-     * Close the delegated file
-     */
-    public void close() throws FileSystemException
-    {
-        super.close();
-
-        if (file != null)
-        {
-            file.close();
-        }
-    }
+	/**
+	 * Creates an input stream to read the file content from.
+	 */
+	protected InputStream doGetInputStream() throws Exception
+	{
+		return file.getContent().getInputStream();
+	}
+
+	/**
+	 * Creates an output stream to write the file content to.
+	 */
+	protected OutputStream doGetOutputStream(boolean bAppend) throws Exception
+	{
+		return file.getContent().getOutputStream(bAppend);
+	}
+
+	/**
+	 * Called when a file is created.
+	 */
+	public void fileCreated(final FileChangeEvent event) throws Exception
+	{
+		if (event.getFile() != file)
+		{
+			return;
+		}
+		if (!ignoreEvent)
+		{
+			handleCreate(file.getType());
+		}
+	}
+
+	/**
+	 * Called when a file is deleted.
+	 */
+	public void fileDeleted(final FileChangeEvent event) throws Exception
+	{
+		if (event.getFile() != file)
+		{
+			return;
+		}
+		if (!ignoreEvent)
+		{
+			handleDelete();
+		}
+	}
+
+	/**
+	 * Called when a file is changed.
+	 * <p/>
+	 * This will only happen if you monitor the file using {@link org.apache.commons.vfs.FileMonitor}.
+	 */
+	public void fileChanged(FileChangeEvent event) throws Exception
+	{
+		if (event.getFile() != file)
+		{
+			return;
+		}
+		if (!ignoreEvent)
+		{
+			handleChanged();
+		}
+	}
+
+	/**
+	 * Close the delegated file
+	 */
+	public void close() throws FileSystemException
+	{
+		super.close();
+
+		if (file != null)
+		{
+			file.close();
+		}
+	}
 
 	/**
 	 * refresh file informations
@@ -353,5 +363,10 @@
 		{
 			file.refresh();
 		}
+	}
+
+	protected FileContentInfo doGetContentInfo() throws Exception
+	{
+		return file.getContent().getContentInfo();
 	}
 }



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