[jboss-cvs] JBossAS SVN: r105860 - in projects/jboss-cl/trunk: classloader/src/main/java/org/jboss/classloader/spi and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jun 9 08:48:51 EDT 2010
Author: alesj
Date: 2010-06-09 08:48:50 -0400 (Wed, 09 Jun 2010)
New Revision: 105860
Added:
projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/WildcardDelegateLoader.java
Removed:
projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/wildcard/
Modified:
projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/plugins/ClassLoaderUtils.java
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/DelegateLoader.java
projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java
projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseDelegateLoader.java
projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/ClassLoaderInformation.java
projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java
projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java
projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/RequirementDependencyItem.java
projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java
projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/WildcardPackageUnitTestCase.java
Log:
Commit current changes -- the tests pass.
Remove old hacks, intrduced new one's --> TODO on removing them.
Modified: projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/plugins/ClassLoaderUtils.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/plugins/ClassLoaderUtils.java 2010-06-09 12:45:08 UTC (rev 105859)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/plugins/ClassLoaderUtils.java 2010-06-09 12:48:50 UTC (rev 105860)
@@ -112,7 +112,7 @@
/**
* Convert a package name into a path
*
- * @param packageName the class name
+ * @param packageName the package name
* @return the path
*/
public static final String packageToPath(final String packageName)
@@ -121,6 +121,17 @@
}
/**
+ * Convert a path name into a package
+ *
+ * @param pathName the path name
+ * @return the package
+ */
+ public static final String pathToPackage(final String pathName)
+ {
+ return pathName.replace('/', '.');
+ }
+
+ /**
* Get the package name for a class
*
* @param className the class name
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 2010-06-09 12:45:08 UTC (rev 105859)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderPolicy.java 2010-06-09 12:48:50 UTC (rev 105860)
@@ -21,6 +21,9 @@
*/
package org.jboss.classloader.spi;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -34,10 +37,8 @@
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-
import org.jboss.classloader.spi.base.BaseClassLoaderPolicy;
+import org.jboss.classloader.spi.base.ClassLoaderInformation;
import org.jboss.classloader.spi.filter.FilteredDelegateLoader;
import org.jboss.classloader.spi.filter.PackageClassFilter;
import org.jboss.classloader.spi.jdk.JDKChecker;
@@ -67,7 +68,13 @@
/** Maps native library to its provider */
private volatile List<NativeLibraryProvider> nativeLibraries;
-
+
+ @Override // TODO -- public?
+ public ClassLoaderInformation getInformation()
+ {
+ return super.getInformation();
+ }
+
/**
* Add a native library provider.
* @param provider The library file provider
Modified: projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/DelegateLoader.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/DelegateLoader.java 2010-06-09 12:45:08 UTC (rev 105859)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/DelegateLoader.java 2010-06-09 12:48:50 UTC (rev 105860)
@@ -58,7 +58,8 @@
}
/**
- * Get the ClassLoaderPolicy associated with this DelegateLoader
+ * Get the ClassLoaderPolicy associated with this DelegateLoader.
+ *
* @return the class loader policy
*/
public ClassLoaderPolicy getPolicy()
Modified: projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java 2010-06-09 12:45:08 UTC (rev 105859)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java 2010-06-09 12:48:50 UTC (rev 105860)
@@ -84,7 +84,7 @@
*
* @return the information.
*/
- ClassLoaderInformation getInformation()
+ protected ClassLoaderInformation getInformation() // TODO -- protected, was pckg private!
{
return information;
}
@@ -361,7 +361,7 @@
* @param task the classloading task info
* @return the classloader
*/
- protected synchronized BaseClassLoader getClassLoader(ClassLoadingTask task)
+ synchronized BaseClassLoader getClassLoader(ClassLoadingTask task)
{
return getClassLoader();
}
Modified: projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseDelegateLoader.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseDelegateLoader.java 2010-06-09 12:45:08 UTC (rev 105859)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseDelegateLoader.java 2010-06-09 12:48:50 UTC (rev 105860)
@@ -125,7 +125,7 @@
* @param context the context; make sure this is always resource path
* @return policy's BaseClassLoader
*/
- protected BaseClassLoader getBaseClassLoader(String message, String context)
+ BaseClassLoader getBaseClassLoader(String message, String context)
{
BaseClassLoader result = null;
BaseClassLoaderPolicy policy = getPolicy();
Modified: projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/ClassLoaderInformation.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/ClassLoaderInformation.java 2010-06-09 12:45:08 UTC (rev 105859)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/ClassLoaderInformation.java 2010-06-09 12:48:50 UTC (rev 105860)
@@ -22,8 +22,12 @@
package org.jboss.classloader.spi.base;
import java.net.URL;
-import java.util.*;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
import org.jboss.classloader.spi.DelegateLoader;
import org.jboss.classloader.spi.ImportType;
@@ -91,9 +95,9 @@
List<? extends DelegateLoader> delegates = policy.getDelegates();
if (delegates != null && delegates.isEmpty() == false)
{
- this.delegates = new HashMap<ImportType, List<DelegateLoader>>();
+ this.delegates = new ConcurrentHashMap<ImportType, List<DelegateLoader>>();
// prepare ALL
- List<DelegateLoader> all = new ArrayList<DelegateLoader>();
+ List<DelegateLoader> all = new CopyOnWriteArrayList<DelegateLoader>();
this.delegates.put(ImportType.ALL, all);
for (DelegateLoader delegate : delegates)
@@ -105,7 +109,7 @@
List<DelegateLoader> loaders = this.delegates.get(importType);
if (loaders == null)
{
- loaders = new ArrayList<DelegateLoader>();
+ loaders = new CopyOnWriteArrayList<DelegateLoader>();
this.delegates.put(importType, loaders);
}
loaders.add(delegate); // add to specific type
@@ -214,6 +218,44 @@
return delegates.get(type);
}
+ public void addDelegate(DelegateLoader loader)
+ {
+ ImportType type = loader.getImportType();
+ List<DelegateLoader> list = delegates.get(type);
+ if (list == null)
+ {
+ list = new CopyOnWriteArrayList<DelegateLoader>();
+ delegates.put(type, list);
+ }
+ list.add(0, loader);
+ // all
+ List<DelegateLoader> all = delegates.get(ImportType.ALL);
+ if (all == null)
+ {
+ all = new CopyOnWriteArrayList<DelegateLoader>();
+ delegates.put(ImportType.ALL, all);
+ }
+ all.add(loader);
+ }
+
+ public void removeDelegate(DelegateLoader loader)
+ {
+ ImportType type = loader.getImportType();
+ List<DelegateLoader> list = delegates.get(type);
+ if (list != null)
+ {
+ if (list.remove(loader) && list.isEmpty())
+ delegates.remove(type);
+ }
+ // all
+ List<DelegateLoader> all = delegates.get(ImportType.ALL);
+ if (all != null)
+ {
+ if (all.remove(loader) && all.isEmpty())
+ delegates.remove(ImportType.ALL);
+ }
+ }
+
/**
* Get the cached loader for a class
*
Modified: projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java 2010-06-09 12:45:08 UTC (rev 105859)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java 2010-06-09 12:48:50 UTC (rev 105860)
@@ -128,13 +128,18 @@
{
if (trace)
log.trace(this + " " + className + " matches class filter=" + filter);
- return super.loadClass(className);
+ return doLoadClass(className);
}
if (trace)
log.trace(this + " " + className + " does NOT match class filter=" + filter);
return null;
}
+ protected Class<?> doLoadClass(String className)
+ {
+ return super.loadClass(className);
+ }
+
public URL getResource(String name)
{
boolean trace = log.isTraceEnabled();
@@ -142,13 +147,18 @@
{
if (trace)
log.trace(this + " " + name + " matches resource filter=" + filter);
- return super.getResource(name);
+ return doGetResource(name);
}
if (trace)
log.trace(this + " " + name + " does NOT match resource filter=" + filter);
return null;
}
+ protected URL doGetResource(String name)
+ {
+ return super.getResource(name);
+ }
+
// FindBugs: The Set doesn't use equals/hashCode
public void getResources(String name, Set<URL> urls) throws IOException
{
@@ -157,12 +167,17 @@
{
if (trace)
log.trace(this + " " + name + " matches filter=" + filter);
- super.getResources(name, urls);
+ doGetResources(name, urls);
}
if (trace)
log.trace(this + " " + name + " does NOT match filter=" + filter);
}
+ protected void doGetResources(String name, Set<URL> urls) throws IOException
+ {
+ super.getResources(name, urls);
+ }
+
public Package getPackage(String name)
{
boolean trace = log.isTraceEnabled();
@@ -170,19 +185,24 @@
{
if (trace)
log.trace(this + " " + name + " matches package filter=" + filter);
- return super.getPackage(name);
+ return doGetPackage(name);
}
if (trace)
log.trace(this + " " + name + " does NOT match package filter=" + filter);
return null;
}
+ protected Package doGetPackage(String name)
+ {
+ return super.getPackage(name);
+ }
+
public void getPackages(Set<Package> packages)
{
boolean trace = log.isTraceEnabled();
Set<Package> allPackages = new HashSet<Package>();
- super.getPackages(allPackages);
+ doGetPackages(allPackages);
for (Package pkge : allPackages)
{
if (filter.matchesPackageName(pkge.getName()))
@@ -196,6 +216,11 @@
}
}
+ protected void doGetPackages(Set<Package> packages)
+ {
+ super.getPackages(packages);
+ }
+
@Override
protected void toLongString(StringBuilder builder)
{
Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java 2010-06-09 12:45:08 UTC (rev 105859)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java 2010-06-09 12:48:50 UTC (rev 105860)
@@ -36,7 +36,6 @@
import org.jboss.classloader.spi.filter.ClassFilter;
import org.jboss.classloading.plugins.metadata.PackageCapability;
import org.jboss.classloading.plugins.metadata.PackageRequirement;
-import org.jboss.classloading.spi.dependency.wildcard.WildcardRequirementDependencyItem;
import org.jboss.classloading.spi.helpers.NameAndVersionSupport;
import org.jboss.classloading.spi.metadata.*;
import org.jboss.classloading.spi.visitor.ResourceFilter;
@@ -833,6 +832,20 @@
public abstract DelegateLoader getDelegateLoader(Module requiringModule, List<String> packages);
/**
+ * Create wildcard delegate.
+ *
+ * @param controller the controller
+ * @param factory the classloader policy factory
+ * @param filter the class filter
+ * @param item the requirement dependency item
+ * @return wildcard delegate loader
+ */
+ protected DelegateLoader resolveWildcard(Controller controller, ClassLoaderPolicyFactory factory, ClassFilter filter, RequirementDependencyItem item)
+ {
+ return new WildcardDelegateLoader(controller, factory, filter, item);
+ }
+
+ /**
* Get the exported packages
*
* @return the exported packages
@@ -1174,11 +1187,7 @@
requirementDependencies = new ArrayList<RequirementDependencyItem>();
for (Requirement requirement : requirements)
{
- RequirementDependencyItem item;
- if (requirement instanceof PackageRequirement && ((PackageRequirement)requirement).isWildcard())
- item = new WildcardRequirementDependencyItem(this, requirement, classLoaderState, classLoaderState);
- else
- item = new RequirementDependencyItem(this, requirement, classLoaderState, classLoaderState);
+ RequirementDependencyItem item = new RequirementDependencyItem(this, requirement, classLoaderState, classLoaderState);
addIDependOn(item);
requirementDependencies.add(item);
}
Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/RequirementDependencyItem.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/RequirementDependencyItem.java 2010-06-09 12:45:08 UTC (rev 105859)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/RequirementDependencyItem.java 2010-06-09 12:48:50 UTC (rev 105860)
@@ -145,7 +145,7 @@
if (resolved)
{
setIDependOn(context.getName());
- addDepends(module);
+ module.addDepends(this);
if (module.getClassLoadingSpace() == null)
log.warn(getModule() + " resolved " + getRequirement() + " to " + module + " which has import-all=true. Cannot check its consistency.");
}
@@ -156,26 +156,6 @@
return isResolved();
}
- /**
- * Add this dependency on module.
- *
- * @param current the current module
- */
- protected void addDepends(Module current)
- {
- current.addDepends(this);
- }
-
- /**
- * Remove this dependency from module.
- *
- * @param current the current module
- */
- protected void removeDepends(Module current)
- {
- current.removeDepends(this);
- }
-
@Override
protected void addDependsOnMe(Controller controller, ControllerContext context)
{
@@ -199,7 +179,7 @@
Module resolvedModule = getResolvedModule();
if (resolved == ResolvedState.UNRESOLVED && resolvedModule != null)
{
- removeDepends(resolvedModule);
+ resolvedModule.removeDepends(this);
resolvedModule.removeDependsOnMe(this);
this.resolvedModule = null;
}
Copied: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/WildcardDelegateLoader.java (from rev 105765, projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/wildcard/WildcardDelegateLoader.java)
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/WildcardDelegateLoader.java (rev 0)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/WildcardDelegateLoader.java 2010-06-09 12:48:50 UTC (rev 105860)
@@ -0,0 +1,173 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2010, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.classloading.spi.dependency;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.List;
+import java.util.Set;
+
+import org.jboss.classloader.plugins.ClassLoaderUtils;
+import org.jboss.classloader.spi.ClassLoaderPolicy;
+import org.jboss.classloader.spi.ClassLoaderPolicyFactory;
+import org.jboss.classloader.spi.DelegateLoader;
+import org.jboss.classloader.spi.base.ClassLoaderInformation;
+import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.FilteredDelegateLoader;
+import org.jboss.classloading.plugins.metadata.PackageRequirement;
+import org.jboss.classloading.spi.dependency.policy.ClassLoaderPolicyModule;
+import org.jboss.classloading.spi.metadata.Requirement;
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.DependencyInfo;
+
+/**
+ * Wildcard delegate loader.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+class WildcardDelegateLoader extends FilteredDelegateLoader
+{
+ private Controller controller;
+ private Module module;
+ private VersionRange range;
+
+ public WildcardDelegateLoader(Controller controller, ClassLoaderPolicyFactory factory, ClassFilter filter, RequirementDependencyItem item)
+ {
+ super(factory, filter);
+ if (controller == null)
+ throw new IllegalArgumentException("Null controller");
+ if (item == null)
+ throw new IllegalArgumentException("Null item");
+ Requirement requirement = item.getRequirement();
+ if (requirement instanceof PackageRequirement == false)
+ throw new IllegalArgumentException("Illegal package requirement: " + requirement);
+
+ this.controller = controller;
+ this.module = item.getModule();
+ this.range = ((PackageRequirement)requirement).getVersionRange();
+ }
+
+ protected DelegateLoader resolve(String pckg)
+ {
+ Requirement requirement = new PackageRequirement(pckg, range);
+ WildcardRequirementDependencyItem item = new WildcardRequirementDependencyItem(module, requirement, module.getClassLoaderState());
+ if (item.resolve(controller))
+ {
+ List<RequirementDependencyItem> items = module.getDependencies(); // should not be null, as this delegate was created from a requirement
+ items.add(item);
+ module.addIDependOn(item);
+
+ Module resolvedModule = item.getResolvedModule();
+ if (resolvedModule instanceof ClassLoaderPolicyModule)
+ {
+ ClassLoaderPolicyModule clpm = (ClassLoaderPolicyModule) resolvedModule;
+ DelegateLoader loader = clpm.getDelegateLoader(module, requirement);
+ item.setLoader(loader);
+
+ ClassLoaderPolicy policy = getPolicy();
+ ClassLoaderInformation info = policy.getInformation(); // public hack
+ if (info != null)
+ info.addDelegate(loader); // new method
+
+ return loader;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ protected Class<?> doLoadClass(String className)
+ {
+ DelegateLoader loader = resolve(ClassLoaderUtils.getClassPackageName(className));
+ return loader != null ? loader.loadClass(className) : null;
+ }
+
+ @Override
+ protected URL doGetResource(String name)
+ {
+ DelegateLoader loader = resolve(ClassLoaderUtils.getResourcePackageName(name));
+ return loader != null ? loader.getResource(name) : null;
+ }
+
+ @Override
+ protected void doGetResources(String name, Set<URL> urls) throws IOException
+ {
+ DelegateLoader loader = resolve(ClassLoaderUtils.getResourcePackageName(name));
+ if (loader != null)
+ {
+ loader.getResources(name, urls);
+ }
+ }
+
+ @Override
+ protected Package doGetPackage(String name)
+ {
+ DelegateLoader loader = resolve(ClassLoaderUtils.pathToPackage(name));
+ return loader != null ? loader.getPackage(name) : null;
+ }
+
+ private class WildcardRequirementDependencyItem extends RequirementDependencyItem
+ {
+ private DelegateLoader loader;
+
+ private WildcardRequirementDependencyItem(Module module, Requirement requirement, ControllerState whenRequired)
+ {
+ super(module, requirement, whenRequired, ControllerState.INSTALLED);
+ }
+
+ @Override
+ public boolean unresolved(Controller controller)
+ {
+ if (loader != null)
+ {
+ ClassLoaderPolicy policy = getPolicy();
+ ClassLoaderInformation info = policy.getInformation();
+ if (info != null)
+ info.removeDelegate(loader);
+ }
+
+ Object iDependOn = getIDependOn();
+ if (iDependOn != null)
+ {
+ ControllerContext context = controller.getContext(iDependOn, null);
+ if (context != null)
+ {
+ DependencyInfo info = context.getDependencyInfo();
+ info.removeDependsOnMe(this);
+ }
+ }
+
+ super.unresolved(controller);
+
+ return false; // return false, so we don't get unwinded
+ }
+
+ void setLoader(DelegateLoader loader)
+ {
+ this.loader = loader;
+ }
+ }
+}
Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java 2010-06-09 12:45:08 UTC (rev 105859)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java 2010-06-09 12:48:50 UTC (rev 105860)
@@ -38,8 +38,6 @@
import org.jboss.classloading.spi.dependency.Module;
import org.jboss.classloading.spi.dependency.RequirementDependencyItem;
import org.jboss.classloading.spi.dependency.helpers.ClassLoadingMetaDataModule;
-import org.jboss.classloading.spi.dependency.wildcard.WildcardClassLoaderPolicyFactory;
-import org.jboss.classloading.spi.dependency.wildcard.WildcardDelegateLoader;
import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
import org.jboss.classloading.spi.metadata.Requirement;
import org.jboss.dependency.spi.Controller;
@@ -269,8 +267,14 @@
ClassFilter filter = pr.toClassFilter();
if (pr.isWildcard())
{
- ClassLoaderPolicyFactory factory = new WildcardClassLoaderPolicyFactory(domain, item);
- return new WildcardDelegateLoader(factory, filter);
+ ClassLoaderPolicyFactory factory = new ClassLoaderPolicyFactory()
+ {
+ public ClassLoaderPolicy createClassLoaderPolicy()
+ {
+ return getPolicy();
+ }
+ };
+ return resolveWildcard(controller, factory, filter, item);
}
else
{
Modified: projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/WildcardPackageUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/WildcardPackageUnitTestCase.java 2010-06-09 12:45:08 UTC (rev 105859)
+++ projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/WildcardPackageUnitTestCase.java 2010-06-09 12:48:50 UTC (rev 105860)
@@ -62,6 +62,7 @@
assertLoadClassFail(A.class, clA1);
MockClassLoadingMetaData a2 = new MockClassLoadingMetaData("a2");
+ a2.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
a2.setPathsAndPackageNames(A.class);
KernelControllerContext contextA2 = install(a2);
try
More information about the jboss-cvs-commits
mailing list