[jboss-osgi-commits] JBoss-OSGI SVN: r99461 - in projects: jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/classloading and 1 other directories.

jboss-osgi-commits at lists.jboss.org jboss-osgi-commits at lists.jboss.org
Fri Jan 15 07:18:03 EST 2010


Author: thomas.diesler at jboss.com
Date: 2010-01-15 07:18:02 -0500 (Fri, 15 Jan 2010)
New Revision: 99461

Modified:
   projects/jboss-cl/trunk/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
   projects/jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/classloading/OSGiBundleClassLoader.java
   projects/jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/classloading/OSGiClassLoaderPolicy.java
   projects/jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/deployers/OSGiFragmentAttachmentDeployer.java
Log:
Delegate fragment resorce loading to VFSClassLoaderPolicy

Modified: projects/jboss-cl/trunk/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java	2010-01-15 11:46:30 UTC (rev 99460)
+++ projects/jboss-cl/trunk/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java	2010-01-15 12:18:02 UTC (rev 99461)
@@ -642,6 +642,27 @@
          {
          }
       }
+      
+      if (fragments != null)
+      {
+         for (VirtualFile root : fragments)
+         {
+            try
+            {
+               VirtualFile file = root.getChild(path);
+               if (file != null)
+               {
+                  result = new VirtualFileInfo(file, root);
+                  vfsCache.put(path, result);
+                  return result;
+               }
+            }
+            catch (Exception ignored)
+            {
+            }
+         }
+      }
+      
       return null;
    }
    

Modified: projects/jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/classloading/OSGiBundleClassLoader.java
===================================================================
--- projects/jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/classloading/OSGiBundleClassLoader.java	2010-01-15 11:46:30 UTC (rev 99460)
+++ projects/jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/classloading/OSGiBundleClassLoader.java	2010-01-15 12:18:02 UTC (rev 99461)
@@ -23,10 +23,7 @@
 
 // $Id: OSGiClassLoaderFactory.java 95177 2009-10-20 15:14:31Z thomas.diesler at jboss.com $
 
-import java.util.List;
-
 import org.jboss.classloader.spi.ClassLoaderPolicy;
-import org.jboss.classloader.spi.DelegateLoader;
 import org.jboss.classloader.spi.base.BaseClassLoader;
 
 /**
@@ -62,31 +59,4 @@
 
       return libraryPath;
    }
-
-   @Override
-   public Class<?> loadClass(String className) throws ClassNotFoundException
-   {
-      try
-      {
-         Class<?> clazz = super.loadClass(className);
-         return clazz;
-      }
-      catch (ClassNotFoundException ex)
-      {
-         // Try to load the class in the attached fragments
-         List<DelegateLoader> fragmentLoaders = osgiPolicy.getFragmentLoaders();
-         if (fragmentLoaders != null)
-         {
-            for (DelegateLoader fragLoader : fragmentLoaders)
-            {
-               Class<?> clazz = fragLoader.loadClass(className);
-               if (clazz != null)
-                  return clazz;
-            }
-         }
-         
-         // Throw the ClassNotFoundException 
-         throw ex;
-      }
-   }
 }

Modified: projects/jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/classloading/OSGiClassLoaderPolicy.java
===================================================================
--- projects/jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/classloading/OSGiClassLoaderPolicy.java	2010-01-15 11:46:30 UTC (rev 99460)
+++ projects/jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/classloading/OSGiClassLoaderPolicy.java	2010-01-15 12:18:02 UTC (rev 99461)
@@ -24,13 +24,9 @@
 // $Id$
 
 import java.io.File;
-import java.net.URL;
-import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
-import org.jboss.classloader.spi.DelegateLoader;
 import org.jboss.classloading.spi.dependency.Module;
 import org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy;
 import org.jboss.deployers.vfs.plugins.classloader.VFSDeploymentClassLoaderPolicyModule;
@@ -50,8 +46,6 @@
 {
    // Maps the lib name to native code archive
    private Map<String, File> libraryMap;
-   // The optional list of attached fragment loaders
-   private List<DelegateLoader> fragmentLoaders;
    
    public OSGiClassLoaderPolicy(AbstractBundleState bundleState, VirtualFile[] roots)
    {
@@ -102,36 +96,4 @@
          
       return (libfile != null ? libfile.getAbsolutePath() : null);
    }
-
-   public List<DelegateLoader> getFragmentLoaders()
-   {
-      return fragmentLoaders;
-   }
-
-   public void addFragmentLoader(DelegateLoader delegateLoader)
-   {
-      if (fragmentLoaders == null)
-         fragmentLoaders = new ArrayList<DelegateLoader>();
-
-      fragmentLoaders.add(delegateLoader);
-   }
-
-   @Override
-   public URL getResource(String path)
-   {
-      URL resourceURL = super.getResource(path);
-      
-      // Try to find the resource in the attached fragments
-      if (resourceURL == null && fragmentLoaders != null)
-      {
-         for (DelegateLoader fragLoader : fragmentLoaders)
-         {
-            resourceURL = fragLoader.getResource(path);
-            if (resourceURL != null)
-               break;
-         }
-      }
-      
-      return resourceURL;
-   }
 }

Modified: projects/jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/deployers/OSGiFragmentAttachmentDeployer.java
===================================================================
--- projects/jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/deployers/OSGiFragmentAttachmentDeployer.java	2010-01-15 11:46:30 UTC (rev 99460)
+++ projects/jboss-osgi/projects/runtime/framework/trunk/src/main/java/org/jboss/osgi/framework/deployers/OSGiFragmentAttachmentDeployer.java	2010-01-15 12:18:02 UTC (rev 99461)
@@ -24,7 +24,6 @@
 // $Id$
 
 import org.jboss.classloader.spi.ClassLoaderPolicy;
-import org.jboss.classloader.spi.DelegateLoader;
 import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.DeploymentStages;
@@ -91,10 +90,7 @@
          OSGiBundleState hostState = fragState.getFragmentHost();
          DeploymentUnit hostUnit = hostState.getDeploymentUnit();
          OSGiClassLoaderPolicy hostPolicy = (OSGiClassLoaderPolicy)hostUnit.getAttachment(ClassLoaderPolicy.class);
-         
-         OSGiClassLoaderPolicy fragPolicy = (OSGiClassLoaderPolicy)unit.getAttachment(ClassLoaderPolicy.class);
-         DelegateLoader fragLoader = new DelegateLoader(fragPolicy);
-         hostPolicy.addFragmentLoader(fragLoader);
+         hostPolicy.attachFragment(fragState.getRoot());
       }
    }
 }



More information about the jboss-osgi-commits mailing list