You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2012/05/17 22:06:37 UTC

svn commit: r1339834 - in /commons/proper/vfs/trunk/core/src: main/java/org/apache/commons/vfs2/ main/java/org/apache/commons/vfs2/provider/ main/java/org/apache/commons/vfs2/provider/local/ main/java/org/apache/commons/vfs2/provider/ram/ main/java/org...

Author: ggregory
Date: Thu May 17 20:06:36 2012
New Revision: 1339834

URL: http://svn.apache.org/viewvc?rev=1339834&view=rev
Log:
[VFS-417][RAM][Local] Add and implement new API: RandomAccessContent.setLength(long).
[VFS-406][RAM] resize throws ArrayOOBE when shrinking in size.

Added:
    commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/ProviderRandomSetLengthTests.java   (with props)
Modified:
    commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/Capability.java
    commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/RandomAccessContent.java
    commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/AbstractRandomAccessStreamContent.java
    commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/local/DefaultLocalFileProvider.java
    commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/local/LocalFileRandomAccessContent.java
    commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileData.java
    commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileObject.java
    commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileProvider.java
    commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileRandomAccessContent.java
    commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/util/MonitorRandomAccessContent.java
    commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/ProviderTestSuite.java

Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/Capability.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/Capability.java?rev=1339834&r1=1339833&r2=1339834&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/Capability.java (original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/Capability.java Thu May 17 20:06:36 2012
@@ -32,12 +32,17 @@ public enum Capability
     WRITE_CONTENT,
 
     /**
-     * File content can be read in random mode.<br>
+     * File content can be read in random mode.
      */
     RANDOM_ACCESS_READ,
 
     /**
-     * File content can be written in random mode.<br>
+     * File content length can be set in random mode.
+     */
+    RANDOM_ACCESS_SET_LENGTH,
+
+    /**
+     * File content can be written in random mode.
      */
     RANDOM_ACCESS_WRITE,
 

Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/RandomAccessContent.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/RandomAccessContent.java?rev=1339834&r1=1339833&r2=1339834&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/RandomAccessContent.java (original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/RandomAccessContent.java Thu May 17 20:06:36 2012
@@ -89,4 +89,24 @@ public interface RandomAccessContent ext
      *             if <code>pos</code> is less than <code>0</code> or if an I/O error occurs.
      */
     void seek(long pos) throws IOException;
+
+    /**
+     * Sets the length of this content.
+     * 
+     * <p>
+     * If the the {@code newLength} argument is smaller than {@link #length()}, the content is truncated.
+     * </p>
+     * 
+     * <p>
+     * If the the {@code newLength} argument is greater than {@link #length()}, the content grows with undefined data.
+     * </p>
+     * 
+     * @param newLength
+     *            The desired content length
+     * @exception IOException
+     *                If an I/O error occurs
+     * @since 2.1
+     */
+    void setLength(long newLength) throws IOException;
+
 }

Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/AbstractRandomAccessStreamContent.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/AbstractRandomAccessStreamContent.java?rev=1339834&r1=1339833&r2=1339834&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/AbstractRandomAccessStreamContent.java (original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/AbstractRandomAccessStreamContent.java Thu May 17 20:06:36 2012
@@ -108,4 +108,9 @@ public abstract class AbstractRandomAcce
     {
         return getDataInputStream();
     }
+    
+    public void setLength(long newLength) throws IOException
+    {
+        throw new UnsupportedOperationException();        
+    }
 }

Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/local/DefaultLocalFileProvider.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/local/DefaultLocalFileProvider.java?rev=1339834&r1=1339833&r2=1339834&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/local/DefaultLocalFileProvider.java (original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/local/DefaultLocalFileProvider.java Thu May 17 20:06:36 2012
@@ -56,6 +56,7 @@ public class DefaultLocalFileProvider
         Capability.WRITE_CONTENT,
         Capability.APPEND_CONTENT,
         Capability.RANDOM_ACCESS_READ,
+        Capability.RANDOM_ACCESS_SET_LENGTH,
         Capability.RANDOM_ACCESS_WRITE
     }));
 

Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/local/LocalFileRandomAccessContent.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/local/LocalFileRandomAccessContent.java?rev=1339834&r1=1339833&r2=1339834&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/local/LocalFileRandomAccessContent.java (original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/local/LocalFileRandomAccessContent.java Thu May 17 20:06:36 2012
@@ -282,4 +282,9 @@ class LocalFileRandomAccessContent exten
     {
         return rafis;
     }
+
+    public void setLength(long newLength) throws IOException
+    {
+        raf.setLength(newLength);
+    }
 }

Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileData.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileData.java?rev=1339834&r1=1339833&r2=1339834&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileData.java (original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileData.java Thu May 17 20:06:36 2012
@@ -272,11 +272,18 @@ class RamFileData implements Serializabl
      *
      * @param newSize The new buffer size.
      */
-    void resize(int newSize)
+    void resize(long newSize)
     {
+        // A future implementation may allow longs/multiple buffer/and so on
+        if (newSize > Integer.MAX_VALUE)
+        {
+            throw new IllegalArgumentException(String.format("newSize(%d) > Integer.MAX_VALUE(%d)", newSize,
+                    Integer.MAX_VALUE));
+        }
+        int resize = (int) newSize;
         int size = this.size();
-        byte[] newBuf = new byte[newSize];
-        System.arraycopy(this.buffer, 0, newBuf, 0, size);
+        byte[] newBuf = new byte[resize];
+        System.arraycopy(this.buffer, 0, newBuf, 0, Math.min(resize, size));
         this.buffer = newBuf;
         updateLastModified();
     }

Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileObject.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileObject.java?rev=1339834&r1=1339833&r2=1339834&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileObject.java (original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileObject.java Thu May 17 20:06:36 2012
@@ -32,8 +32,8 @@ import org.apache.commons.vfs2.util.File
 import org.apache.commons.vfs2.util.RandomAccessMode;
 
 /**
- * A RAM File contains a single RAM FileData instance, it provides methods to
- * access the data by implementing FileObject interface.
+ * A RAM File contains a single RAM FileData instance, it provides methods to access the data by implementing FileObject
+ * interface.
  */
 public class RamFileObject extends AbstractFileObject
 {
@@ -48,8 +48,10 @@ public class RamFileObject extends Abstr
     private RamFileData data;
 
     /**
-     * @param name The name of the file.
-     * @param fs The FileSystem.
+     * @param name
+     *            The name of the file.
+     * @param fs
+     *            The FileSystem.
      */
     protected RamFileObject(AbstractFileName name, RamFileSystem fs)
     {
@@ -65,7 +67,7 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#doGetType()
      */
     @Override
@@ -76,7 +78,7 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#doListChildren()
      */
     @Override
@@ -87,7 +89,7 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#doGetContentSize()
      */
     @Override
@@ -98,7 +100,7 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#doGetInputStream()
      */
     @Override
@@ -115,7 +117,7 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#doGetOutputStream(boolean)
      */
     @Override
@@ -130,7 +132,7 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#doDelete()
      */
     @Override
@@ -146,7 +148,7 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#doGetLastModifiedTime()
      */
     @Override
@@ -157,7 +159,7 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#doSetLastModifiedTime(long)
      */
     /** @since 2.0 */
@@ -170,7 +172,7 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#doCreateFolder()
      */
     @Override
@@ -182,7 +184,7 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#doRename(org.apache.commons.vfs2.FileObject)
      */
     @Override
@@ -194,20 +196,19 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#doGetRandomAccessContent(
-     *      org.apache.commons.vfs2.util.RandomAccessMode)
+     * org.apache.commons.vfs2.util.RandomAccessMode)
      */
     @Override
-    protected RandomAccessContent doGetRandomAccessContent(RandomAccessMode mode)
-            throws Exception
+    protected RandomAccessContent doGetRandomAccessContent(RandomAccessMode mode) throws Exception
     {
         return new RamFileRandomAccessContent(this, mode);
     }
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#doAttach()
      */
     @Override
@@ -235,7 +236,7 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#injectType(org.apache.commons.vfs2.FileType)
      */
     @Override
@@ -247,7 +248,7 @@ public class RamFileObject extends Abstr
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see org.apache.commons.vfs2.provider.AbstractFileObject#endOutput()
      */
     @Override
@@ -270,16 +271,15 @@ public class RamFileObject extends Abstr
      * @throws IOException
      *             if the new size exceeds the limit
      */
-    synchronized void resize(int newSize) throws IOException
+    synchronized void resize(long newSize) throws IOException
     {
         if (fs.getFileSystemOptions() != null)
         {
-            int maxSize = RamFileSystemConfigBuilder.getInstance().getMaxSize(
-                    fs.getFileSystemOptions());
+            // A future implementation may allow longs...
+            int maxSize = RamFileSystemConfigBuilder.getInstance().getMaxSize(fs.getFileSystemOptions());
             if (fs.size() + newSize - this.size() > maxSize)
             {
-                throw new IOException("FileSystem capacity (" + maxSize
-                        + ") exceeded.");
+                throw new IOException("FileSystem capacity (" + maxSize + ") exceeded.");
             }
         }
         this.data.resize(newSize);

Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileProvider.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileProvider.java?rev=1339834&r1=1339833&r2=1339834&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileProvider.java (original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileProvider.java Thu May 17 20:06:36 2012
@@ -37,13 +37,21 @@ public class RamFileProvider extends Abs
     /** The provider's capabilities. */
     public static final Collection<Capability> capabilities = Collections
             .unmodifiableCollection(Arrays.asList(new Capability[]
-            {Capability.CREATE, Capability.DELETE, Capability.RENAME,
-                    Capability.GET_TYPE, Capability.GET_LAST_MODIFIED,
+            {
+                    Capability.CREATE, 
+                    Capability.DELETE, 
+                    Capability.RENAME,
+                    Capability.GET_TYPE, 
+                    Capability.GET_LAST_MODIFIED,
                     Capability.SET_LAST_MODIFIED_FILE,
                     Capability.SET_LAST_MODIFIED_FOLDER,
-                    Capability.LIST_CHILDREN, Capability.READ_CONTENT,
-                    Capability.URI, Capability.WRITE_CONTENT,
-                    Capability.APPEND_CONTENT, Capability.RANDOM_ACCESS_READ,
+                    Capability.LIST_CHILDREN, 
+                    Capability.READ_CONTENT,
+                    Capability.URI, 
+                    Capability.WRITE_CONTENT,
+                    Capability.APPEND_CONTENT, 
+                    Capability.RANDOM_ACCESS_READ,
+                    Capability.RANDOM_ACCESS_SET_LENGTH,
                     Capability.RANDOM_ACCESS_WRITE
             }));
 

Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileRandomAccessContent.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileRandomAccessContent.java?rev=1339834&r1=1339833&r2=1339834&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileRandomAccessContent.java (original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileRandomAccessContent.java Thu May 17 20:06:36 2012
@@ -614,4 +614,11 @@ public class RamFileRandomAccessContent 
     {
         return rafis;
     }
+
+    @Override
+    public void setLength(long newLength) throws IOException
+    {
+        this.file.resize(newLength);
+        this.buf = this.file.getData().getBuffer();
+    }
 }

Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/util/MonitorRandomAccessContent.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/util/MonitorRandomAccessContent.java?rev=1339834&r1=1339833&r2=1339834&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/util/MonitorRandomAccessContent.java (original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/util/MonitorRandomAccessContent.java Thu May 17 20:06:36 2012
@@ -183,6 +183,11 @@ public class MonitorRandomAccessContent 
         return content.skipBytes(n);
     }
 
+    public void setLength(long newLength) throws IOException
+    {
+        content.setLength(newLength);
+    }
+    
     public boolean readBoolean() throws IOException
     {
         return content.readBoolean();
@@ -247,4 +252,5 @@ public class MonitorRandomAccessContent 
     {
         return content.getInputStream();
     }
+
 }

Added: commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/ProviderRandomSetLengthTests.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/ProviderRandomSetLengthTests.java?rev=1339834&view=auto
==============================================================================
--- commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/ProviderRandomSetLengthTests.java (added)
+++ commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/ProviderRandomSetLengthTests.java Thu May 17 20:06:36 2012
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.vfs2.test;
+
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+import org.apache.commons.vfs2.Capability;
+import org.apache.commons.vfs2.FileObject;
+import org.apache.commons.vfs2.RandomAccessContent;
+import org.apache.commons.vfs2.Selectors;
+import org.apache.commons.vfs2.util.RandomAccessMode;
+
+/**
+ * Random set length test cases for file providers.
+ * 
+ * @version $Id$
+ */
+public class ProviderRandomSetLengthTests extends AbstractProviderTestCase
+{
+    private static final String TEST_DATA = "This is a test file.";
+
+    /**
+     * Sets up a scratch folder for the test to use.
+     */
+    protected FileObject createScratchFolder() throws Exception
+    {
+        final FileObject scratchFolder = this.getWriteFolder();
+
+        // Make sure the test folder is empty
+        scratchFolder.delete(Selectors.EXCLUDE_SELF);
+        scratchFolder.createFolder();
+
+        return scratchFolder;
+    }
+
+    /**
+     * Returns the capabilities required by the tests of this test case.
+     */
+    @Override
+    protected Capability[] getRequiredCaps()
+    {
+        return new Capability[]
+        {
+                Capability.GET_TYPE,
+                Capability.RANDOM_ACCESS_READ,
+                Capability.RANDOM_ACCESS_WRITE,
+                Capability.RANDOM_ACCESS_SET_LENGTH };
+    }
+
+    /**
+     * Writes a file
+     */
+    public void testRandomSetLength() throws Exception
+    {
+        FileObject file = null;
+        try
+        {
+            file = this.createScratchFolder().resolveFile("random_write.txt");
+            file.createFile();
+            final RandomAccessContent ra = file.getContent().getRandomAccessContent(RandomAccessMode.READWRITE);
+
+            // Write long string
+            ra.writeBytes(TEST_DATA);
+            Assert.assertEquals(TEST_DATA.length(), ra.length());
+
+            // Shrink to length 1
+            ra.setLength(1);
+            Assert.assertEquals(1, ra.length());
+            // now read 1
+            ra.seek(0);
+            Assert.assertEquals(ra.readByte(), TEST_DATA.charAt(0));
+
+            try
+            {
+                ra.readByte();
+                Assert.fail("Expected " + Exception.class.getName());
+            } catch (IOException e)
+            {
+                // Expected
+            }
+
+            // Grow to length 2
+            ra.setLength(2);
+            Assert.assertEquals(2, ra.length());
+            // We have an undefined extra byte
+            ra.seek(1);
+            ra.readByte();
+
+        } finally
+        {
+            if (file != null)
+            {
+                file.close();
+            }
+        }
+    }
+}

Propchange: commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/ProviderRandomSetLengthTests.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/ProviderRandomSetLengthTests.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/ProviderTestSuite.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/ProviderTestSuite.java?rev=1339834&r1=1339833&r2=1339834&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/ProviderTestSuite.java (original)
+++ commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/ProviderTestSuite.java Thu May 17 20:06:36 2012
@@ -63,10 +63,11 @@ public class ProviderTestSuite
         addTests(NamingTests.class);
         addTests(ContentTests.class);
         addTests(ProviderReadTests.class);
-        addTests(ProviderRandomReadTests.class);
         addTests(ProviderWriteTests.class);
         addTests(ProviderWriteAppendTests.class);
+        addTests(ProviderRandomReadTests.class);
         addTests(ProviderRandomReadWriteTests.class);
+        addTests(ProviderRandomSetLengthTests.class);
         addTests(ProviderRenameTests.class);
         addTests(ProviderDeleteTests.class);
         addTests(LastModifiedTests.class);