[jboss-cvs] JBossAS SVN: r75061 - in projects/vfs/trunk/src/test/java/org/jboss/test/virtual: test and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jun 25 10:01:49 EDT 2008


Author: mstruk
Date: 2008-06-25 10:01:49 -0400 (Wed, 25 Jun 2008)
New Revision: 75061

Modified:
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/support/OptionsAwareURI.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/AbstractVFSTest.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/HDScannerTestCase.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/OSAwareVFSTest.java
Log:
Support for proper setting of NoReaper option on VFS context URLs

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/support/OptionsAwareURI.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/support/OptionsAwareURI.java	2008-06-25 14:00:25 UTC (rev 75060)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/support/OptionsAwareURI.java	2008-06-25 14:01:49 UTC (rev 75061)
@@ -25,6 +25,8 @@
 import java.net.URL;
 import java.net.URISyntaxException;
 import java.io.IOException;
+import java.util.Iterator;
+import java.util.LinkedList;
 
 import org.jboss.virtual.VFSUtils;
 
@@ -32,69 +34,108 @@
  * Flag holder.
  * 
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ * @authos <a href="mailto:strukelj at parsek.net">Marko Strukelj</a>
  */
 public class OptionsAwareURI
 {
-   private static final String Copy = VFSUtils.USE_COPY_QUERY + "=true";
+   public static final String Copy = VFSUtils.USE_COPY_QUERY + "=true";
+   public static final String NoReaper = VFSUtils.NO_REAPER_QUERY + "=true";
 
-   private static ThreadLocal<Boolean> flag = new InheritableThreadLocal<Boolean>()
-   {
-      protected Boolean initialValue()
-      {
-         return Boolean.FALSE;
-      }
+   private static ThreadLocal<Boolean> flagCopy = new OAInheritableThreadLocal();
+   private static ThreadLocal<Boolean> flagNoReaper = new OAInheritableThreadLocal();
 
-      public String toString()
-      {
-         Boolean value = get();
-         return String.valueOf(value);
-      }
-   };
-
-   public static void set()
+   public static void set(String name)
    {
-      flag.set(Boolean.TRUE);
+      if (Copy.equals(name))
+         flagCopy.set(Boolean.TRUE);
+      else if (NoReaper.equals(name))
+         flagNoReaper.set(Boolean.TRUE);
+      else
+         throw new IllegalArgumentException(name);
    }
 
-   public static boolean get()
+   public static boolean get(String name)
    {
-      return flag.get();
+      if (Copy.equals(name))
+         return flagCopy.get();
+      else if (NoReaper.equals(name))
+         return flagNoReaper.get();
+      else
+         throw new IllegalArgumentException(name);
    }
 
-   public static void clear()
+   public static void clear(String name)
    {
-      flag.set(Boolean.FALSE);
+      if (Copy.equals(name))
+         flagCopy.set(Boolean.FALSE);
+      else if (NoReaper.equals(name))
+         flagNoReaper.set(Boolean.FALSE);
+      else
+         throw new IllegalArgumentException(name);
    }
 
    public static URL toURL(URL url) throws IOException
    {
-      if (get())
+      LinkedList params = new LinkedList();
+
+      if (get(Copy))
+         params.add(Copy);
+      if (get(NoReaper))
+         params.add(NoReaper);
+
+      if (params.size() == 0)
+         return url;
+
+      StringBuilder sb = new StringBuilder(url.toExternalForm());
+
+      // if options are set on URL we overwrite them
+      int qpos = sb.indexOf("?");
+      if (qpos > 0)
+         sb.setLength(qpos);
+
+      Iterator it = params.iterator();
+      for (int i=0; it.hasNext(); i++)
       {
-         return new URL(url.toExternalForm() + "?" + Copy);
+         if (i == 0)
+            sb.append("?");
+         else
+            sb.append("&");
+
+         sb.append(it.next());
       }
-      else
-         return url;
+
+      return new URL(sb.toString());
    }
 
    public static URI toURI(URI uri) throws IOException
    {
-      if (get())
+      try
       {
-         try
-         {
-            return new URI(uri.getScheme(), uri.getUserInfo(), uri.getPath(), Copy, uri.getFragment());
-         }
-         catch (URISyntaxException e)
-         {
-            throw new IOException(e.getReason());
-         }
+         return toURL(uri.toURL()).toURI();
       }
-      else
-         return uri;
+      catch (URISyntaxException e)
+      {
+         throw new IOException(e.getReason());
+      }
    }
 
    public String toString()
    {
-      return "flag=" + get();
+      return "flagCopy=" + get(Copy) + ", flagNoReaper=" + get(NoReaper);
    }
+
+
+   static class OAInheritableThreadLocal extends InheritableThreadLocal<Boolean>
+   {
+      protected Boolean initialValue()
+      {
+         return Boolean.FALSE;
+      }
+
+      public String toString()
+      {
+         Boolean value = get();
+         return String.valueOf(value);
+      }
+   }
 }

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/AbstractVFSTest.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/AbstractVFSTest.java	2008-06-25 14:00:25 UTC (rev 75060)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/AbstractVFSTest.java	2008-06-25 14:01:49 UTC (rev 75061)
@@ -45,6 +45,7 @@
    private static final VFSContextFactory jarFactory = new JarOAContextFactory();
 
    private boolean forceCopy;
