[jboss-cvs] JBossAS SVN: r91124 - projects/vfs/branches/dml-zip-rework/src/main/java/org/jboss/virtual.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jul 10 22:14:45 EDT 2009
Author: david.lloyd at jboss.com
Date: 2009-07-10 22:14:45 -0400 (Fri, 10 Jul 2009)
New Revision: 91124
Modified:
projects/vfs/branches/dml-zip-rework/src/main/java/org/jboss/virtual/TempFileProvider.java
Log:
Cleaner close mgmt
Modified: projects/vfs/branches/dml-zip-rework/src/main/java/org/jboss/virtual/TempFileProvider.java
===================================================================
--- projects/vfs/branches/dml-zip-rework/src/main/java/org/jboss/virtual/TempFileProvider.java 2009-07-11 01:58:38 UTC (rev 91123)
+++ projects/vfs/branches/dml-zip-rework/src/main/java/org/jboss/virtual/TempFileProvider.java 2009-07-11 02:14:45 UTC (rev 91124)
@@ -29,6 +29,7 @@
import java.io.FileOutputStream;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.Random;
import java.security.SecureRandom;
@@ -39,6 +40,7 @@
{
private static final String TMP_DIR_PROPERTY = "jboss.server.temp.dir";
private static final File TMP_ROOT;
+ private final AtomicBoolean open = new AtomicBoolean(true);
static {
final String configTmpDir = System.getProperty(TMP_DIR_PROPERTY);
@@ -113,6 +115,9 @@
* @throws IOException if an error occurs
*/
public File createTempFile(String originalName, int hashCode) throws IOException {
+ if (! open.get()) {
+ throw new IOException("Temp file provider closed");
+ }
File root = providerRoot;
for (int i = 0; i < hashDepth; i ++) {
final int dc = hashCode & 0x7f;
@@ -134,6 +139,9 @@
* @throws IOException if an error occurs
*/
public File createTempFile(String originalName, int hashCode, InputStream sourceData) throws IOException {
+ if (! open.get()) {
+ throw new IOException("Temp file provider closed");
+ }
final File tempFile = createTempFile(originalName, hashCode);
boolean ok = false;
try {
@@ -191,18 +199,25 @@
*/
public void close() throws IOException
{
- final Runnable task = new Runnable()
- {
- public void run()
+ if (open.getAndSet(false)) {
+ final Runnable task = new Runnable()
{
- if (! recursiveDelete(providerRoot)) {
- executor.schedule(this, 30L, TimeUnit.SECONDS);
+ public void run()
+ {
+ if (! recursiveDelete(providerRoot)) {
+ executor.schedule(this, 30L, TimeUnit.SECONDS);
+ }
}
- }
- };
- task.run();
+ };
+ task.run();
+ }
}
+ protected void finalize()
+ {
+ VFSUtils.safeClose(this);
+ }
+
private static boolean recursiveDelete(File root) {
boolean ok = true;
if (root.isDirectory()) {
More information about the jboss-cvs-commits
mailing list