[jboss-cvs] JBossAS SVN: r70184 - in projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi: filter and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Feb 27 10:18:06 EST 2008


Author: adrian at jboss.org
Date: 2008-02-27 10:18:05 -0500 (Wed, 27 Feb 2008)
New Revision: 70184

Modified:
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseDelegateLoader.java
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java
Log:
Allow subclasses of DelegateLoader to lazily initialise, e.g. set the filter when the policy is determined

Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseDelegateLoader.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseDelegateLoader.java	2008-02-27 14:58:13 UTC (rev 70183)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseDelegateLoader.java	2008-02-27 15:18:05 UTC (rev 70184)
@@ -25,6 +25,7 @@
 import java.net.URL;
 import java.util.Set;
 
+import org.jboss.classloader.spi.ClassLoaderPolicy;
 import org.jboss.classloader.spi.ClassLoaderPolicyFactory;
 import org.jboss.classloader.spi.Loader;
 import org.jboss.logging.Logger;
@@ -80,17 +81,35 @@
          try
          {
             delegate = factory.createClassLoaderPolicy();
+            if (delegate == null)
+            {
+               log.trace("Factory did not create a delegate: " + factory);
+            }
+            else
+            {
+               ClassLoaderPolicy policy = (ClassLoaderPolicy) delegate;
+               initialise(policy);
+               this.delegate = delegate;
+            }
          }
          catch (Throwable t)
          {
             log.warn("Unexpected error creating policy from factory: " + factory, t);
          }
       }
-      if (delegate == null)
-         log.trace("Factory did not create a delegate: " + factory);
       return delegate;
    }
 
+   /**
+    * Callback to initialise policy
+    * 
+    * @param policy the policy
+    */
+   protected void initialise(ClassLoaderPolicy policy)
+   {
+      // Nothing by default
+   }
+   
    BaseClassLoader getBaseClassLoader(String context)
    {
       BaseClassLoader result = null;

Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java	2008-02-27 14:58:13 UTC (rev 70183)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java	2008-02-27 15:18:05 UTC (rev 70184)
@@ -107,6 +107,19 @@
       return filter;
    }
 
+   /**
+    * Set the filter
+    * 
+    * @param filter the filter
+    */
+   protected void setFilter(ClassFilter filter)
+   {
+      if (filter == null)
+         filter = ClassFilter.EVERYTHING;
+      else
+         this.filter = filter;
+   }
+   
    @Override
    public Class<?> loadClass(String className)
    {




More information about the jboss-cvs-commits mailing list