[jboss-cvs] JBossAS SVN: r98006 - in projects/jboss-cl/branches/vfs3-int/classloading-vfs/src: test/java/org/jboss/test/classloading/vfs/metadata/test and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Dec 18 21:05:31 EST 2009


Author: johnbailey
Date: 2009-12-18 21:05:30 -0500 (Fri, 18 Dec 2009)
New Revision: 98006

Modified:
   projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
   projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/GeneratedClassesUnitTestCase.java
Log:
Further VFS3 integration

Modified: projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java	2009-12-19 01:35:52 UTC (rev 98005)
+++ projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java	2009-12-19 02:05:30 UTC (rev 98006)
@@ -49,6 +49,7 @@
 import org.jboss.util.collection.SoftValueHashMap;
 import org.jboss.vfs.VFSUtils;
 import org.jboss.vfs.VirtualFile;
+import org.jboss.vfs.util.Automounter;
 
 /**
  * VFSClassLoaderPolicy.
@@ -521,6 +522,7 @@
       {
          try
          {
+            ensureMounted(root);
             VirtualFile child = root.getChild(name);
             if (child != null)
                urls.add(child.toURL());
@@ -576,6 +578,7 @@
       {
          try
          {
+            ensureMounted(root);
             VirtualFile file = root.getChild(path);
             if (file.exists())
             {
@@ -649,7 +652,7 @@
       try
       {
          VirtualFile root = findRoot(path);
-         URL codeSourceURL = isUseRealURL() ? VFSUtils.getPhysicalURL(root) : root.toURL();
+         URL codeSourceURL = root.toURL();
 
          if (log.isTraceEnabled())
             log.trace("getProtectionDomain:className="+ className + " path="+ path + " codeSourceURL=" + codeSourceURL);
@@ -688,6 +691,17 @@
       }
       return false;
    }
+   
+   /**
+    * Temporary hack to ensure the requested root is mounted.  This should be moved to any clients creating this class directly. 
+    *  
+    * @param root
+    * @throws IOException
+    */
+   private void ensureMounted(VirtualFile root) throws IOException
+   {
+      Automounter.mount(root);
+   }
 
    /**
     * VirtualFileInfo.    */

Modified: projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/GeneratedClassesUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/GeneratedClassesUnitTestCase.java	2009-12-19 01:35:52 UTC (rev 98005)
+++ projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/GeneratedClassesUnitTestCase.java	2009-12-19 02:05:30 UTC (rev 98006)
@@ -22,9 +22,10 @@
 package org.jboss.test.classloading.vfs.metadata.test;
 
 import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URL;
+import java.util.concurrent.Executors;
 
 import junit.framework.Test;
 
@@ -38,9 +39,10 @@
 import org.jboss.test.classloading.vfs.metadata.support.a.A;
 import org.jboss.test.classloading.vfs.metadata.support.b.B;
 import org.jboss.util.id.GUID;
-import org.jboss.vfs.MemoryFileFactory;
+import org.jboss.vfs.TempFileProvider;
 import org.jboss.vfs.VFS;
-import org.jboss.vfs.plugins.context.memory.MemoryContextFactory;
+import org.jboss.vfs.VFSUtils;
+import org.jboss.vfs.VirtualFile;
 
 /**
  * DomainUnitTestCase.
@@ -53,11 +55,10 @@
    final static GeneratedClassInfo NEW_PACKAGE  = new GeneratedClassInfo("newpackage.GeneratedClass");
    final static GeneratedClassInfo OTHER_PACKAGE  = new GeneratedClassInfo("otherpackage.GeneratedClass");
    final static GeneratedClassInfo EXISTING_PACKAGE  = new GeneratedClassInfo("org.jboss.test.classloading.vfs.metadata.support.a.GeneratedClass");
-   static
-   {
-      VFS.init();
-   }
    
+   private Closeable tempDirectoryHandle;
+   private VirtualFile tempDirectory;
+
    public static Test suite()
    {
       return suite(GeneratedClassesUnitTestCase.class);
@@ -67,6 +68,11 @@
    {
       super(name);
    }
+   
+   protected void tearDown() throws Exception 
+   {
+      VFSUtils.safeClose(tempDirectoryHandle);
+   }
 
    public void testImportAllGenerateClassInExistingPackage() throws Exception
    {
@@ -86,11 +92,11 @@
    private void runImportAllGenerateClass(GeneratedClassInfo info, boolean expectSuccess) throws Exception
    {
       ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
-      String dynamicClassRoot = getDynamicClassRoot();
+      VirtualFile dynamicClassRoot = getDynamicClassRoot();
       VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
       a.setImportAll(true);
       a.getRoots().add(getRoot(A.class));
-      a.getRoots().add(dynamicClassRoot);
+      a.getRoots().add(dynamicClassRoot.toURL().toString());
       a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
       KernelDeployment depA = install(a);
 
@@ -138,12 +144,12 @@
       }
    }
 
-   private Class<?> generateClass(ClassLoader loader, String dynamicClassRoot, GeneratedClassInfo info) throws Exception
+   private Class<?> generateClass(ClassLoader loader, VirtualFile dynamicClassRoot, GeneratedClassInfo info) throws Exception
    {
-      URL outputURL = new URL(dynamicClassRoot + "/" + info.getResourceName());
-      MemoryContextFactory factory = MemoryContextFactory.getInstance();
-      factory.putFile(outputURL, info.getClassBytes());
+      VirtualFile output = dynamicClassRoot.getChild(info.getResourceName());
       
+      VFSUtils.writeFile(output, info.getClassBytes());
+      
       if (loader instanceof RealClassLoader)
       {
          ((RealClassLoader)loader).clearBlackList(info.getResourceName());
@@ -151,13 +157,16 @@
       return loader.loadClass(info.getClassname());
    }
    
-   private String getDynamicClassRoot() throws Exception
+   private VirtualFile getDynamicClassRoot() throws Exception
    {
-      URL dynamicClassRoot = new URL("vfsmemory", GUID.asString(), "");
-      MemoryFileFactory.createRoot(dynamicClassRoot).getRoot();
-      return dynamicClassRoot.toString();
+      if(tempDirectory == null)
+      {
+         tempDirectory = VFS.getChild("/" + GUID.asString());
+         tempDirectoryHandle = VFS.mountTemp(tempDirectory, TempFileProvider.create("test", Executors.newScheduledThreadPool(2)));
+      }
+      return tempDirectory;
    }
-
+   
    private static class GeneratedClassInfo
    {
       String classname;




More information about the jboss-cvs-commits mailing list