[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