[jboss-cvs] JBossAS SVN: r66296 - in projects/microcontainer/trunk: deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Oct 19 12:44:26 EDT 2007


Author: kabir.khan at jboss.com
Date: 2007-10-19 12:44:26 -0400 (Fri, 19 Oct 2007)
New Revision: 66296

Modified:
   projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/Module.java
   projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSTopLevelClassLoaderSystemDeployer.java
Log:
Add memory VFS root to top-level classloader that can be used for dynamically generated files

Modified: projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/Module.java
===================================================================
--- projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/Module.java	2007-10-19 16:43:12 UTC (rev 66295)
+++ projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/Module.java	2007-10-19 16:44:26 UTC (rev 66296)
@@ -21,6 +21,8 @@
  */
 package org.jboss.deployers.plugins.classloading;
 
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -36,6 +38,7 @@
 import org.jboss.deployers.structure.spi.classloading.ExportAll;
 import org.jboss.deployers.structure.spi.classloading.PackageCapability;
 import org.jboss.deployers.structure.spi.classloading.Requirement;
+import org.jboss.util.id.GUID;
 
 /**
  * Module.
@@ -57,6 +60,9 @@
    /** The requirements */
    private List<RequirementDependencyItem> requirementDependencies;
    
+   /** The URL for the dynamic classes */
+   private URL dynamicClassRoot;
+   
    /**
     * Create a new Module.
     * 
@@ -274,4 +280,20 @@
    {
       domain.removeModule(this);
    }
+   
+   public URL getDynamicClassRoot()
+   {
+      if (dynamicClassRoot == null)
+      {
+         try
+         {
+            dynamicClassRoot = new URL("vfsmemory://" + new GUID());
+         }
+         catch (MalformedURLException e)
+         {
+            throw new RuntimeException(e);
+         }
+      }
+      return dynamicClassRoot;
+   }
 }

Modified: projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSTopLevelClassLoaderSystemDeployer.java
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSTopLevelClassLoaderSystemDeployer.java	2007-10-19 16:43:12 UTC (rev 66295)
+++ projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSTopLevelClassLoaderSystemDeployer.java	2007-10-19 16:44:26 UTC (rev 66296)
@@ -21,6 +21,7 @@
  */
 package org.jboss.deployers.vfs.plugins.classloader;
 
+import java.net.URL;
 import java.util.Set;
 
 import org.jboss.deployers.plugins.classloading.AbstractTopLevelClassLoaderSystemDeployer;
@@ -28,6 +29,8 @@
 import org.jboss.deployers.structure.spi.DeploymentContext;
 import org.jboss.deployers.vfs.spi.structure.helpers.ClassPathVisitor;
 import org.jboss.virtual.VirtualFile;
+import org.jboss.virtual.plugins.context.memory.MemoryContextFactory;
+import org.jboss.virtual.spi.VFSContext;
 
 /**
  * VFSTopLevelClassLoaderSystemDeployer.
@@ -44,10 +47,17 @@
       context.visit(visitor);
       Set<VirtualFile> classPath = visitor.getClassPath();
       
-      VirtualFile[] roots = new VirtualFile[classPath.size()];
+      VirtualFile[] roots = new VirtualFile[classPath.size() + 1];
       int i = 0;
       for (VirtualFile path : classPath)
          roots[i++] = path;
+      
+      MemoryContextFactory factory = MemoryContextFactory.getInstance();
+      VFSContext ctx = factory.createRoot(module.getDynamicClassRoot());
+      
+      URL url = new URL(module.getDynamicClassRoot() + "/classes");
+      roots[i++] = factory.createDirectory(url).getVirtualFile();
+      
       VFSClassLoaderPolicy policy = new VFSClassLoaderPolicy(roots);
       policy.setExportAll(module.getExportAll());
       policy.setImportAll(module.isImportAll());




More information about the jboss-cvs-commits mailing list