[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