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);