Author: natasha.vakulenko
Date: 2010-06-16 06:10:30 -0400 (Wed, 16 Jun 2010)
New Revision: 2629
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SpoolFile.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SwapFile.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/utils/io/TestSpoolFile.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/utils/io/TestSwapFile.java
Log:
EXOJCR-791: Added new tests testDeleteExistingSwapFile (in class TestSwapFile),
testDeleteExistingFile and testDeleteAquireFile(in class TestSpoolFile). In the classes
SpoolFile and SwapFile in methods delete() were changed to inform the correct about
delete non-existing files,
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SpoolFile.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SpoolFile.java 2010-06-16
09:50:33 UTC (rev 2628)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SpoolFile.java 2010-06-16
10:10:30 UTC (rev 2629)
@@ -109,14 +109,17 @@
users.clear();
users = null;
+ final SpoolFile sf = this;
+
PrivilegedAction<Boolean> action = new PrivilegedAction<Boolean>()
{
public Boolean run()
{
- return SpoolFile.super.delete();
+ return sf.exists() ? SpoolFile.super.delete() : true;
}
};
return AccessController.doPrivileged(action);
+
}
return false;
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SwapFile.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SwapFile.java 2010-06-16
09:50:33 UTC (rev 2628)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SwapFile.java 2010-06-16
10:10:30 UTC (rev 2629)
@@ -157,12 +157,13 @@
{
synchronized (inShare)
{
+ final SpoolFile sf = this;
PrivilegedAction<Boolean> action = new PrivilegedAction<Boolean>()
{
public Boolean run()
{
- return SwapFile.super.delete();
+ return sf.exists() ? SwapFile.super.delete() : true;
}
};
boolean res = AccessController.doPrivileged(action);
@@ -170,13 +171,14 @@
if (res)
{
// remove from shared files list
- inShare.remove(getAbsolutePath());
+ inShare.remove(PrivilegedFileHelper.getAbsolutePath(this));
// make sure that the file doesn't make any other thread await in
'get' method
// impossible case as 'delete' and 'get' which may waiting
for, synchronized by inShare map.
// spoolDone();
return true;
+
}
return false;
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/utils/io/TestSpoolFile.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/utils/io/TestSpoolFile.java 2010-06-16
09:50:33 UTC (rev 2628)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/utils/io/TestSpoolFile.java 2010-06-16
10:10:30 UTC (rev 2629)
@@ -116,8 +116,22 @@
}
}
- public void testDeleteFile() throws FileNotFoundException
+ public void testDeleteAquireFile() throws FileNotFoundException, IOException
{
+ // This method creates a file on disk space.
+ SpoolFile sf = SpoolFile.createTempFile("prefix", "suffics",
new File(DIR_NAME));
+
+ // Add new holder of file and try to delete a file with holder.
+ sf.acquire("holder");
+ assertFalse("File in use.", sf.delete());
+
+ // Release file and try to delete a file without holder.
+ sf.release("holder");
+ assertTrue("File not in use. It should be deleted", sf.delete());
+ }
+
+ public void testDeleteAbstractFile() throws FileNotFoundException
+ {
// This method not creates a file on disk space.
SpoolFile sf = new SpoolFile(DIR_NAME + FILE_NAME);
@@ -127,6 +141,20 @@
// Now file is free. It can be deleted.
// File on disk does not exist. It will not be removed from disk space.
- assertFalse("Deleted file was not created on the disk.", sf.delete());
+ assertTrue("Deleted file was not created on the disk.", sf.delete());
}
+
+ public void testDeleteExistingFile() throws FileNotFoundException, IOException
+ {
+ // This method creates a file on disk space.
+ SpoolFile sf = SpoolFile.createTempFile("prefix", "suffics",
new File(DIR_NAME));
+
+ // Add and release new holder of file.
+ sf.acquire("holder");
+ sf.release("holder");
+
+ // Now file is free. It can be deleted.
+ // File is present on the disk. It will be removed from disk space.
+ assertTrue("File should be removed.", sf.delete());
+ }
}
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/utils/io/TestSwapFile.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/utils/io/TestSwapFile.java 2010-06-16
09:50:33 UTC (rev 2628)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/utils/io/TestSwapFile.java 2010-06-16
10:10:30 UTC (rev 2629)
@@ -17,7 +17,10 @@
package org.exoplatform.services.jcr.impl.utils.io;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import org.exoplatform.services.jcr.impl.util.io.SwapFile;
@@ -74,12 +77,27 @@
sf.delete();
}
- public void testDeleteSpoolFile() throws IOException
+ public void testDeleteAbstractSwapFile() throws IOException
{
SwapFile sf = SwapFile.get(new File(DIR_NAME), FILE_NAME);
sf.spoolDone();
// File on disk does not exist. It will not be removed from disk space.
- assertFalse("Deleted file was not created on the disk.", sf.delete());
+ assertTrue("File should be deleted.", sf.delete());
}
+
+ public void testDeleteExistingSwapFile() throws IOException
+ {
+ SwapFile sf = SwapFile.get(new File(DIR_NAME), FILE_NAME);
+
+ // write to file
+ OutputStream out = new FileOutputStream(sf);
+ byte[] outWrite = new byte[]{1, 2, 3};
+ out.write(outWrite);
+ out.close();
+ sf.spoolDone();
+
+ // File is present on the disk. It will be removed from disk space.
+ assertTrue("File should be deleted.", sf.delete());
+ }
}
Show replies by date