+   private boolean forceNoReaper;
 
    public AbstractVFSTest(String name)
    {
@@ -57,6 +58,13 @@
       this.forceCopy = forceCopy;
    }
 
+   public AbstractVFSTest(String name, boolean forceCopy, boolean forceNoReaper)
+   {
+      super(name);
+      this.forceCopy = forceCopy;
+      this.forceNoReaper = forceNoReaper;
+   }
+
    protected void setUp() throws Exception
    {
       super.setUp();
@@ -66,9 +74,10 @@
 
       getLog().info("Force copy: " + forceCopy);
       if (forceCopy)
-      {
-         OptionsAwareURI.set();
-      }
+         OptionsAwareURI.set(OptionsAwareURI.Copy);
+
+      if (forceNoReaper)
+         OptionsAwareURI.set(OptionsAwareURI.NoReaper);
    }
 
    protected void tearDown() throws Exception
@@ -77,10 +86,11 @@
       VFSContextFactoryLocator.unregisterFactory(fileFactory);
 
       if (forceCopy)
-      {
-         OptionsAwareURI.clear();
-      }
+         OptionsAwareURI.clear(OptionsAwareURI.Copy);
 
+      if (forceNoReaper)
+         OptionsAwareURI.clear(OptionsAwareURI.NoReaper);
+
       super.tearDown();
    }
 

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/HDScannerTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/HDScannerTestCase.java	2008-06-25 14:00:25 UTC (rev 75060)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/HDScannerTestCase.java	2008-06-25 14:01:49 UTC (rev 75061)
@@ -44,19 +44,17 @@
 
    public HDScannerTestCase(String name, boolean forceCopy)
    {
-      super(name, forceCopy);
+      super(name, forceCopy, true);
    }
 
    public HDScannerTestCase(String name)
    {
-      super(name);
+      super(name, true, true);
    }
 
    public void testDeleteWhileScanning()
       throws Exception
    {
-      System.setProperty("jboss.vfs.forceNoReaper", "true");
-      
       // Create a root in the system tmp dir
       File root = File.createTempFile("testDeleteWhileScanning", ".root");
       root.delete();

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/OSAwareVFSTest.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/OSAwareVFSTest.java	2008-06-25 14:00:25 UTC (rev 75060)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/OSAwareVFSTest.java	2008-06-25 14:01:49 UTC (rev 75061)
@@ -47,6 +47,11 @@
       super(name, forceCopy);
    }
 
+   protected OSAwareVFSTest(String name, boolean forceCopy, boolean forceNoReaper)
+   {
+      super(name, forceCopy, forceNoReaper);
+   }
+
    /**
     * Are we running Windows.
     *




More information about the jboss-cvs-commits mailing list