[jboss-cvs] JBossAS SVN: r78534 - in projects/jboss-cl/trunk: classloader/src/main/java/org/jboss/classloader/spi/base and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Sep 15 08:41:29 EDT 2008


Author: adrian at jboss.org
Date: 2008-09-15 08:41:29 -0400 (Mon, 15 Sep 2008)
New Revision: 78534

Modified:
   projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderPolicy.java
   projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java
   projects/jboss-cl/trunk/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
   projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/policy/test/PackageInfoUnitTestCase.java
   projects/jboss-cl/trunk/classloading-vfs/src/test/resources/classloader/testear1x.ear
Log:
[JBCL-43] - Proper fix

Modified: projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderPolicy.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderPolicy.java	2008-09-15 12:16:34 UTC (rev 78533)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderPolicy.java	2008-09-15 12:41:29 UTC (rev 78534)
@@ -206,6 +206,20 @@
    {
       return null;
    }
+   
+   /**
+    * Get the package information for a class<p>
+    * 
+    * The default is to invoke getPackageInformation for the class's package
+    * 
+    * @param className name the class name
+    * @param packageName the package information
+    * @return the information or null if there is none
+    */
+   public PackageInformation getClassPackageInformation(String className, String packageName)
+   {
+      return getPackageInformation(packageName);
+   }
 
    /**
     * Check whether this a request from the jdk if it is return the relevant classloader<p>

Modified: projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java	2008-09-15 12:16:34 UTC (rev 78533)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java	2008-09-15 12:41:29 UTC (rev 78534)
@@ -651,7 +651,7 @@
          return;
       
       // Ask the policy for the information
-      PackageInformation pi = policy.getPackageInformation(packageName);
+      PackageInformation pi = policy.getClassPackageInformation(className, packageName);
       
       // Already defined?
       Package pkge = getPackage(packageName);

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	2008-09-15 12:16:34 UTC (rev 78533)
+++ projects/jboss-cl/trunk/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java	2008-09-15 12:41:29 UTC (rev 78534)
@@ -37,6 +37,7 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.jar.Manifest;
 
+import org.jboss.classloader.plugins.ClassLoaderUtils;
 import org.jboss.classloader.spi.ClassLoaderPolicy;
 import org.jboss.classloader.spi.DelegateLoader;
 import org.jboss.classloader.spi.PackageInformation;
@@ -48,7 +49,6 @@
 import org.jboss.util.collection.SoftValueHashMap;
 import org.jboss.virtual.VFSUtils;
 import org.jboss.virtual.VirtualFile;
-import org.jboss.virtual.VirtualFileFilter;
 
 /**
  * VFSClassLoaderPolicy.
@@ -64,9 +64,6 @@
    /** Tag for no manifest */
    private static final Manifest NO_MANIFEST = new Manifest();
 
-   /** The leaf virtual file filter */
-   private static final VirtualFileFilter LEAF_FILTER = new LeafVirtualFileFilter();
-
    /** A name for the policy */
    private String name;
    
@@ -556,21 +553,9 @@
             VirtualFile file = root.getChild(path);
             if (file != null)
             {
-               // must either be a file ...
-               if (file.isLeaf())
-               {
-                  result = new VirtualFileInfo(file, root);
-                  vfsCache.put(path, result);
-                  return result;
-               }
-               // ... or have a child that is a file
-               List<VirtualFile> children = file.getChildren(LEAF_FILTER);
-               if (children.isEmpty() == false)
-               {
-                  result = new VirtualFileInfo(file, root);
-                  vfsCache.put(path, result);
-                  return result;
-               }
+               result = new VirtualFileInfo(file, root);
+               vfsCache.put(path, result);
+               return result;
             }
          }
          catch (Exception ignored)
@@ -581,9 +566,9 @@
    }
    
    @Override
-   public PackageInformation getPackageInformation(String packageName)
+   public PackageInformation getClassPackageInformation(String className, String packageName)
    {
-      String path = packageName.replace('.', '/');
+      String path = ClassLoaderUtils.classNameToPath(className);
       VirtualFile root = findRoot(path);
       Manifest manifest = null;
       URL rootURL = null;
@@ -634,7 +619,7 @@
       }
       try
       {
-         VirtualFile root = findRoot(path);
+         VirtualFile root = findRoot(path);;
          URL codeSourceURL = root.toURL();
          Certificate[] certs = null; // TODO JBMICROCONT-182 determine certificates
          CodeSource cs = new CodeSource(codeSourceURL, certs);
@@ -707,22 +692,4 @@
          return root;
       }
    }
-
-   // accepts only leaves
-   private static class LeafVirtualFileFilter implements VirtualFileFilter
-   {
-      public boolean accepts(VirtualFile file)
-      {
-         try
-         {
-            return file.isLeaf();
-         }
-         catch (IOException e)
-         {
-            // we can return false,
-            // since exception will get ignored any way
-            return false;
-         }
-      }
-   }
 }

Modified: projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/policy/test/PackageInfoUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/policy/test/PackageInfoUnitTestCase.java	2008-09-15 12:16:34 UTC (rev 78533)
+++ projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/policy/test/PackageInfoUnitTestCase.java	2008-09-15 12:41:29 UTC (rev 78534)
@@ -45,6 +45,7 @@
    {
       super(name);
    }
+
    public void testCorrectPackage()
       throws Exception
    {
@@ -58,7 +59,7 @@
       policy.setExportAll(ExportAll.NON_EMPTY);
       policy.setImportAll(true);
 
-      PackageInformation utilInfo = policy.getPackageInformation("util");
+      PackageInformation utilInfo = policy.getClassPackageInformation("util.Shared", "util");
       /*
       Specification-Title: testear1x.ear/lib/jar1.jar
       Specification-Version: 1.0.1.GA

Modified: projects/jboss-cl/trunk/classloading-vfs/src/test/resources/classloader/testear1x.ear
===================================================================
(Binary files differ)




More information about the jboss-cvs-commits mailing list