Author: imario
Date: Mon May 14 11:37:14 2007
New Revision: 537943

URL: http://svn.apache.org/viewvc?view=rev&rev=537943
Log:
VFS-149: Add FileContent.hasAttribute and removeAttribute - Thanks to Adam 
Heath for the patch!

Modified:
    
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/FileContent.java
    
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/Resources.properties
    
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/AbstractFileObject.java
    
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/DefaultFileContent.java

Modified: 
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/FileContent.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/FileContent.java?view=diff&rev=537943&r1=537942&r2=537943
==============================================================================
--- 
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/FileContent.java
 (original)
+++ 
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/FileContent.java
 Mon May 14 11:37:14 2007
@@ -76,6 +76,16 @@
     void setLastModifiedTime(long modTime) throws FileSystemException;
 
     /**
+     * Checks if an attribute of the file's content exists.
+     *
+     * @param attrName The name of the attribute.
+     * @throws FileSystemException If the file does not exist, or does not 
support
+     *                             attributes.
+     */
+    boolean hasAttribute(String attrName)
+        throws FileSystemException;
+
+    /**
      * Returns a read-only map of this file's attributes.
      *
      * @throws FileSystemException If the file does not exist, or does not 
support attributes.
@@ -110,6 +120,16 @@
      *                             attributes, or on error setting the 
attribute.
      */
     void setAttribute(String attrName, Object value)
+        throws FileSystemException;
+
+    /**
+     * Removes the value of an attribute of the file's content.
+     *
+     * @param attrName The name of the attribute.
+     * @throws FileSystemException If the file does not exist, or is 
read-only, or does not support
+     *                             attributes, or on error removing the 
attribute.
+     */
+    void removeAttribute(String attrName)
         throws FileSystemException;
 
     /**

Modified: 
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/Resources.properties
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/Resources.properties?view=diff&rev=537943&r1=537942&r2=537943
==============================================================================
--- 
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/Resources.properties
 (original)
+++ 
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/Resources.properties
 Mon May 14 11:37:14 2007
@@ -29,6 +29,7 @@
 vfs.provider/get-last-modified-not-supported.error=This file type does not 
support retriving last modified time.
 vfs.provider/set-last-modified-not-supported.error=This file type does not 
support setting last modified time.
 vfs.provider/set-attribute-not-supported.error=This file type does not support 
setting attributes.
+vfs.provider/remove-attribute-not-supported.error=This file type does not 
support removing attributes.
 vfs.provider/get-attribute-not-supported.error=This file type does not support 
getting attributes.
 vfs.provider/write-not-supported.error=This file type cannot be written to.
 vfs.provider/get-type.error=Could not determine the type of file "{0}".
@@ -82,10 +83,13 @@
 vfs.provider/get-certificates.error=Could not retrieve the certificates of 
"{0}".
 vfs.provider/close-instr.error=Could not close the input stream for file "{0}".
 vfs.provider/close-outstr.error=Could not close the output stream for file 
"{0}".
+vfs.provider/exists-attribute-no-exist.error=Could not check if attribute 
"{0}" of "{1}" exists because attributes are not supported.
 vfs.provider/get-attributes-no-exist.error=Could not get attributes for file 
"{0}" because it does not exist.
 vfs.provider/get-attributes.error=Could not get attributes "{0}".
 vfs.provider/set-attribute-no-exist.error=Could not set attribute "{0}" of 
"{1}" because it does not exist.
 vfs.provider/set-attribute.error=Could not set attribute "{0}" of "{1}".
+vfs.provider/remove-attribute-no-exist.error=Could not check if attribute 
"{0}" of "{1}" exists because attributes are not supported.
+vfs.provider/remove-attribute.error=Could not remove attribute "{0}" of "{1}".
 
 # AbstractFileSystemProvider
 vfs.provider/invalid-absolute-uri.error=Invalid absolute URI "{0}".

Modified: 
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/AbstractFileObject.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/AbstractFileObject.java?view=diff&rev=537943&r1=537942&r2=537943
==============================================================================
--- 
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/AbstractFileObject.java
 (original)
+++ 
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/AbstractFileObject.java
 Mon May 14 11:37:14 2007
@@ -302,6 +302,20 @@
     }
 
     /**
+     * Removes an attribute of this file.  Is only called if [EMAIL PROTECTED] 
#doGetType}
+     * does not return [EMAIL PROTECTED] FileType#IMAGINARY}.
+     * <p/>
+     * This implementation throws an exception.
+        * @returns true if removing the attribute succeed. In this case we 
remove the attribute from
+        * our cache
+     */
+    protected void doRemoveAttribute(final String atttrName)
+        throws Exception
+    {
+        throw new 
FileSystemException("vfs.provider/remove-attribute-not-supported.error");
+    }
+
+    /**
      * Returns the certificates used to sign this file.  Is only called if
      * [EMAIL PROTECTED] #doGetType} does not return [EMAIL PROTECTED] 
FileType#IMAGINARY}.
      * <p/>

Modified: 
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/DefaultFileContent.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/DefaultFileContent.java?view=diff&rev=537943&r1=537942&r2=537943
==============================================================================
--- 
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/DefaultFileContent.java
 (original)
+++ 
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/DefaultFileContent.java
 Mon May 14 11:37:14 2007
@@ -197,6 +197,19 @@
         }
     }
 
+   /**
+     * Checks if an attribute exists.
+     */
+    public boolean hasAttribute(final String attrName) throws 
FileSystemException
+    {
+        if (!file.getType().hasAttributes())
+        {
+            throw new 
FileSystemException("vfs.provider/exists-attributes-no-exist.error", file);
+        }
+        getAttributes();
+        return attrs.containsKey(attrName);
+    }
+
     /**
      * Returns a read-only map of this file's attributes.
      */
@@ -269,6 +282,31 @@
         if (attrs != null)
         {
             attrs.put(attrName, value);
+        }
+    }
+
+    /**
+     * Removes an attribute.
+     */
+    public void removeAttribute(final String attrName) throws 
FileSystemException
+    {
+        if (!file.getType().hasAttributes())
+        {
+            throw new 
FileSystemException("vfs.provider/remove-attribute-no-exist.error", file);
+        }
+
+               try
+        {
+            file.doRemoveAttribute(attrName);
+        }
+        catch (final Exception e)
+        {
+            throw new 
FileSystemException("vfs.provider/remove-attribute.error", new 
Object[]{attrName, file}, e);
+        }
+
+        if (attrs != null)
+        {
+            attrs.remove(attrName);
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to