[jboss-cvs] JBossAS SVN: r98009 - in projects/jboss-cl/branches/vfs3-int: classloader/src/main/java/org/jboss/classloader/plugins and 34 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Dec 18 21:42:16 EST 2009
Author: johnbailey
Date: 2009-12-18 21:42:11 -0500 (Fri, 18 Dec 2009)
New Revision: 98009
Added:
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassFoundEvent.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassFoundHandler.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderEvent.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderEventHandler.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassNotFoundEvent.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassNotFoundHandler.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/ClassFilterUtils.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/ClassLoaderNotificationsTestSuite.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support/
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a/
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a/A.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassFoundHandlerUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassLoaderEventHandlerUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassNotFoundHandlerUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/LifeCycle.java
projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/ResolutionContext.java
projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/Resolver.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/LifeCycleTestSuite.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/A.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycle.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycleClassLoaderPolicyModule.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/AbstractMockLifeCycleUnitTest.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/LifeCycleUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/ResolverTestSuite.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a/A.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/test/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/test/ResolverUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/resources/org/jboss/test/classloading/metadata/xml/test/ModuleTopLevelClassLoader.xml
Removed:
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/ClassLoaderNotificationsTestSuite.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support/
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a/
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a/A.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassFoundHandlerUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassLoaderEventHandlerUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassNotFoundHandlerUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/LifeCycleTestSuite.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/A.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycle.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycleClassLoaderPolicyModule.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/AbstractMockLifeCycleUnitTest.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/LifeCycleUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/ResolverTestSuite.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a/A.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/test/
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/test/ResolverUnitTestCase.java
Modified:
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/plugins/ClassLoaderUtils.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/plugins/loader/ClassLoaderToLoaderAdapter.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderDomain.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderDomainMBean.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderPolicy.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderSystem.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/Loader.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ParentPolicy.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderMBean.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseDelegateLoader.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/ClassFilter.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/LazyFilteredDelegateLoader.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/test/support/IsolatedClassLoaderTestHelper.java
projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/test/support/MockClassLoaderPolicy.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/ClassLoaderAllTestSuite.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/delegate/test/DelegateLoaderUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/CustomParentLoaderUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/HierarchicalParentClassLoaderUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/HierarchicalParentLoaderUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/ParentPolicyUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/filter/test/FilterUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/policy/test/ClassLoaderPolicyUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/plugins/vfs/VFSResourceVisitor.java
projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/resources/schema/jboss-classloading-1.0.xsd
projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/ManagedObjectVFSClassLoaderFactoryUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoading.java
projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/Domain.java
projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java
projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java
projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingMetaData.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/ClassLoadingAllTestSuite.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/dependency/test/AbstractMockClassLoaderUnitTest.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/dependency/test/MockClassLoadingMetaDataUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/metadata/test/ClassLoadingMetaDataUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/metadata/test/ManagedObjectClassLoadingMetaDataUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/test/ClassLoadingMetaDataXmlUnitTestCase.java
projects/jboss-cl/branches/vfs3-int/pom.xml
Log:
Merged changes from trunk onto the VFS3 integration branch to keep from diverging too much.
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/plugins/ClassLoaderUtils.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/plugins/ClassLoaderUtils.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/plugins/ClassLoaderUtils.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -24,10 +24,13 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.Serializable;
+import java.net.URL;
import java.security.AccessController;
import java.security.CodeSource;
import java.security.PrivilegedAction;
import java.security.ProtectionDomain;
+import java.util.Comparator;
/**
* ClassLoaderUtils.
@@ -308,4 +311,74 @@
return null;
return protectionDomain.getCodeSource();
}
+
+ /**
+ * Compare two urls
+ *
+ * @param one the first url
+ * @param two the second url
+ * @return whether one is less than two
+ */
+ public static int compareURL(URL one, URL two)
+ {
+ if (one == null)
+ throw new IllegalArgumentException("Null one");
+ if (two == null)
+ throw new IllegalArgumentException("Null one");
+
+ String a = one.getProtocol();
+ String b = two.getProtocol();
+ int result = compare(a, b);
+ if (result != 0)
+ return result;
+
+ a = one.getHost();
+ b = two.getHost();
+ result = compare(a, b);
+ if (result != 0)
+ return result;
+
+ a = one.getFile();
+ b = two.getFile();
+ result = compare(a, b);
+ if (result != 0)
+ return result;
+
+ int c = one.getPort();
+ int d = two.getPort();
+ result = c - d;
+ if (result != 0)
+ return result;
+
+ String ref1 = one.getRef();
+ String ref2 = two.getRef();
+ return compare(ref1, ref2);
+ }
+
+ private static int compare(String one, String two)
+ {
+ if (one == null && two == null)
+ return 0;
+ if (one == null)
+ return -1;
+ if (two == null)
+ return +1;
+ return one.compareTo(two);
+ }
+
+ /**
+ * URLComparator.
+ */
+ public static class URLComparator implements Comparator<URL>, Serializable
+ {
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 169805004616968144L;
+
+ public static final URLComparator INSTANCE = new URLComparator();
+
+ public int compare(URL o1, URL o2)
+ {
+ return compareURL(o1, o2);
+ }
+ }
}
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/plugins/loader/ClassLoaderToLoaderAdapter.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/plugins/loader/ClassLoaderToLoaderAdapter.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/plugins/loader/ClassLoaderToLoaderAdapter.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -127,6 +127,7 @@
return url;
}
+ // FindBugs: The Set doesn't use equals/hashCode
public void getResources(final String name, Set<URL> urls) throws IOException
{
final ClassLoader classLoader = getClassLoader();
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassFoundEvent.java (from rev 98000, projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/ClassFoundEvent.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassFoundEvent.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassFoundEvent.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,87 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.classloader.spi;
+
+import java.util.EventObject;
+
+/**
+ * ClassFoundEvent.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassFoundEvent extends EventObject
+{
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -8258925782380851534L;
+
+ /** The class */
+ private Class<?> clazz;
+
+ /**
+ * Create a new ClassFoundEvent.
+ *
+ * @param classLoader classLoader
+ * @param clazz the class
+ */
+ public ClassFoundEvent(ClassLoader classLoader, Class<?> clazz)
+ {
+ super(classLoader);
+ this.clazz = clazz;
+ }
+
+ /**
+ * Get the className.
+ *
+ * @return the className.
+ */
+ public String getClassName()
+ {
+ return clazz.getName();
+ }
+
+ /**
+ * Get the class.
+ *
+ * @return the class.
+ */
+ public Class<?> getClazz()
+ {
+ return clazz;
+ }
+
+ /**
+ * Get the classLoader.
+ *
+ * @return the classLoader
+ */
+ public ClassLoader getClassLoader()
+ {
+ return (ClassLoader) getSource();
+ }
+
+ @Override
+ public String toString()
+ {
+ return getClass().getSimpleName() + "[classLoader=" + getClassLoader() + " class=" + getClassName() + "]";
+ }
+}
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassFoundHandler.java (from rev 98000, projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/ClassFoundHandler.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassFoundHandler.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassFoundHandler.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,38 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.classloader.spi;
+
+/**
+ * ClassFoundHandler.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassFoundHandler
+{
+ /**
+ * Fired when a class is found
+ *
+ * @param event the event
+ */
+ void classFound(ClassFoundEvent event);
+}
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderDomain.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderDomain.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderDomain.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -31,14 +31,18 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.TreeSet;
import java.util.Map.Entry;
+import java.util.concurrent.CopyOnWriteArrayList;
import javax.management.MBeanRegistration;
import javax.management.MBeanServer;
import javax.management.ObjectName;
+import org.jboss.classloader.plugins.ClassLoaderUtils;
import org.jboss.classloader.plugins.loader.ClassLoaderToLoaderAdapter;
import org.jboss.classloader.spi.base.BaseClassLoaderDomain;
+import org.jboss.classloader.spi.base.BaseClassLoaderSource;
import org.jboss.classloader.spi.filter.ClassFilter;
import org.jboss.classloading.spi.RealClassLoader;
import org.jboss.logging.Logger;
@@ -49,7 +53,7 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
-public class ClassLoaderDomain extends BaseClassLoaderDomain implements Loader, ClassLoaderDomainMBean, MBeanRegistration
+public class ClassLoaderDomain extends BaseClassLoaderDomain implements Loader, ClassLoaderDomainMBean, MBeanRegistration, ClassNotFoundHandler, ClassFoundHandler
{
/** The log */
private static final Logger log = Logger.getLogger(ClassLoaderDomain.class);
@@ -71,6 +75,15 @@
/** Whether to use load class for the parent */
private boolean useLoadClassForParent = false;
+
+ /** The class not found handlers */
+ private List<ClassNotFoundHandler> classNotFoundHandlers;
+
+ /** The class found handlers */
+ private List<ClassFoundHandler> classFoundHandlers;
+
+ /** The class loader event handlers */
+ private List<ClassLoaderEventHandler> classLoaderEventHandlers;
/**
* Create a new ClassLoaderDomain with the {@link ParentPolicy#BEFORE} loading rules.
@@ -261,9 +274,10 @@
return null;
}
+ // FindBugs: The Set doesn't use equals/hashCode
public Set<URL> loadResources(String name) throws IOException
{
- HashSet<URL> result = new HashSet<URL>();
+ TreeSet<URL> result = new TreeSet<URL>(ClassLoaderUtils.URLComparator.INSTANCE);
getResources(name, result);
return result;
}
@@ -284,7 +298,229 @@
else
builder.append(getParentClassLoader());
}
+
+ /**
+ * Add a ClassNotFoundHandler
+ *
+ * @param handler the handler
+ */
+ public void addClassNotFoundHandler(ClassNotFoundHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classNotFoundHandlers == null)
+ classNotFoundHandlers = new CopyOnWriteArrayList<ClassNotFoundHandler>();
+
+ classNotFoundHandlers.add(handler);
+ }
+
+ /**
+ * Remove a ClassNotFoundHandler
+ *
+ * @param handler the handler
+ */
+ public void removeClassNotFoundHandler(ClassNotFoundHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classNotFoundHandlers == null)
+ return;
+ classNotFoundHandlers.remove(handler);
+ }
+ public boolean classNotFound(ClassNotFoundEvent event)
+ {
+ String className = event.getClassName();
+
+ ClassNotFoundHandler parent = null;
+ Loader parentLoader = getParent();
+ if (parentLoader instanceof ClassNotFoundHandler)
+ parent = (ClassNotFoundHandler) parentLoader;
+ else
+ {
+ ClassLoaderPolicy parentPolicy = getClassLoaderPolicy(parentLoader);
+ if (parentPolicy != null)
+ parent = parentPolicy;
+ }
+
+ boolean parentResult = false;
+ if (parent != null)
+ parentResult = parent.classNotFound(event);
+
+ // Try the parent before
+ if (parentResult && getParentPolicy().getBeforeFilter().matchesClassName(className))
+ return true;
+
+ if (classNotFoundHandlers != null && classNotFoundHandlers.isEmpty() == false)
+ {
+ for (ClassNotFoundHandler handler : classNotFoundHandlers)
+ {
+ try
+ {
+ if (handler.classNotFound(event))
+ return true;
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error invoking classNotFoundHandler: " + handler, t);
+ }
+ }
+ }
+
+ // Try the parent after
+ if (parentResult && getParentPolicy().getAfterFilter().matchesClassName(className))
+ return true;
+
+ ClassLoaderSystem system = (ClassLoaderSystem) getClassLoaderSystem();
+ return system != null && system.classNotFound(event);
+ }
+
+ /**
+ * Add a ClassFoundHandler
+ *
+ * @param handler the handler
+ */
+ public void addClassFoundHandler(ClassFoundHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classFoundHandlers == null)
+ classFoundHandlers = new CopyOnWriteArrayList<ClassFoundHandler>();
+
+ classFoundHandlers.add(handler);
+ }
+
+ /**
+ * Remove a ClassFoundHandler
+ *
+ * @param handler the handler
+ */
+ public void removeClassFoundHandler(ClassFoundHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classFoundHandlers == null)
+ return;
+ classFoundHandlers.remove(handler);
+ }
+
+ public void classFound(ClassFoundEvent event)
+ {
+ ClassFoundHandler parent = null;
+ Loader parentLoader = getParent();
+ if (parentLoader instanceof ClassFoundHandler)
+ parent = (ClassFoundHandler) parentLoader;
+ else
+ {
+ ClassLoaderPolicy parentPolicy = getClassLoaderPolicy(parentLoader);
+ if (parentPolicy != null)
+ parent = parentPolicy;
+ }
+
+ if (parent != null)
+ parent.classFound(event);
+
+ if (classFoundHandlers != null && classFoundHandlers.isEmpty() == false)
+ {
+ for (ClassFoundHandler handler : classFoundHandlers)
+ {
+ try
+ {
+ handler.classFound(event);
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error invoking classFoundHandler: " + handler, t);
+ }
+ }
+ }
+
+ ClassLoaderSystem system = (ClassLoaderSystem) getClassLoaderSystem();
+ if (system != null)
+ system.classFound(event);
+ }
+
+ /**
+ * Add a ClassLoaderEventHandler
+ *
+ * @param handler the handler
+ */
+ public void addClassLoaderEventHandler(ClassLoaderEventHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classLoaderEventHandlers == null)
+ classLoaderEventHandlers = new CopyOnWriteArrayList<ClassLoaderEventHandler>();
+
+ classLoaderEventHandlers.add(handler);
+ }
+
+ /**
+ * Remove a ClassLoaderEventHandler
+ *
+ * @param handler the handler
+ */
+ public void removeClassLoaderEventHandler(ClassLoaderEventHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classLoaderEventHandlers == null)
+ return;
+ classLoaderEventHandlers.remove(handler);
+ }
+
+ private void fireRegisterClassLoader(ClassLoaderEvent event)
+ {
+ if (classLoaderEventHandlers != null && classLoaderEventHandlers.isEmpty() == false)
+ {
+ for (ClassLoaderEventHandler handler : classLoaderEventHandlers)
+ {
+ try
+ {
+ handler.fireRegisterClassLoader(event);
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error invoking classLoaderEventHandler: " + handler, t);
+ }
+ }
+ }
+
+ ClassLoaderSystem system = (ClassLoaderSystem) getClassLoaderSystem();
+ if (system == null)
+ return;
+ system.fireRegisterClassLoader(event);
+ }
+
+ private void fireUnregisterClassLoader(ClassLoaderEvent event)
+ {
+ if (classLoaderEventHandlers != null && classLoaderEventHandlers.isEmpty() == false)
+ {
+ for (ClassLoaderEventHandler handler : classLoaderEventHandlers)
+ {
+ try
+ {
+ handler.fireUnregisterClassLoader(event);
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error invoking classLoaderEventHandler: " + handler, t);
+ }
+ }
+ }
+
+ ClassLoaderSystem system = (ClassLoaderSystem) getClassLoaderSystem();
+ if (system == null)
+ return;
+ system.fireUnregisterClassLoader(event);
+ }
+
@Override
public String toString()
{
@@ -486,6 +722,7 @@
}
@Override
+ // FindBugs: The Set doesn't use equals/hashCode
protected void beforeGetResources(String name, Set<URL> urls) throws IOException
{
boolean trace = log.isTraceEnabled();
@@ -501,6 +738,7 @@
}
@Override
+ // FindBugs: The Set doesn't use equals/hashCode
protected void afterGetResources(String name, Set<URL> urls) throws IOException
{
boolean trace = log.isTraceEnabled();
@@ -522,6 +760,7 @@
* @param urls the urls to add to
* @throws IOException for any error
*/
+ // FindBugs: The Set doesn't use equals/hashCode
protected void getResourcesFromParent(String name, Set<URL> urls) throws IOException
{
Loader parentLoader = getParent();
@@ -680,7 +919,8 @@
}
finally
{
- setUseLoadClassForParent(parent instanceof ClassLoaderDomain == false);
+ if ((parent instanceof ClassLoaderDomain == false) && (parent instanceof BaseClassLoaderSource == false))
+ setUseLoadClassForParent(true);
}
}
@@ -722,11 +962,13 @@
protected void afterRegisterClassLoader(ClassLoader classLoader, ClassLoaderPolicy policy)
{
registerClassLoaderMBean(classLoader);
+ fireRegisterClassLoader(new ClassLoaderEvent(this, classLoader));
}
@Override
protected void beforeUnregisterClassLoader(ClassLoader classLoader, ClassLoaderPolicy policy)
{
+ fireUnregisterClassLoader(new ClassLoaderEvent(this, classLoader));
unregisterClassLoaderMBean(classLoader);
}
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderDomainMBean.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderDomainMBean.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderDomainMBean.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -110,6 +110,7 @@
* @return the resource urls
* @throws IOException for any error
*/
+ // FindBugs: The Set doesn't use equals/hashCode
Set<URL> loadResources(String name) throws IOException;
/**
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderEvent.java (from rev 98000, projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderEvent.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderEvent.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderEvent.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,77 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.classloader.spi;
+
+import java.util.EventObject;
+
+/**
+ * ClassLoaderEvent.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassLoaderEvent extends EventObject
+{
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -5874702798336257018L;
+
+ /** The classLoader */
+ private ClassLoader classLoader;
+
+ /**
+ * Create a new ClassLoaderEvent.
+ *
+ * @param classLoaderDomain the classLoaderDomain
+ * @param classLoader classLoader
+ */
+ public ClassLoaderEvent(ClassLoaderDomain classLoaderDomain, ClassLoader classLoader)
+ {
+ super(classLoaderDomain);
+ this.classLoader = classLoader;
+ }
+
+ /**
+ * Get the classLoader.
+ *
+ * @return the classLoader
+ */
+ public ClassLoader getClassLoader()
+ {
+ return classLoader;
+ }
+
+ /**
+ * Get the classLoaderDomain.
+ *
+ * @return the classLoaderDomain
+ */
+ public ClassLoaderDomain getClassLoaderDomain()
+ {
+ return (ClassLoaderDomain) getSource();
+ }
+
+ @Override
+ public String toString()
+ {
+ return getClass().getSimpleName() + "[classLoaderDomain=" + getClassLoaderDomain() + " classLoader=" + getClassLoader() + "]";
+ }
+}
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderEventHandler.java (from rev 98000, projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderEventHandler.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderEventHandler.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderEventHandler.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,45 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.classloader.spi;
+
+/**
+ * ClassLoaderEventHandler.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassLoaderEventHandler
+{
+ /**
+ * Fired when a classLoader is registered
+ *
+ * @param event the classloader event
+ */
+ void fireRegisterClassLoader(ClassLoaderEvent event);
+
+ /**
+ * Fired when a classLoader is registered
+ *
+ * @param event the classloader event
+ */
+ void fireUnregisterClassLoader(ClassLoaderEvent event);
+}
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderPolicy.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderPolicy.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderPolicy.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -31,6 +31,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
@@ -48,11 +49,17 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
-public abstract class ClassLoaderPolicy extends BaseClassLoaderPolicy
+public abstract class ClassLoaderPolicy extends BaseClassLoaderPolicy implements ClassNotFoundHandler, ClassFoundHandler
{
/** The log */
private static final Logger log = Logger.getLogger(ClassLoaderPolicy.class);
+ /** The class not found handlers */
+ private List<ClassNotFoundHandler> classNotFoundHandlers;
+
+ /** The class found handlers */
+ private List<ClassFoundHandler> classFoundHandlers;
+
/**
* Get the delegate loader for exported stuff<p>
*
@@ -142,6 +149,7 @@
* @param path the path
* @return the url or null if not found
*/
+ // FindBugs: The Set doesn't use equals/hashCode
public abstract URL getResource(String path);
/**
@@ -224,7 +232,7 @@
/**
* Check whether this a request from the jdk if it is return the relevant classloader<p>
*
- * By default this uses the {@Link JDKCheckerFactory} and returns the system classloader if true.
+ * By default this uses the {@link JDKCheckerFactory} and returns the system classloader if true.
*
* @param name the class name
* @return the classloader
@@ -236,7 +244,113 @@
return getSystemClassLoader();
return null;
}
+
+ /**
+ * Add a ClassNotFoundHandler
+ *
+ * @param handler the handler
+ */
+ public void addClassNotFoundHandler(ClassNotFoundHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classNotFoundHandlers == null)
+ classNotFoundHandlers = new CopyOnWriteArrayList<ClassNotFoundHandler>();
+
+ classNotFoundHandlers.add(handler);
+ }
+
+ /**
+ * Remove a ClassNotFoundHandler
+ *
+ * @param handler the handler
+ */
+ public void removeClassNotFoundHandler(ClassNotFoundHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classNotFoundHandlers == null)
+ return;
+ classNotFoundHandlers.remove(handler);
+ }
+ public boolean classNotFound(ClassNotFoundEvent event)
+ {
+ if (classNotFoundHandlers != null && classNotFoundHandlers.isEmpty() == false)
+ {
+ for (ClassNotFoundHandler handler : classNotFoundHandlers)
+ {
+ try
+ {
+ if (handler.classNotFound(event))
+ return true;
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error invoking classNotFoundHandler: " + handler, t);
+ }
+ }
+ }
+
+ ClassLoaderDomain domain = getDomain();
+ return domain != null && domain.classNotFound(event);
+ }
+
+ /**
+ * Add a ClassFoundHandler
+ *
+ * @param handler the handler
+ */
+ public void addClassFoundHandler(ClassFoundHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classFoundHandlers == null)
+ classFoundHandlers = new CopyOnWriteArrayList<ClassFoundHandler>();
+
+ classFoundHandlers.add(handler);
+ }
+
+ /**
+ * Remove a ClassFoundHandler
+ *
+ * @param handler the handler
+ */
+ public void removeClassFoundHandler(ClassFoundHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classFoundHandlers == null)
+ return;
+ classFoundHandlers.remove(handler);
+ }
+
+ public void classFound(ClassFoundEvent event)
+ {
+ if (classFoundHandlers != null && classFoundHandlers.isEmpty() == false)
+ {
+ for (ClassFoundHandler handler : classFoundHandlers)
+ {
+ try
+ {
+ handler.classFound(event);
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error invoking classFoundHandler: " + handler, t);
+ }
+ }
+ }
+
+ ClassLoaderDomain domain = getDomain();
+ if (domain != null)
+ domain.classFound(event);
+ }
+
@Override
public ObjectName getObjectName()
{
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderSystem.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderSystem.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassLoaderSystem.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -23,6 +23,7 @@
import java.security.ProtectionDomain;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
@@ -30,7 +31,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.Collections;
+import java.util.concurrent.CopyOnWriteArrayList;
import javax.management.MBeanRegistration;
import javax.management.MBeanServer;
@@ -50,7 +51,7 @@
* @author <a href="ales.justin at jboss.com">Ales Justin</a>
* @version $Revision: 1.1 $
*/
-public abstract class ClassLoaderSystem extends BaseClassLoaderSystem implements ClassLoaderSystemMBean, MBeanRegistration
+public abstract class ClassLoaderSystem extends BaseClassLoaderSystem implements ClassLoaderSystemMBean, MBeanRegistration, ClassNotFoundHandler, ClassFoundHandler, ClassLoaderEventHandler
{
/** The log */
private static final Logger log = Logger.getLogger(ClassLoaderSystem.class);
@@ -78,6 +79,15 @@
/** The object name */
private ObjectName objectName;
+
+ /** The class not found handlers */
+ private List<ClassNotFoundHandler> classNotFoundHandlers;
+
+ /** The class found handlers */
+ private List<ClassFoundHandler> classFoundHandlers;
+
+ /** The class loader event handlers */
+ private List<ClassLoaderEventHandler> classLoaderEventHandlers;
/**
* Get the classloading system instance
@@ -182,6 +192,9 @@
public ClassLoaderDomain createAndRegisterDomain(String name, ParentPolicy parentPolicy, Loader parent)
{
ClassLoaderDomain result = createDomain(name);
+ if (result == null)
+ throw new IllegalArgumentException("Created null domain: " + name);
+
result.setParentPolicy(parentPolicy);
result.setParent(parent);
registerDomain(result);
@@ -520,7 +533,7 @@
* @deprecated use translator list
*/
@Deprecated
- public Translator getTranslator()
+ public synchronized Translator getTranslator()
{
if (translators == null || translators.isEmpty())
return null;
@@ -535,7 +548,7 @@
* @deprecated use translator list
*/
@Deprecated
- public void setTranslator(Translator translator)
+ public synchronized void setTranslator(Translator translator)
{
log.debug(this + " set translator to " + translator);
@@ -548,7 +561,7 @@
@Override
protected byte[] transform(ClassLoader classLoader, String className, byte[] byteCode, ProtectionDomain protectionDomain) throws Exception
{
- byte[] result = TranslatorUtils.applyTranslatorsOnTransform(translators, classLoader, className, byteCode, protectionDomain);
+ byte[] result = TranslatorUtils.applyTranslatorsOnTransform(getTranslators(), classLoader, className, byteCode, protectionDomain);
return super.transform(classLoader, className, result, protectionDomain);
}
@@ -557,7 +570,7 @@
{
try
{
- TranslatorUtils.applyTranslatorsAtUnregister(translators, classLoader);
+ TranslatorUtils.applyTranslatorsAtUnregister(getTranslators(), classLoader);
}
catch (Throwable t)
{
@@ -685,7 +698,174 @@
log.warn("Error unregistering domain: " + domain, e);
}
}
+
+ /**
+ * Add a ClassNotFoundHandler
+ *
+ * @param handler the handler
+ */
+ public void addClassNotFoundHandler(ClassNotFoundHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classNotFoundHandlers == null)
+ classNotFoundHandlers = new CopyOnWriteArrayList<ClassNotFoundHandler>();
+
+ classNotFoundHandlers.add(handler);
+ }
+
+ /**
+ * Remove a ClassNotFoundHandler
+ *
+ * @param handler the handler
+ */
+ public void removeClassNotFoundHandler(ClassNotFoundHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classNotFoundHandlers == null)
+ return;
+ classNotFoundHandlers.remove(handler);
+ }
+ public boolean classNotFound(ClassNotFoundEvent event)
+ {
+ if (classNotFoundHandlers != null && classNotFoundHandlers.isEmpty() == false)
+ {
+ for (ClassNotFoundHandler handler : classNotFoundHandlers)
+ {
+ try
+ {
+ if (handler.classNotFound(event))
+ return true;
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error invoking classNotFoundHandler: " + handler, t);
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Add a ClassFoundHandler
+ *
+ * @param handler the handler
+ */
+ public void addClassFoundHandler(ClassFoundHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classFoundHandlers == null)
+ classFoundHandlers = new CopyOnWriteArrayList<ClassFoundHandler>();
+
+ classFoundHandlers.add(handler);
+ }
+
+ /**
+ * Remove a ClassFoundHandler
+ *
+ * @param handler the handler
+ */
+ public void removeClassFoundHandler(ClassFoundHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classFoundHandlers == null)
+ return;
+ classFoundHandlers.remove(handler);
+ }
+
+ public void classFound(ClassFoundEvent event)
+ {
+ if (classFoundHandlers != null && classFoundHandlers.isEmpty() == false)
+ {
+ for (ClassFoundHandler handler : classFoundHandlers)
+ {
+ try
+ {
+ handler.classFound(event);
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error invoking classFoundHandler: " + handler, t);
+ }
+ }
+ }
+ }
+
+ /**
+ * Add a ClassLoaderEventHandler
+ *
+ * @param handler the handler
+ */
+ public void addClassLoaderEventHandler(ClassLoaderEventHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classLoaderEventHandlers == null)
+ classLoaderEventHandlers = new CopyOnWriteArrayList<ClassLoaderEventHandler>();
+
+ classLoaderEventHandlers.add(handler);
+ }
+
+ /**
+ * Remove a ClassLoaderEventHandler
+ *
+ * @param handler the handler
+ */
+ public void removeClassLoaderEventHandler(ClassLoaderEventHandler handler)
+ {
+ if (handler == null)
+ throw new IllegalArgumentException("Null handler");
+
+ if (classLoaderEventHandlers == null)
+ return;
+ classLoaderEventHandlers.remove(handler);
+ }
+
+ public void fireRegisterClassLoader(ClassLoaderEvent event)
+ {
+ if (classLoaderEventHandlers != null && classLoaderEventHandlers.isEmpty() == false)
+ {
+ for (ClassLoaderEventHandler handler : classLoaderEventHandlers)
+ {
+ try
+ {
+ handler.fireRegisterClassLoader(event);
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error invoking classLoaderEventHandler: " + handler, t);
+ }
+ }
+ }
+ }
+
+ public void fireUnregisterClassLoader(ClassLoaderEvent event)
+ {
+ if (classLoaderEventHandlers != null && classLoaderEventHandlers.isEmpty() == false)
+ {
+ for (ClassLoaderEventHandler handler : classLoaderEventHandlers)
+ {
+ try
+ {
+ handler.fireUnregisterClassLoader(event);
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error invoking classLoaderEventHandler: " + handler, t);
+ }
+ }
+ }
+ }
+
@Override
protected void toLongString(StringBuilder builder)
{
@@ -700,7 +880,7 @@
*
* @return the translators
*/
- public List<Translator> getTranslators()
+ public synchronized List<Translator> getTranslators()
{
if (translators == null || translators.isEmpty())
return Collections.emptyList();
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassNotFoundEvent.java (from rev 98000, projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/ClassNotFoundEvent.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassNotFoundEvent.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassNotFoundEvent.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,77 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.classloader.spi;
+
+import java.util.EventObject;
+
+/**
+ * ClassNotFoundEvent.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassNotFoundEvent extends EventObject
+{
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 7445562838711417089L;
+
+ /** The class name */
+ private String className;
+
+ /**
+ * Create a new ClassNotFoundEvent.
+ *
+ * @param classLoader the classLoader
+ * @param className the class name
+ */
+ public ClassNotFoundEvent(ClassLoader classLoader, String className)
+ {
+ super(classLoader);
+ this.className = className;
+ }
+
+ /**
+ * Get the className.
+ *
+ * @return the className.
+ */
+ public String getClassName()
+ {
+ return className;
+ }
+
+ /**
+ * Get the classLoader.
+ *
+ * @return the classLoader
+ */
+ public ClassLoader getClassLoader()
+ {
+ return (ClassLoader) getSource();
+ }
+
+ @Override
+ public String toString()
+ {
+ return getClass().getSimpleName() + "[classLoader=" + getClassLoader() + " class=" + getClassName() + "]";
+ }
+}
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassNotFoundHandler.java (from rev 98000, projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/ClassNotFoundHandler.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassNotFoundHandler.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ClassNotFoundHandler.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,39 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.classloader.spi;
+
+/**
+ * ClassNotFoundHandler.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassNotFoundHandler
+{
+ /**
+ * Fired when a class is not found
+ *
+ * @param event the event
+ * @return true when the a retry of the classloading should be tried
+ */
+ boolean classNotFound(ClassNotFoundEvent event);
+}
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/Loader.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/Loader.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/Loader.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -56,6 +56,7 @@
* @param urls the list of urls to add to
* @throws IOException for any error
*/
+ // FindBugs: The Set doesn't use equals/hashCode
void getResources(String name, Set<URL> urls) throws IOException;
/**
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ParentPolicy.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ParentPolicy.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/ParentPolicy.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -22,6 +22,7 @@
package org.jboss.classloader.spi;
import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
/**
* ParentPolicy
@@ -32,19 +33,19 @@
public class ParentPolicy
{
/** Standard Java Delegation */
- public static final ParentPolicy BEFORE = new ParentPolicy(ClassFilter.EVERYTHING, ClassFilter.NOTHING, "BEFORE");
+ public static final ParentPolicy BEFORE = new ParentPolicy(ClassFilterUtils.EVERYTHING, ClassFilterUtils.NOTHING, "BEFORE");
/** Servlet style */
- public static final ParentPolicy AFTER = new ParentPolicy(ClassFilter.NOTHING_BUT_JAVA, ClassFilter.EVERYTHING, "AFTER");
+ public static final ParentPolicy AFTER = new ParentPolicy(ClassFilterUtils.NOTHING_BUT_JAVA, ClassFilterUtils.EVERYTHING, "AFTER");
/** Standard Java Delegation for java classes */
- public static final ParentPolicy BEFORE_BUT_JAVA_ONLY = new ParentPolicy(ClassFilter.JAVA_ONLY, ClassFilter.NOTHING, "BEFORE_BUT_JAVA_ONLY");
+ public static final ParentPolicy BEFORE_BUT_JAVA_ONLY = new ParentPolicy(ClassFilterUtils.JAVA_ONLY, ClassFilterUtils.NOTHING, "BEFORE_BUT_JAVA_ONLY");
/** Java and Javax classes before, everything else after */
- public static final ParentPolicy AFTER_BUT_JAVA_BEFORE = new ParentPolicy(ClassFilter.JAVA_ONLY, ClassFilter.EVERYTHING, "AFTER_BUT_JAVA_BEFORE");
+ public static final ParentPolicy AFTER_BUT_JAVA_BEFORE = new ParentPolicy(ClassFilterUtils.JAVA_ONLY, ClassFilterUtils.EVERYTHING, "AFTER_BUT_JAVA_BEFORE");
/** Java classes before, everything else after */
- public static final ParentPolicy AFTER_BUT_ONLY_JAVA_BEFORE = new ParentPolicy(ClassFilter.NOTHING_BUT_JAVA, ClassFilter.EVERYTHING, "AFTER_BUT_JAVA_BEFORE");
+ public static final ParentPolicy AFTER_BUT_ONLY_JAVA_BEFORE = new ParentPolicy(ClassFilterUtils.NOTHING_BUT_JAVA, ClassFilterUtils.EVERYTHING, "AFTER_BUT_JAVA_BEFORE");
/** The before filter */
private ClassFilter beforeFilter;
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -38,6 +38,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
@@ -45,8 +46,10 @@
import javax.management.ObjectName;
import org.jboss.classloader.plugins.ClassLoaderUtils;
+import org.jboss.classloader.spi.ClassFoundEvent;
import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderPolicy;
+import org.jboss.classloader.spi.ClassNotFoundEvent;
import org.jboss.classloader.spi.DelegateLoader;
import org.jboss.classloader.spi.Loader;
import org.jboss.classloader.spi.PackageInformation;
@@ -56,39 +59,39 @@
/**
* BaseClassLoader.
- *
+ *
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
-public class BaseClassLoader extends SecureClassLoader implements BaseClassLoaderMBean, RealClassLoader
+public class BaseClassLoader extends SecureClassLoader implements BaseClassLoaderMBean, RealClassLoader
{
/** The log */
private static final Logger log = Logger.getLogger(BaseClassLoader.class);
/** The lock object */
private ReentrantLock lock = new ReentrantLock(true);
-
+
/** The policy for this classloader */
private ClassLoaderPolicy policy;
-
+
/** Our Loader front end */
private DelegateLoader loader;
-
+
/** The loaded classes */
private Map<String, String> loadedClasses = new ConcurrentHashMap<String, String>();
-
+
/** Our resource cache */
private Map<String, URL> resourceCache;
-
+
/** Our black list */
private Map<String, String> blackList;
-
+
/**
* Create a new ClassLoader with no parent.
- *
+ *
* @param policy the policy
- * @throws IllegalArgumentException for a null policy
- * @throws IllegalStateException if the policy is already associated with a classloader
+ * @throws IllegalArgumentException for a null policy
+ * @throws IllegalStateException if the policy is already associated with a classloader
*/
public BaseClassLoader(ClassLoaderPolicy policy)
{
@@ -107,7 +110,7 @@
if (basePolicy.isBlackListable())
blackList = new ConcurrentHashMap<String, String>();
-
+
log.debug("Created " + this + " with policy " + policy.toLongString());
}
@@ -115,7 +118,7 @@
{
return policy.getObjectName();
}
-
+
public ObjectName getClassLoaderDomain()
{
BaseClassLoaderPolicy basePolicy = policy;
@@ -127,7 +130,7 @@
{
return policy.getName();
}
-
+
public boolean isBlackListable()
{
BaseClassLoaderPolicy basePolicy = policy;
@@ -172,7 +175,7 @@
}
return result;
}
-
+
public String listPolicyDetails()
{
return policy.toLongString();
@@ -183,18 +186,18 @@
final Class<?> clazz = loadClass(name);
if (clazz == null)
return null;
-
+
ClassLoader cl = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
{
public ClassLoader run()
{
- return clazz.getClassLoader();
+ return clazz.getClassLoader();
}
});
-
+
if (cl != null && cl instanceof RealClassLoader)
return ((RealClassLoader) cl).getObjectName();
-
+
return null;
}
@@ -210,16 +213,19 @@
return new HashSet<String>(resourceCache.keySet());
}
+ // FindBugs: The Set doesn't use equals/hashCode
public Set<URL> listLoadedResources()
{
if (resourceCache == null)
return Collections.emptySet();
- return new HashSet<URL>(resourceCache.values());
+ Set<URL> result = new TreeSet<URL>(ClassLoaderUtils.URLComparator.INSTANCE);
+ result.addAll(resourceCache.values());
+ return result;
}
/**
* Get the policy.
- *
+ *
* @return the policy.
*/
ClassLoaderPolicy getPolicy()
@@ -229,7 +235,7 @@
/**
* Get the loader.
- *
+ *
* @return the loader.
*/
DelegateLoader getLoader()
@@ -246,12 +252,12 @@
if (name == null)
return null;
-
+
// Did we already load this package?
Package result = super.getPackage(name);
if (result != null && trace)
log.trace(this + " already loaded package " + name + " " + result.getName());
-
+
// Not already loaded use the domain
if (result == null)
{
@@ -263,14 +269,14 @@
log.trace(this + " getPackage " + name + " domain=" + domain);
result = domain.getPackage(this, name);
}
-
+
// Still not found
if (result == null)
{
if (trace)
log.trace(this + " package not found " + name);
}
-
+
return result;
}
@@ -292,7 +298,7 @@
/**
* Get a package locally
- *
+ *
* @param name the package name
* @return the package
*/
@@ -303,7 +309,7 @@
/**
* Get the packages locally
- *
+ *
* @param packages the packages
*/
void getPackagesLocally(Set<Package> packages)
@@ -312,10 +318,10 @@
for (Package pkg : pkgs)
packages.add(pkg);
}
-
+
/**
* Check to see if the class is already loaded
- *
+ *
* @param name the name of the class
* @param trace whether trace is enabled
* @return the class is if it is already loaded, null otherwise
@@ -343,10 +349,10 @@
log.trace(this + " already loaded class " + ClassLoaderUtils.classToString(result));
return result;
}
-
+
/**
* Check the cache and blacklist
- *
+ *
* @param name the name of the class
* @param failIfBlackListed <code>true</code> if a blacklisted class should
* result in ClassNotFoundException; <code>false</code>
@@ -363,12 +369,12 @@
if (domain == null)
return null;
- return domain.checkClassCacheAndBlackList(this, name, null, basePolicy.isImportAll(), failIfBlackListed);
+ return domain.checkClassCacheAndBlackList(this, name, null, basePolicy.isImportAll(), false);
}
/**
* Find the classloader for a class but don't load the class
- *
+ *
* @param className the class name
* @return the classloader
* @throws ClassNotFoundException if the class is not found
@@ -388,11 +394,11 @@
ClassLoaderUtils.checkClassName(className);
String path = ClassLoaderUtils.classNameToPath(className);
-
+
Loader loader = domain.findLoader(this, path, basePolicy.isImportAll(), true);
if (loader == null)
throw new ClassNotFoundException("Class " + className + " not found from " + this);
-
+
// This is a bit ugly but we can't abstract this behind an interface because
// that would make the methods public
if (loader instanceof BaseClassLoaderSource)
@@ -408,10 +414,10 @@
boolean trace = log.isTraceEnabled();
if (trace)
log.trace(this + " loadClass " + name + " resolve=" + resolve);
-
+
// Validate the class name makes sense
ClassLoaderUtils.checkClassName(name);
-
+
// Did we already load this class?
Class<?> result = isLoadedClass(name, trace);
@@ -430,21 +436,72 @@
result = checkCacheAndBlackList(name, false, trace);
if (result != null)
return result;
+
+ // Try to load the class
+ ClassNotFoundException exception = null;
+ try
+ {
+ result = doLoadClass(name, resolve, trace);
+ }
+ catch (ClassNotFoundException e)
+ {
+ exception = e;
+ }
+ // If we failed, try any class not found handlers and retry if one says it is resolved
+ if (result == null)
+ {
+ ClassLoaderPolicy policy = getPolicy();
+ if (policy != null && policy.classNotFound(new ClassNotFoundEvent(this, name)))
+ {
+ try
+ {
+ result = doLoadClass(name, resolve, trace);
+ }
+ catch (ClassNotFoundException e)
+ {
+ exception = e;
+ }
+ }
+ }
+
+ if (result == null)
+ {
+ if (trace)
+ log.trace(this + " class not found " + name);
+ if (exception != null)
+ throw exception;
+ throw new ClassNotFoundException(name + " from " + toString());
+ }
+ return result;
+ }
+
+ /**
+ * Do the load class
+ *
+ * @param name the name
+ * @param resolve whether to resolve
+ * @param trace whether trace is enabled
+ * @return the class or null if not found
+ * @throws ClassNotFoundException if a problem is raised
+ */
+ protected Class<?> doLoadClass(String name, boolean resolve, boolean trace) throws ClassNotFoundException
+ {
+ Class<?> result;
+
synchronized (this)
{
+ // JBCL-114: did we lose the race to the synchronized?
+ result = isLoadedClass(name, trace);
+
// Not already loaded use the domain
if (result == null)
result = loadClassFromDomain(name, trace);
-
+
// Still not found
if (result == null)
- {
- if (trace)
- log.trace(this + " class not found " + name);
- throw new ClassNotFoundException(name + " from " + toLongString());
- }
-
+ return null;
+
// Link the class if requested
if (resolve)
{
@@ -452,7 +509,7 @@
log.trace(this + " resolveClass " + ClassLoaderUtils.classToString(result));
resolveClass(result);
}
-
+
return result;
}
}
@@ -479,6 +536,7 @@
return Iterators.toEnumeration(resourceURLs.iterator());
}
+ // FindBugs: The Set doesn't use equals/hashCode
public Set<URL> loadResources(String name) throws IOException
{
BaseClassLoaderPolicy basePolicy = policy;
@@ -487,15 +545,15 @@
if (trace)
log.trace(this + " findResources " + name + " domain=" + domain);
- Set<URL> resourceURLs = new HashSet<URL>();
+ Set<URL> resourceURLs = new TreeSet<URL>(ClassLoaderUtils.URLComparator.INSTANCE);
if (domain != null)
domain.getResources(this, name, resourceURLs);
return resourceURLs;
}
-
+
/**
* Try to load the class locally
- *
+ *
* @param name the class name
* @return the class
*/
@@ -506,7 +564,7 @@
/**
* Try to load the class locally
- *
+ *
* @param name the class name
* @param trace whether trace is enabled
* @return the class if found
@@ -523,7 +581,7 @@
// Look for the resource
final String resourcePath = ClassLoaderUtils.classNameToPath(name);
-
+
result = AccessController.doPrivileged(new PrivilegedAction<Class<?>>()
{
public Class<?> run()
@@ -538,7 +596,7 @@
// Load the bytecode
byte[] byteCode = ClassLoaderUtils.loadByteCode(name, is);
-
+
// Let the policy do things before we define the class
BaseClassLoaderPolicy basePolicy = policy;
ProtectionDomain protectionDomain = basePolicy.getProtectionDomain(name, resourcePath);
@@ -552,7 +610,7 @@
{
throw new RuntimeException("Unexpected error transforming class " + name, t);
}
-
+
// Create the package if necessary
URL codeSourceURL = null;
if (protectionDomain != null)
@@ -562,7 +620,7 @@
codeSourceURL = codeSource.getLocation();
}
definePackage(name, codeSourceURL);
-
+
// Finally we can define the class
Class<?> result;
if (protectionDomain != null)
@@ -574,15 +632,16 @@
return result;
}
}, policy.getAccessControlContext());
-
+
loadedClasses.put(name, name);
-
+ policy.classFound(new ClassFoundEvent(this, result));
+
return result;
}
/**
* Try to find the resource locally
- *
+ *
* @param name the resource name
* @return the url if found
*/
@@ -593,7 +652,7 @@
/**
* Try to find the resource locally
- *
+ *
* @param name the resource name
* @param trace whether trace is enabled
* @return the URL if found
@@ -614,7 +673,7 @@
return url;
}
}
-
+
// Is this resource blacklisted?
if (blackList != null && blackList.containsKey(name))
{
@@ -622,7 +681,7 @@
log.trace(this + " resource is blacklisted " + name);
return null;
}
-
+
// Ask the policy for the resource
URL result = AccessController.doPrivileged(new PrivilegedAction<URL>()
{
@@ -645,21 +704,22 @@
// Cache what we found
if (resourceCache != null && result != null)
resourceCache.put(name, result);
-
+
// Blacklist when not found
if (blackList != null && result == null)
blackList.put(name, name);
-
+
return result;
}
/**
* Try to find the resource locally
- *
+ *
* @param name the resource name
* @param urls the urls to add to
* @throws IOException for any error
*/
+ // FindBugs: The Set doesn't use equals/hashCode
void getResourcesLocally(String name, Set<URL> urls) throws IOException
{
getResourcesLocally(name, urls, log.isTraceEnabled());
@@ -667,12 +727,13 @@
/**
* Try to find the resources locally
- *
+ *
* @param name the resource name
* @param urls the urls to add to
* @param trace whether trace is enabled
* @throws IOException for any error
*/
+ // FindBugs: The Set doesn't use equals/hashCode
void getResourcesLocally(final String name, final Set<URL> urls, boolean trace) throws IOException
{
if (trace)
@@ -702,7 +763,7 @@
throw e2;
}
}
-
+
/**
* Define the package for the class if not already done
*
@@ -714,10 +775,10 @@
String packageName = ClassLoaderUtils.getClassPackageName(className);
if (packageName.length() == 0)
return;
-
+
// Ask the policy for the information
PackageInformation pi = policy.getClassPackageInformation(className, packageName);
-
+
// Already defined?
Package pkge = getPackage(packageName);
if (pkge != null)
@@ -754,7 +815,7 @@
/**
* Try to load the class from the domain
- *
+ *
* @param name the class name
* @param trace whether trace is enabled
* @return the class if found in the parent
@@ -764,17 +825,17 @@
{
// Because of the broken classloading in the Sun JDK we need to
// serialize access to the classloader.
-
+
// Additionally, acquiring the lock on the policy for this classloader
// ensures that we don't race with somebody undeploying the classloader
// which could cause leaks
acquireLockFairly(trace);
try
{
- // Here we have synchronized with the policy
+ // Here we have synchronized with the policy
BaseClassLoaderPolicy basePolicy = policy;
BaseClassLoaderDomain domain = basePolicy.getClassLoaderDomain();
-
+
if (trace)
log.trace(this + " load from domain " + name + " domain=" + domain);
@@ -784,7 +845,7 @@
if (domain == null)
{
Class<?> result = loadClassLocally(name, trace);
-
+
// So this is almost certainly a classloader leak
if (result == null)
throw new IllegalStateException(this + " classLoader is not connected to a domain (probably undeployed?) for class " + name);
@@ -808,7 +869,7 @@
BaseClassLoaderPolicy basePolicy = policy;
return basePolicy.getClassLoaderUnchecked() != null;
}
-
+
public Class<?> getCachedClass(String name)
{
// TODO look in global and/or local cache
@@ -873,10 +934,10 @@
policy.clearBlackList(name);
}
}
-
+
/**
* A long version of the classloader
- *
+ *
* @return the long string
*/
public String toLongString()
@@ -889,28 +950,29 @@
builder.append('}');
return builder.toString();
}
-
+
/**
* Shutdown the classloader
*/
protected void shutdownClassLoader()
{
log.debug(toString() + " shutdown!");
+ loadedClasses.clear();
if (resourceCache != null)
resourceCache.clear();
if (blackList != null)
blackList.clear();
}
-
+
/**
* For subclasses to add things to the long string
- *
+ *
* @param builder the builder
*/
protected void toLongString(StringBuilder builder)
{
}
-
+
@Override
public String toString()
{
@@ -923,7 +985,7 @@
/**
* Attempt to lock, but don't wait
- *
+ *
* @return true when the lock was obtained
*/
boolean attemptLock()
@@ -933,7 +995,7 @@
/**
* Lock
- *
+ *
* This method must be invoked with the monitor held
*/
void lock()
@@ -943,7 +1005,7 @@
/**
* Unlock
- *
+ *
* @param rescheduleTasks whether to reschedule tasks
*/
void unlock(boolean rescheduleTasks)
@@ -953,7 +1015,7 @@
/**
* Attempt to get the lock but don't wait
- *
+ *
* @param trace whether trace is enabled
* @return true when obtained the lock
*/
@@ -993,12 +1055,12 @@
return result;
}
-
+
/**
* Acquire the lock on the classloader fairly<p>
*
* This must be invoked with the monitor held
- *
+ *
* @param trace whether trace is enabled
*/
private void acquireLockFairly(boolean trace)
@@ -1010,7 +1072,7 @@
boolean interrupted = Thread.interrupted();
int waits = 0;
-
+
try
{
while (true)
@@ -1045,14 +1107,14 @@
if (interrupted)
thread.interrupt();
}
-
+
if (lock.getHoldCount() == 1)
ClassLoaderManager.registerLoaderThread(this, thread);
}
/**
* Unlock
- *
+ *
* @param trace whether trace is enabled
* @param rescheduleTasks whether to reschedule tasks
*/
@@ -1064,8 +1126,8 @@
synchronized (this)
{
- lock.unlock();
-
+ lock.unlock();
+
if (lock.getHoldCount() == 0)
{
ClassLoaderManager.unregisterLoaderThread(this, thread, rescheduleTasks);
@@ -1076,7 +1138,7 @@
/**
* Get the classloader for a class
- *
+ *
* @param clazz the class
* @return the classloader or null if it doesn't have one
*/
@@ -1085,7 +1147,7 @@
SecurityManager sm = System.getSecurityManager();
if (sm == null)
return clazz.getClassLoader();
-
+
return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
{
public ClassLoader run()
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -466,6 +466,7 @@
* @param urls the urls to add to
* @throws IOException for any error
*/
+ // FindBugs: The Set doesn't use equals/hashCode
void getResources(BaseClassLoader classLoader, String name, Set<URL> urls, boolean allExports) throws IOException
{
boolean trace = log.isTraceEnabled();
@@ -761,6 +762,7 @@
* @param trace whether trace is enabled
* @throws IOException for any error
*/
+ // FindBugs: The Set doesn't use equals/hashCode
void getResourcesFromExports(BaseClassLoader classLoader, String name, Set<URL> urls, boolean trace) throws IOException
{
String packageName = ClassLoaderUtils.getResourcePackageName(name);
@@ -931,6 +933,7 @@
* @param trace whether trace is enabled
* @throws IOException for any error
*/
+ // FindBugs: The Set doesn't use equals/hashCode
void getResourcesFromImports(ClassLoaderInformation info, String name, Set<URL> urls, boolean trace) throws IOException
{
List<? extends DelegateLoader> delegates = info.getDelegates();
@@ -1037,6 +1040,7 @@
* @param urls the urls to add to
* @throws IOException for any error
*/
+ // FindBugs: The Set doesn't use equals/hashCode
protected abstract void beforeGetResources(String name, Set<URL> urls) throws IOException;
/**
@@ -1046,6 +1050,7 @@
* @param urls the urls to add to
* @throws IOException for any error
*/
+ // FindBugs: The Set doesn't use equals/hashCode
protected abstract void afterGetResources(String name, Set<URL> urls) throws IOException;
/**
@@ -1136,6 +1141,7 @@
return getResource(classLoader, name, false);
}
+ // FindBugs: The Set doesn't use equals/hashCode
public void getResources(String name, Set<URL> urls) throws IOException
{
getResources(null, name, urls, true);
@@ -1149,6 +1155,7 @@
* @param urls the urls to add to
* @throws IOException for any error
*/
+ // FindBugs: The Set doesn't use equals/hashCode
void getResources(BaseClassLoader classLoader, String name, Set<URL> urls) throws IOException
{
getResources(classLoader, name, urls, false);
@@ -1188,6 +1195,23 @@
}
/**
+ * Get the classloader policy associated with an object
+ *
+ * @param object the object
+ * @return the classloader policy or null if one is not associated
+ */
+ protected ClassLoaderPolicy getClassLoaderPolicy(Object object)
+ {
+ if (object instanceof BaseClassLoader)
+ return ((BaseClassLoader) object).getPolicy();
+
+ if (object instanceof BaseClassLoaderSource)
+ return getClassLoaderPolicy(((BaseClassLoaderSource) object).getClassLoader());
+
+ return null;
+ }
+
+ /**
* A long version of toString()
*
* @return the long string
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderMBean.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderMBean.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderMBean.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -119,6 +119,7 @@
*
* @return the loaded resources
*/
+ // FindBugs: The Set doesn't use equals/hashCode
Set<URL> listLoadedResources();
/**
@@ -137,6 +138,7 @@
* @return the resource urls
* @throws IOException for any error
*/
+ // FindBugs: The Set doesn't use equals/hashCode
Set<URL> loadResources(String name) throws IOException;
/**
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -256,6 +256,16 @@
*
* @return the domain
*/
+ protected ClassLoaderDomain getDomain()
+ {
+ return (ClassLoaderDomain) getClassLoaderDomain();
+ }
+
+ /**
+ * Get the classloader domain
+ *
+ * @return the domain
+ */
BaseClassLoaderDomain getClassLoaderDomain()
{
return domain;
@@ -336,7 +346,7 @@
log.debug(toString() + " shutdown!");
BaseClassLoader classLoader = this.classLoader;
this.classLoader = null;
- TranslatorUtils.applyTranslatorsAtUnregister(getTranslators(), classLoader);
+ TranslatorUtils.applyTranslatorsAtUnregister(translators, classLoader);
classLoader.shutdownClassLoader();
}
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseDelegateLoader.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseDelegateLoader.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/base/BaseDelegateLoader.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -143,6 +143,7 @@
return null;
}
+ // FindBugs: The Set doesn't use equals/hashCode
public void getResources(String name, Set<URL> urls) throws IOException
{
BaseClassLoader classLoader = getBaseClassLoader("getting resources ", name);
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/ClassFilter.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/ClassFilter.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/ClassFilter.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,6 +1,6 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * Copyright 2009, 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.
*
@@ -23,11 +23,6 @@
import java.io.Serializable;
-import org.jboss.classloader.plugins.filter.EverythingClassFilter;
-import org.jboss.classloader.plugins.filter.JavaOnlyClassFilter;
-import org.jboss.classloader.plugins.filter.NothingButJavaClassFilter;
-import org.jboss.classloader.plugins.filter.NothingClassFilter;
-
/**
* ClassFilter.
*
@@ -36,18 +31,6 @@
*/
public interface ClassFilter extends Serializable
{
- /** Match evertything */
- ClassFilter EVERYTHING = EverythingClassFilter.INSTANCE;
-
- /** Match nothing */
- ClassFilter NOTHING = NothingClassFilter.INSTANCE;
-
- /** Match nothing */
- ClassFilter NOTHING_BUT_JAVA = NothingButJavaClassFilter.INSTANCE;
-
- /** Java Only */
- ClassFilter JAVA_ONLY = JavaOnlyClassFilter.INSTANCE;
-
/**
* Whether the class name matches the filter
*
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/ClassFilterUtils.java (from rev 98000, projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/filter/ClassFilterUtils.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/ClassFilterUtils.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/ClassFilterUtils.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,124 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt 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.classloader.spi.filter;
+
+import java.util.List;
+
+import org.jboss.classloader.plugins.filter.EverythingClassFilter;
+import org.jboss.classloader.plugins.filter.JavaOnlyClassFilter;
+import org.jboss.classloader.plugins.filter.NothingButJavaClassFilter;
+import org.jboss.classloader.plugins.filter.NothingClassFilter;
+
+/**
+ * ClassFilterUtils.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassFilterUtils
+{
+ /** Match evertything */
+ public static final ClassFilter EVERYTHING = EverythingClassFilter.INSTANCE;
+
+ /** Match nothing */
+ public static final ClassFilter NOTHING = NothingClassFilter.INSTANCE;
+
+ /** Match nothing */
+ public static final ClassFilter NOTHING_BUT_JAVA = NothingButJavaClassFilter.INSTANCE;
+
+ /** Java Only */
+ public static final ClassFilter JAVA_ONLY = JavaOnlyClassFilter.INSTANCE;
+
+ /**
+ * Create a package class filter<p>
+ *
+ * Creates the filter from a comma seperated list
+ *
+ * @param string the string
+ * @return the filter
+ */
+ public static PackageClassFilter createPackageClassFilterFromString(String string)
+ {
+ return PackageClassFilter.createPackageClassFilterFromString(string);
+ }
+
+ /**
+ * Create a new package class filter
+ *
+ * @param packageNames the package names
+ * @return the filter
+ * @throws IllegalArgumentException for null packageNames
+ */
+ public static PackageClassFilter createPackageClassFilter(String... packageNames)
+ {
+ return PackageClassFilter.createPackageClassFilter(packageNames);
+ }
+
+ /**
+ * Create a new package class filter
+ *
+ * @param packageNames the package names
+ * @return the filter
+ * @throws IllegalArgumentException for null packageNames
+ */
+ public static PackageClassFilter createPackageClassFilter(List<String> packageNames)
+ {
+ return PackageClassFilter.createPackageClassFilter(packageNames);
+ }
+
+ /**
+ * Create a recursive package class filter<p>
+ *
+ * Creates the filter from a comma seperated list
+ *
+ * @param string the string
+ * @return the filter
+ */
+ public static RecursivePackageClassFilter createRecursivePackageClassFilterFromString(String string)
+ {
+ return RecursivePackageClassFilter.createRecursivePackageClassFilterFromString(string);
+ }
+
+ /**
+ * Create a new recursive package class filter
+ *
+ * @param packageNames the package names
+ * @return the filter
+ * @throws IllegalArgumentException for null packageNames
+ */
+ public static RecursivePackageClassFilter createRecursivePackageClassFilter(String... packageNames)
+ {
+ return RecursivePackageClassFilter.createRecursivePackageClassFilter(packageNames);
+ }
+
+ /**
+ * Create a new recursive package class filter
+ *
+ * @param packageNames the package names
+ * @return the filter
+ * @throws IllegalArgumentException for null packageNames
+ */
+ public static RecursivePackageClassFilter createRecursivePackageClassFilter(List<String> packageNames)
+ {
+ return RecursivePackageClassFilter.createRecursivePackageClassFilter(packageNames);
+ }
+}
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -53,7 +53,7 @@
*/
public FilteredDelegateLoader(ClassLoaderPolicy delegate)
{
- this(delegate, ClassFilter.EVERYTHING);
+ this(delegate, ClassFilterUtils.EVERYTHING);
}
/**
@@ -79,7 +79,7 @@
*/
public FilteredDelegateLoader(ClassLoaderPolicyFactory factory)
{
- this(factory, ClassFilter.EVERYTHING);
+ this(factory, ClassFilterUtils.EVERYTHING);
}
/**
@@ -115,7 +115,7 @@
protected void setFilter(ClassFilter filter)
{
if (filter == null)
- this.filter = ClassFilter.EVERYTHING;
+ this.filter = ClassFilterUtils.EVERYTHING;
else
this.filter = filter;
}
@@ -149,6 +149,7 @@
return null;
}
+ // FindBugs: The Set doesn't use equals/hashCode
public void getResources(String name, Set<URL> urls) throws IOException
{
boolean trace = log.isTraceEnabled();
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/LazyFilteredDelegateLoader.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/LazyFilteredDelegateLoader.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/spi/filter/LazyFilteredDelegateLoader.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -40,7 +40,7 @@
*/
public LazyFilteredDelegateLoader(ClassLoaderPolicyFactory factory)
{
- super(factory, ClassFilter.EVERYTHING);
+ super(factory, ClassFilterUtils.EVERYTHING);
}
@Override
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/test/support/IsolatedClassLoaderTestHelper.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/test/support/IsolatedClassLoaderTestHelper.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/test/support/IsolatedClassLoaderTestHelper.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -28,6 +28,7 @@
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
+import java.util.Arrays;
import junit.extensions.TestSetup;
import junit.framework.Test;
@@ -41,6 +42,7 @@
import org.jboss.classloader.spi.Loader;
import org.jboss.classloader.spi.ParentPolicy;
import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
import org.jboss.classloader.spi.filter.FilteredDelegateLoader;
import org.jboss.classloader.spi.filter.PackageClassFilter;
import org.jboss.logging.Logger;
@@ -164,8 +166,7 @@
MockClassLoaderPolicy policy = new MockClassLoaderPolicy();
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(clazz);
- for (Class<?> c : packages)
- classes.add(c);
+ classes.addAll(Arrays.asList(packages));
policy.setImportAll(importAll);
policy.setPathsAndPackageNames(classes.toArray(new Class[classes.size()]));
@@ -227,7 +228,7 @@
// The parent filter
PackageClassFilter filter = new PackageClassFilter(parentPackages);
filter.setIncludeJava(true);
- return initializeClassLoader(clazz, system, filter, ClassFilter.NOTHING, policy);
+ return initializeClassLoader(clazz, system, filter, ClassFilterUtils.NOTHING, policy);
}
/**
@@ -244,8 +245,7 @@
MockClassLoaderPolicy policy = new MockClassLoaderPolicy();
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(clazz);
- for (Class<?> c : packages)
- classes.add(c);
+ classes.addAll(Arrays.asList(packages));
policy.setImportAll(importAll);
policy.setPathsAndPackageNames(classes.toArray(new Class[classes.size()]));
return initializeClassLoader(clazz, parentFilter, policy);
@@ -281,7 +281,7 @@
PackageClassFilter filter = new PackageClassFilter(parentPkgs);
filter.setIncludeJava(true);
CombiningClassFilter beforeFilter = CombiningClassFilter.create(filter, parentFilter);
- ParentPolicy parentPolicy = new ParentPolicy(beforeFilter, ClassFilter.NOTHING);
+ ParentPolicy parentPolicy = new ParentPolicy(beforeFilter, ClassFilterUtils.NOTHING);
return initializeClassLoader(clazz, system, parentPolicy, policy);
}
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/test/support/MockClassLoaderPolicy.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/test/support/MockClassLoaderPolicy.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/main/java/org/jboss/classloader/test/support/MockClassLoaderPolicy.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -389,6 +389,7 @@
}
@Override
+ // FindBugs: The Set doesn't use equals/hashCode
public void getResources(String path, Set<URL> urls) throws IOException
{
if (paths == null)
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/ClassLoaderAllTestSuite.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/ClassLoaderAllTestSuite.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/ClassLoaderAllTestSuite.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -30,6 +30,7 @@
import org.jboss.test.classloader.filter.FilterTestSuite;
import org.jboss.test.classloader.jmx.JMXTestSuite;
import org.jboss.test.classloader.junit.JUnitTestSuite;
+import org.jboss.test.classloader.notifications.ClassLoaderNotificationsTestSuite;
import org.jboss.test.classloader.old.OldTestSuite;
import org.jboss.test.classloader.policy.test.ClassLoaderPolicyUnitTestCase;
import org.jboss.test.classloader.resources.ResourceTestSuite;
@@ -75,6 +76,7 @@
suite.addTest(JMXTestSuite.suite());
suite.addTest(JUnitTestSuite.suite());
suite.addTest(TransformTestSuite.suite());
+ suite.addTest(ClassLoaderNotificationsTestSuite.suite());
return suite;
}
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/delegate/test/DelegateLoaderUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/delegate/test/DelegateLoaderUnitTestCase.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/delegate/test/DelegateLoaderUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -26,7 +26,7 @@
import org.jboss.classloader.plugins.ClassLoaderUtils;
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloader.spi.DelegateLoader;
-import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
import org.jboss.classloader.spi.filter.FilteredDelegateLoader;
import org.jboss.classloader.spi.filter.LazyFilteredDelegateLoader;
import org.jboss.classloader.test.support.MockClassLoaderPolicy;
@@ -73,7 +73,7 @@
policy.setPathsAndPackageNames(TestA1.class);
system.registerClassLoaderPolicy(policy);
- FilteredDelegateLoader delegate = new FilteredDelegateLoader(policy, ClassFilter.NOTHING);
+ FilteredDelegateLoader delegate = new FilteredDelegateLoader(policy, ClassFilterUtils.NOTHING);
assertLoadClassFail(TestA1.class, delegate);
}
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/CustomParentLoaderUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/CustomParentLoaderUnitTestCase.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/CustomParentLoaderUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -23,18 +23,21 @@
import java.util.HashSet;
import java.util.Set;
+
import javax.management.MBeanRegistration;
import junit.framework.Test;
import org.jboss.classloader.plugins.ClassLoaderUtils;
+import org.jboss.classloader.spi.ClassFoundHandler;
import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderDomainMBean;
import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.ClassNotFoundHandler;
import org.jboss.classloader.spi.Loader;
import org.jboss.classloader.spi.ParentPolicy;
import org.jboss.classloader.spi.base.BaseClassLoaderDomain;
-import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
import org.jboss.classloader.test.support.MockClassLoaderPolicy;
import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
import org.jboss.test.classloader.domain.support.MockLoader;
@@ -118,7 +121,7 @@
ClassLoaderSystem system = createClassLoaderSystem();
MockLoader loader = new MockLoader();
NoMatchClassFilter filter = new NoMatchClassFilter(MockLoader.class);
- ParentPolicy parentPolicy = new ParentPolicy(filter, ClassFilter.NOTHING);
+ ParentPolicy parentPolicy = new ParentPolicy(filter, ClassFilterUtils.NOTHING);
ClassLoaderDomain domain = system.createAndRegisterDomain("test", parentPolicy, loader);
MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
@@ -158,7 +161,7 @@
ClassLoader classLoader = system.registerClassLoaderPolicy(domain, policy);
assertLoadClass(ClassLoaderDomain.class, classLoader);
- checkGetResource(loader, ClassLoaderDomain.class, BaseClassLoaderDomain.class, ClassLoaderDomainMBean.class, MBeanRegistration.class, Loader.class, Object.class);
+ checkGetResource(loader, ClassLoaderDomain.class, BaseClassLoaderDomain.class, ClassLoaderDomainMBean.class, MBeanRegistration.class, Loader.class, ClassNotFoundHandler.class, ClassFoundHandler.class, Object.class);
checkLoadClass(loader);
}
@@ -198,7 +201,7 @@
ClassLoaderSystem system = createClassLoaderSystem();
MockLoader loader = new MockLoader();
NoMatchClassFilter filter = new NoMatchClassFilter(MockLoader.class);
- ParentPolicy parentPolicy = new ParentPolicy(filter, ClassFilter.NOTHING);
+ ParentPolicy parentPolicy = new ParentPolicy(filter, ClassFilterUtils.NOTHING);
ClassLoaderDomain domain = system.createAndRegisterDomain("test", parentPolicy, loader);
domain.setUseLoadClassForParent(false);
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/HierarchicalParentClassLoaderUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/HierarchicalParentClassLoaderUnitTestCase.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/HierarchicalParentClassLoaderUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -28,7 +28,7 @@
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloader.spi.Loader;
import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
import org.jboss.classloader.test.support.MockClassLoaderPolicy;
import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
import org.jboss.test.classloader.domain.support.MockLoader;
@@ -142,7 +142,7 @@
{
ClassLoaderSystem system = createClassLoaderSystem();
NoMatchClassFilter filter = new NoMatchClassFilter(MockLoader.class);
- ParentPolicy pp = new ParentPolicy(filter, ClassFilter.NOTHING);
+ ParentPolicy pp = new ParentPolicy(filter, ClassFilterUtils.NOTHING);
ClassLoaderDomain parent = system.createAndRegisterDomain("parent", ParentPolicy.BEFORE_BUT_JAVA_ONLY);
MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy();
@@ -257,7 +257,7 @@
{
ClassLoaderSystem system = createClassLoaderSystem();
NoMatchClassFilter filter = new NoMatchClassFilter(MockLoader.class);
- ParentPolicy pp = new ParentPolicy(filter, ClassFilter.NOTHING);
+ ParentPolicy pp = new ParentPolicy(filter, ClassFilterUtils.NOTHING);
ClassLoaderDomain parent = system.createAndRegisterDomain("parent", ParentPolicy.BEFORE_BUT_JAVA_ONLY);
MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy();
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/HierarchicalParentLoaderUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/HierarchicalParentLoaderUnitTestCase.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/HierarchicalParentLoaderUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -27,7 +27,7 @@
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloader.spi.Loader;
import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
import org.jboss.classloader.test.support.MockClassLoaderPolicy;
import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
import org.jboss.test.classloader.domain.support.MockLoader;
@@ -128,7 +128,7 @@
{
ClassLoaderSystem system = createClassLoaderSystem();
NoMatchClassFilter filter = new NoMatchClassFilter(MockLoader.class);
- ParentPolicy pp = new ParentPolicy(filter, ClassFilter.NOTHING);
+ ParentPolicy pp = new ParentPolicy(filter, ClassFilterUtils.NOTHING);
ClassLoaderDomain parent = system.createAndRegisterDomain("parent", ParentPolicy.BEFORE_BUT_JAVA_ONLY);
ClassLoaderDomain child = system.createAndRegisterDomain("child", pp, parent);
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/ParentPolicyUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/ParentPolicyUnitTestCase.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/domain/test/ParentPolicyUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -28,7 +28,7 @@
import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
import org.jboss.classloader.spi.filter.PackageClassFilter;
import org.jboss.classloader.test.support.MockClassLoaderPolicy;
import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
@@ -198,7 +198,7 @@
{
ClassLoaderSystem system = createClassLoaderSystem();
NoMatchClassFilter filter = new NoMatchClassFilter(ClassLoaderDomain.class);
- ParentPolicy parentPolicy = new ParentPolicy(filter, ClassFilter.NOTHING);
+ ParentPolicy parentPolicy = new ParentPolicy(filter, ClassFilterUtils.NOTHING);
ClassLoaderDomain domain = system.createAndRegisterDomain("test", parentPolicy, null);
MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
@@ -215,7 +215,7 @@
{
ClassLoaderSystem system = createClassLoaderSystem();
MatchClassFilter filter = new MatchClassFilter(ClassLoaderDomain.class);
- ParentPolicy parentPolicy = new ParentPolicy(filter, ClassFilter.NOTHING);
+ ParentPolicy parentPolicy = new ParentPolicy(filter, ClassFilterUtils.NOTHING);
ClassLoaderDomain domain = system.createAndRegisterDomain("test", parentPolicy, null);
MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
@@ -232,7 +232,7 @@
{
ClassLoaderSystem system = createClassLoaderSystem();
NoMatchClassFilter filter = new NoMatchClassFilter(ClassLoaderDomain.class);
- ParentPolicy parentPolicy = new ParentPolicy(ClassFilter.JAVA_ONLY, filter);
+ ParentPolicy parentPolicy = new ParentPolicy(ClassFilterUtils.JAVA_ONLY, filter);
ClassLoaderDomain domain = system.createAndRegisterDomain("test", parentPolicy, null);
MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
@@ -249,7 +249,7 @@
{
ClassLoaderSystem system = createClassLoaderSystem();
NoMatchClassFilter filter = new NoMatchClassFilter(ClassLoaderDomain.class);
- ParentPolicy parentPolicy = new ParentPolicy(ClassFilter.JAVA_ONLY, filter);
+ ParentPolicy parentPolicy = new ParentPolicy(ClassFilterUtils.JAVA_ONLY, filter);
ClassLoaderDomain domain = system.createAndRegisterDomain("test", parentPolicy, null);
MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
@@ -264,7 +264,7 @@
{
ClassLoaderSystem system = createClassLoaderSystem();
MatchClassFilter filter = new MatchClassFilter(ClassLoaderDomain.class);
- ParentPolicy parentPolicy = new ParentPolicy(ClassFilter.JAVA_ONLY, filter);
+ ParentPolicy parentPolicy = new ParentPolicy(ClassFilterUtils.JAVA_ONLY, filter);
ClassLoaderDomain domain = system.createAndRegisterDomain("test", parentPolicy, null);
MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
@@ -279,7 +279,7 @@
public void testNoMatchBeforeAndAfter() throws Exception
{
ClassLoaderSystem system = createClassLoaderSystem();
- ParentPolicy parentPolicy = new ParentPolicy(ClassFilter.NOTHING, ClassFilter.NOTHING);
+ ParentPolicy parentPolicy = new ParentPolicy(ClassFilterUtils.NOTHING, ClassFilterUtils.NOTHING);
ClassLoaderDomain domain = system.createAndRegisterDomain("test", parentPolicy, null);
MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
ClassLoader classLoader = system.registerClassLoaderPolicy(domain, policy);
@@ -290,7 +290,7 @@
{
ClassLoaderSystem system = createClassLoaderSystem();
PackageClassFilter filter = PackageClassFilter.createPackageClassFilter("dummy");
- ParentPolicy parentPolicy = new ParentPolicy(filter, ClassFilter.NOTHING);
+ ParentPolicy parentPolicy = new ParentPolicy(filter, ClassFilterUtils.NOTHING);
ClassLoaderDomain domain = system.createAndRegisterDomain("test", parentPolicy, null);
MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
ClassLoader classLoader = system.registerClassLoaderPolicy(domain, policy);
@@ -302,7 +302,7 @@
ClassLoaderSystem system = createClassLoaderSystem();
PackageClassFilter filter = PackageClassFilter.createPackageClassFilter("dummy");
filter.setIncludeJava(true);
- ParentPolicy parentPolicy = new ParentPolicy(filter, ClassFilter.NOTHING);
+ ParentPolicy parentPolicy = new ParentPolicy(filter, ClassFilterUtils.NOTHING);
ClassLoaderDomain domain = system.createAndRegisterDomain("test", parentPolicy, null);
MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
ClassLoader classLoader = system.registerClassLoaderPolicy(domain, policy);
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/filter/test/FilterUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/filter/test/FilterUnitTestCase.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/filter/test/FilterUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -24,6 +24,7 @@
import junit.framework.Test;
import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
/**
@@ -46,7 +47,7 @@
public void testEverything() throws Exception
{
- ClassFilter filter = ClassFilter.EVERYTHING;
+ ClassFilter filter = ClassFilterUtils.EVERYTHING;
assertFilterMatchesClassName("gibberish", filter);
assertFilterMatchesClassName("", filter);
assertFilterMatchesClassName(null, filter);
@@ -60,7 +61,7 @@
public void testNothing() throws Exception
{
- ClassFilter filter = ClassFilter.NOTHING;
+ ClassFilter filter = ClassFilterUtils.NOTHING;
assertFilterNoMatchClassName("gibberish", filter);
assertFilterNoMatchClassName("", filter);
assertFilterNoMatchClassName(null, filter);
@@ -74,7 +75,7 @@
public void testJavaOnly() throws Exception
{
- ClassFilter filter = ClassFilter.JAVA_ONLY;
+ ClassFilter filter = ClassFilterUtils.JAVA_ONLY;
assertFilterMatchesClassName("java.x", filter);
assertFilterMatchesClassName("java.lang.Object", filter);
assertFilterMatchesClassName("java.lang.ref.Method", filter);
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications (from rev 98000, projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications)
Deleted: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/ClassLoaderNotificationsTestSuite.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/ClassLoaderNotificationsTestSuite.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/ClassLoaderNotificationsTestSuite.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,65 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, 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.test.classloader.notifications;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.jboss.test.classloader.notifications.test.ClassFoundHandlerUnitTestCase;
-import org.jboss.test.classloader.notifications.test.ClassLoaderEventHandlerUnitTestCase;
-import org.jboss.test.classloader.notifications.test.ClassNotFoundHandlerUnitTestCase;
-
-/**
- * Notifications Test Suite.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 37459 $
- */
-public class ClassLoaderNotificationsTestSuite extends TestSuite
-{
- /**
- * For running the testsuite from the command line
- *
- * @param args the command line args
- */
- public static void main(String[] args)
- {
- TestRunner.run(suite());
- }
-
- /**
- * Create the testsuite
- *
- * @return the testsuite
- */
- public static Test suite()
- {
- TestSuite suite = new TestSuite("Notifications Tests");
-
- suite.addTest(ClassLoaderEventHandlerUnitTestCase.suite());
- suite.addTest(ClassNotFoundHandlerUnitTestCase.suite());
- suite.addTest(ClassFoundHandlerUnitTestCase.suite());
-
- return suite;
- }
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/ClassLoaderNotificationsTestSuite.java (from rev 98000, projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/ClassLoaderNotificationsTestSuite.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/ClassLoaderNotificationsTestSuite.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/ClassLoaderNotificationsTestSuite.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,65 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.test.classloader.notifications;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+import org.jboss.test.classloader.notifications.test.ClassFoundHandlerUnitTestCase;
+import org.jboss.test.classloader.notifications.test.ClassLoaderEventHandlerUnitTestCase;
+import org.jboss.test.classloader.notifications.test.ClassNotFoundHandlerUnitTestCase;
+
+/**
+ * Notifications Test Suite.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 37459 $
+ */
+public class ClassLoaderNotificationsTestSuite extends TestSuite
+{
+ /**
+ * For running the testsuite from the command line
+ *
+ * @param args the command line args
+ */
+ public static void main(String[] args)
+ {
+ TestRunner.run(suite());
+ }
+
+ /**
+ * Create the testsuite
+ *
+ * @return the testsuite
+ */
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("Notifications Tests");
+
+ suite.addTest(ClassLoaderEventHandlerUnitTestCase.suite());
+ suite.addTest(ClassNotFoundHandlerUnitTestCase.suite());
+ suite.addTest(ClassFoundHandlerUnitTestCase.suite());
+
+ return suite;
+ }
+}
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support (from rev 98000, projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/support)
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a (from rev 98000, projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a)
Deleted: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a/A.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a/A.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a/A.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,32 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2009, 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.test.classloader.notifications.support.a;
-
-/**
- * A.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
-public class A
-{
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a/A.java (from rev 98000, projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a/A.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a/A.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/support/a/A.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.test.classloader.notifications.support.a;
+
+/**
+ * A.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class A
+{
+}
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test (from rev 98000, projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/test)
Deleted: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassFoundHandlerUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassFoundHandlerUnitTestCase.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassFoundHandlerUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,286 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, 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.test.classloader.notifications.test;
-
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import junit.framework.Test;
-
-import org.jboss.classloader.plugins.loader.ClassLoaderToLoaderAdapter;
-import org.jboss.classloader.spi.ClassFoundEvent;
-import org.jboss.classloader.spi.ClassFoundHandler;
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloader.test.support.MockClassLoaderPolicy;
-import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
-import org.jboss.test.classloader.notifications.support.a.A;
-
-/**
- * ClassFoundHnadlerUnitTestCase
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
-public class ClassFoundHandlerUnitTestCase extends AbstractClassLoaderTestWithSecurity implements ClassFoundHandler
-{
- public static Test suite()
- {
- return suite(ClassFoundHandlerUnitTestCase.class);
- }
-
- public ClassFoundHandlerUnitTestCase(String name)
- {
- super(name);
- }
-
- List<ClassFoundEvent> events = new CopyOnWriteArrayList<ClassFoundEvent>();
-
- public void classFound(ClassFoundEvent event)
- {
- events.add(event);
- }
-
- public void testClassFoundHandlerPolicy() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setPathsAndPackageNames(A.class);
- policy.addClassFoundHandler(this);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- assertLoadClass(A.class, cl);
- assertLoadClassNoEvent(A.class, cl);
- }
-
- public void testClassFoundHandlerDomain() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain domain = system.getDefaultDomain();
- domain.addClassFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setPathsAndPackageNames(A.class);
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- assertLoadClass(A.class, cl);
- assertLoadClassNoEvent(A.class, cl);
- }
-
- public void testClassFoundHandlerParentDomain() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
- ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, defaultDomain);
- defaultDomain.addClassFoundHandler(this);
-
- MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
- parentPolicy.setPathsAndPackageNames(A.class);
- ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- assertLoadClass(A.class, cl, parentCl);
- assertLoadClassNoEvent(A.class, cl, parentCl);
- }
-
- public void testClassFoundHandlerParentClassLoader() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
- defaultDomain.addClassFoundHandler(this);
-
- MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
- parentPolicy.setPathsAndPackageNames(A.class);
- ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
-
- ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, new ClassLoaderToLoaderAdapter(parentCl));
- domain.setUseLoadClassForParent(false);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- assertLoadClass(A.class, cl, parentCl);
- assertLoadClassNoEvent(A.class, cl, parentCl);
- }
-
- public void testClassFoundHandlerSystem() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- system.addClassFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setPathsAndPackageNames(A.class);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- assertLoadClass(A.class, cl);
- assertLoadClassNoEvent(A.class, cl);
- }
-
- public void testClassFoundHandlerPolicyNoEvent() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setPathsAndPackageNames(A.class);
- policy.addClassFoundHandler(this);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- assertLoadClassFail("does.not.exist.Class", cl);
- }
-
- public void testClassFoundHandlerDomainNoEvent() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain domain = system.getDefaultDomain();
- domain.addClassFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setPathsAndPackageNames(A.class);
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- assertLoadClassFail("does.not.exist.Class", cl);
- }
-
- public void testClassFoundHandlerParentDomainNoEvent() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
- ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, defaultDomain);
- defaultDomain.addClassFoundHandler(this);
-
- MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
- parentPolicy.setPathsAndPackageNames(A.class);
- system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- assertLoadClassFail("does.not.exist.Class", cl);
- }
-
- public void testClassFoundHandlerParentClassLoaderNoEvent() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
- defaultDomain.addClassFoundHandler(this);
-
- MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
- parentPolicy.setPathsAndPackageNames(A.class);
- ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
-
- ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, new ClassLoaderToLoaderAdapter(parentCl));
- domain.setUseLoadClassForParent(false);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- assertLoadClassFail("does.not.exist.Class", cl);
- }
-
- public void testClassFoundHandlerSystemNoEvent() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- system.addClassFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setPathsAndPackageNames(A.class);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- assertLoadClassFail("does.not.exist.Class", cl);
- }
-
- public void testClassFoundHandlerWrongPolicy() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setImportAll(true);
- policy.addClassFoundHandler(this);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
- a.setPathsAndPackageNames(A.class);
- ClassLoader clA = system.registerClassLoaderPolicy(a);
-
- assertLoadClassNoEvent(A.class, cl, clA);
- }
-
- public void testClassFoundHandlerDifferentPolicy() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setImportAll(true);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
- a.setPathsAndPackageNames(A.class);
- a.addClassFoundHandler(this);
- ClassLoader clA = system.registerClassLoaderPolicy(a);
-
- assertLoadClass(A.class, cl, clA);
- assertLoadClassNoEvent(A.class, cl, clA);
- }
-
- protected Class<?> assertLoadClassNoEvent(Class<?> reference, ClassLoader start)
- {
- return assertLoadClass(reference, start, start);
- }
-
- protected Class<?> assertLoadClassNoEvent(Class<?> reference, ClassLoader start, ClassLoader expected)
- {
- Class<?> result = super.assertLoadClass(reference, start, expected);
- assertNoEvent();
- return result;
- }
-
- protected Class<?> assertLoadClass(Class<?> reference, ClassLoader start, ClassLoader expected)
- {
- Class<?> result = super.assertLoadClass(reference, start, expected);
- assertEvent(reference.getName(), expected);
- return result;
- }
-
- protected void assertLoadClassFail(String name, ClassLoader start)
- {
- super.assertLoadClassFail(name, start);
- assertNoEvent();
- }
-
- protected void assertEvent(String name, ClassLoader expected)
- {
- assertTrue("Expected an event", events.isEmpty() == false);
- ClassFoundEvent event = events.remove(0);
- assertEquals(name, event.getClassName());
- assertEquals(expected, event.getClassLoader());
- assertEquals(expected, event.getSource());
- }
-
- protected void assertNoEvent()
- {
- assertTrue("Expected no events: " + events, events.isEmpty());
- }
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassFoundHandlerUnitTestCase.java (from rev 98000, projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassFoundHandlerUnitTestCase.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassFoundHandlerUnitTestCase.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassFoundHandlerUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,286 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.test.classloader.notifications.test;
+
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import junit.framework.Test;
+
+import org.jboss.classloader.plugins.loader.ClassLoaderToLoaderAdapter;
+import org.jboss.classloader.spi.ClassFoundEvent;
+import org.jboss.classloader.spi.ClassFoundHandler;
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.ParentPolicy;
+import org.jboss.classloader.test.support.MockClassLoaderPolicy;
+import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
+import org.jboss.test.classloader.notifications.support.a.A;
+
+/**
+ * ClassFoundHnadlerUnitTestCase
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassFoundHandlerUnitTestCase extends AbstractClassLoaderTestWithSecurity implements ClassFoundHandler
+{
+ public static Test suite()
+ {
+ return suite(ClassFoundHandlerUnitTestCase.class);
+ }
+
+ public ClassFoundHandlerUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ List<ClassFoundEvent> events = new CopyOnWriteArrayList<ClassFoundEvent>();
+
+ public void classFound(ClassFoundEvent event)
+ {
+ events.add(event);
+ }
+
+ public void testClassFoundHandlerPolicy() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setPathsAndPackageNames(A.class);
+ policy.addClassFoundHandler(this);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ assertLoadClass(A.class, cl);
+ assertLoadClassNoEvent(A.class, cl);
+ }
+
+ public void testClassFoundHandlerDomain() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain domain = system.getDefaultDomain();
+ domain.addClassFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setPathsAndPackageNames(A.class);
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ assertLoadClass(A.class, cl);
+ assertLoadClassNoEvent(A.class, cl);
+ }
+
+ public void testClassFoundHandlerParentDomain() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, defaultDomain);
+ defaultDomain.addClassFoundHandler(this);
+
+ MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
+ parentPolicy.setPathsAndPackageNames(A.class);
+ ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ assertLoadClass(A.class, cl, parentCl);
+ assertLoadClassNoEvent(A.class, cl, parentCl);
+ }
+
+ public void testClassFoundHandlerParentClassLoader() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+ defaultDomain.addClassFoundHandler(this);
+
+ MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
+ parentPolicy.setPathsAndPackageNames(A.class);
+ ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
+
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, new ClassLoaderToLoaderAdapter(parentCl));
+ domain.setUseLoadClassForParent(false);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ assertLoadClass(A.class, cl, parentCl);
+ assertLoadClassNoEvent(A.class, cl, parentCl);
+ }
+
+ public void testClassFoundHandlerSystem() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ system.addClassFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setPathsAndPackageNames(A.class);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ assertLoadClass(A.class, cl);
+ assertLoadClassNoEvent(A.class, cl);
+ }
+
+ public void testClassFoundHandlerPolicyNoEvent() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setPathsAndPackageNames(A.class);
+ policy.addClassFoundHandler(this);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ assertLoadClassFail("does.not.exist.Class", cl);
+ }
+
+ public void testClassFoundHandlerDomainNoEvent() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain domain = system.getDefaultDomain();
+ domain.addClassFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setPathsAndPackageNames(A.class);
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ assertLoadClassFail("does.not.exist.Class", cl);
+ }
+
+ public void testClassFoundHandlerParentDomainNoEvent() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, defaultDomain);
+ defaultDomain.addClassFoundHandler(this);
+
+ MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
+ parentPolicy.setPathsAndPackageNames(A.class);
+ system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ assertLoadClassFail("does.not.exist.Class", cl);
+ }
+
+ public void testClassFoundHandlerParentClassLoaderNoEvent() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+ defaultDomain.addClassFoundHandler(this);
+
+ MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
+ parentPolicy.setPathsAndPackageNames(A.class);
+ ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
+
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, new ClassLoaderToLoaderAdapter(parentCl));
+ domain.setUseLoadClassForParent(false);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ assertLoadClassFail("does.not.exist.Class", cl);
+ }
+
+ public void testClassFoundHandlerSystemNoEvent() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ system.addClassFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setPathsAndPackageNames(A.class);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ assertLoadClassFail("does.not.exist.Class", cl);
+ }
+
+ public void testClassFoundHandlerWrongPolicy() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setImportAll(true);
+ policy.addClassFoundHandler(this);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
+ a.setPathsAndPackageNames(A.class);
+ ClassLoader clA = system.registerClassLoaderPolicy(a);
+
+ assertLoadClassNoEvent(A.class, cl, clA);
+ }
+
+ public void testClassFoundHandlerDifferentPolicy() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setImportAll(true);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
+ a.setPathsAndPackageNames(A.class);
+ a.addClassFoundHandler(this);
+ ClassLoader clA = system.registerClassLoaderPolicy(a);
+
+ assertLoadClass(A.class, cl, clA);
+ assertLoadClassNoEvent(A.class, cl, clA);
+ }
+
+ protected Class<?> assertLoadClassNoEvent(Class<?> reference, ClassLoader start)
+ {
+ return assertLoadClass(reference, start, start);
+ }
+
+ protected Class<?> assertLoadClassNoEvent(Class<?> reference, ClassLoader start, ClassLoader expected)
+ {
+ Class<?> result = super.assertLoadClass(reference, start, expected);
+ assertNoEvent();
+ return result;
+ }
+
+ protected Class<?> assertLoadClass(Class<?> reference, ClassLoader start, ClassLoader expected)
+ {
+ Class<?> result = super.assertLoadClass(reference, start, expected);
+ assertEvent(reference.getName(), expected);
+ return result;
+ }
+
+ protected void assertLoadClassFail(String name, ClassLoader start)
+ {
+ super.assertLoadClassFail(name, start);
+ assertNoEvent();
+ }
+
+ protected void assertEvent(String name, ClassLoader expected)
+ {
+ assertTrue("Expected an event", events.isEmpty() == false);
+ ClassFoundEvent event = events.remove(0);
+ assertEquals(name, event.getClassName());
+ assertEquals(expected, event.getClassLoader());
+ assertEquals(expected, event.getSource());
+ }
+
+ protected void assertNoEvent()
+ {
+ assertTrue("Expected no events: " + events, events.isEmpty());
+ }
+}
Deleted: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassLoaderEventHandlerUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassLoaderEventHandlerUnitTestCase.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassLoaderEventHandlerUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,186 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, 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.test.classloader.notifications.test;
-
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import junit.framework.Test;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ClassLoaderEvent;
-import org.jboss.classloader.spi.ClassLoaderEventHandler;
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloader.test.support.MockClassLoaderPolicy;
-import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
-
-/**
- * ClassFoundHnadlerUnitTestCase
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
-public class ClassLoaderEventHandlerUnitTestCase extends AbstractClassLoaderTestWithSecurity implements ClassLoaderEventHandler
-{
- public static Test suite()
- {
- return suite(ClassLoaderEventHandlerUnitTestCase.class);
- }
-
- public ClassLoaderEventHandlerUnitTestCase(String name)
- {
- super(name);
- }
-
- List<ClassLoaderEvent> registered = new CopyOnWriteArrayList<ClassLoaderEvent>();
- List<ClassLoaderEvent> unregistered = new CopyOnWriteArrayList<ClassLoaderEvent>();
-
- public void fireRegisterClassLoader(ClassLoaderEvent event)
- {
- registered.add(event);
- }
-
- public void fireUnregisterClassLoader(ClassLoaderEvent event)
- {
- unregistered.add(event);
- }
-
- public void testClassLoaderEventDomain() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain domain = system.getDefaultDomain();
- domain.addClassLoaderEventHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- assertRegistered(domain, cl);
-
- system.unregisterClassLoader(cl);
- assertUnregistered(domain, cl);
- }
-
- public void testClassLoaderEventSystem() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain domain = system.getDefaultDomain();
- system.addClassLoaderEventHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- assertRegistered(domain, cl);
-
- system.unregisterClassLoader(cl);
- assertUnregistered(domain, cl);
- }
-
- public void testClassLoaderEventWrongDomain() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain domain1 = system.createAndRegisterDomain("Domain1");
- ClassLoaderDomain domain2 = system.createAndRegisterDomain("Domain2");
- domain1.addClassLoaderEventHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain2, policy);
-
- assertNoRegistered();
-
- system.unregisterClassLoader(cl);
- assertNoUnregistered();
- }
-
- public void testClassLoaderEventCorrectDomain() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- system.createAndRegisterDomain("Domain1");
- ClassLoaderDomain domain2 = system.createAndRegisterDomain("Domain2");
- domain2.addClassLoaderEventHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain2, policy);
-
- assertRegistered(domain2, cl);
-
- system.unregisterClassLoader(cl);
- assertUnregistered(domain2, cl);
- }
-
- public void testClassLoaderEventShutdownDomain() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain domain = system.getDefaultDomain();
- domain.addClassLoaderEventHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- assertRegistered(domain, cl);
-
- system.shutdown();
- assertUnregistered(domain, cl);
- }
-
- public void testClassLoaderEventShutdownSystem() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain domain = system.getDefaultDomain();
- system.addClassLoaderEventHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- assertRegistered(domain, cl);
-
- system.shutdown();
- assertUnregistered(domain, cl);
- }
-
- protected void assertRegistered(ClassLoaderDomain domain, ClassLoader expected)
- {
- assertTrue("Expected a registered", registered.isEmpty() == false);
- ClassLoaderEvent event = registered.remove(0);
- assertEquals(domain, event.getClassLoaderDomain());
- assertEquals(domain, event.getSource());
- assertEquals(expected, event.getClassLoader());
- }
-
- protected void assertNoRegistered()
- {
- assertTrue("Expected no registered: " + registered, registered.isEmpty());
- }
-
- protected void assertUnregistered(ClassLoaderDomain domain, ClassLoader expected)
- {
- assertTrue("Expected an unregistered", unregistered.isEmpty() == false);
- ClassLoaderEvent event = unregistered.remove(0);
- assertEquals(domain, event.getClassLoaderDomain());
- assertEquals(domain, event.getSource());
- assertEquals(expected, event.getClassLoader());
- }
-
- protected void assertNoUnregistered()
- {
- assertTrue("Expected no unregistered: " + unregistered, unregistered.isEmpty());
- }
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassLoaderEventHandlerUnitTestCase.java (from rev 98000, projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassLoaderEventHandlerUnitTestCase.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassLoaderEventHandlerUnitTestCase.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassLoaderEventHandlerUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,186 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.test.classloader.notifications.test;
+
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import junit.framework.Test;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderEvent;
+import org.jboss.classloader.spi.ClassLoaderEventHandler;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.test.support.MockClassLoaderPolicy;
+import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
+
+/**
+ * ClassFoundHnadlerUnitTestCase
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassLoaderEventHandlerUnitTestCase extends AbstractClassLoaderTestWithSecurity implements ClassLoaderEventHandler
+{
+ public static Test suite()
+ {
+ return suite(ClassLoaderEventHandlerUnitTestCase.class);
+ }
+
+ public ClassLoaderEventHandlerUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ List<ClassLoaderEvent> registered = new CopyOnWriteArrayList<ClassLoaderEvent>();
+ List<ClassLoaderEvent> unregistered = new CopyOnWriteArrayList<ClassLoaderEvent>();
+
+ public void fireRegisterClassLoader(ClassLoaderEvent event)
+ {
+ registered.add(event);
+ }
+
+ public void fireUnregisterClassLoader(ClassLoaderEvent event)
+ {
+ unregistered.add(event);
+ }
+
+ public void testClassLoaderEventDomain() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain domain = system.getDefaultDomain();
+ domain.addClassLoaderEventHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ assertRegistered(domain, cl);
+
+ system.unregisterClassLoader(cl);
+ assertUnregistered(domain, cl);
+ }
+
+ public void testClassLoaderEventSystem() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain domain = system.getDefaultDomain();
+ system.addClassLoaderEventHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ assertRegistered(domain, cl);
+
+ system.unregisterClassLoader(cl);
+ assertUnregistered(domain, cl);
+ }
+
+ public void testClassLoaderEventWrongDomain() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain domain1 = system.createAndRegisterDomain("Domain1");
+ ClassLoaderDomain domain2 = system.createAndRegisterDomain("Domain2");
+ domain1.addClassLoaderEventHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain2, policy);
+
+ assertNoRegistered();
+
+ system.unregisterClassLoader(cl);
+ assertNoUnregistered();
+ }
+
+ public void testClassLoaderEventCorrectDomain() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ system.createAndRegisterDomain("Domain1");
+ ClassLoaderDomain domain2 = system.createAndRegisterDomain("Domain2");
+ domain2.addClassLoaderEventHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain2, policy);
+
+ assertRegistered(domain2, cl);
+
+ system.unregisterClassLoader(cl);
+ assertUnregistered(domain2, cl);
+ }
+
+ public void testClassLoaderEventShutdownDomain() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain domain = system.getDefaultDomain();
+ domain.addClassLoaderEventHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ assertRegistered(domain, cl);
+
+ system.shutdown();
+ assertUnregistered(domain, cl);
+ }
+
+ public void testClassLoaderEventShutdownSystem() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain domain = system.getDefaultDomain();
+ system.addClassLoaderEventHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ assertRegistered(domain, cl);
+
+ system.shutdown();
+ assertUnregistered(domain, cl);
+ }
+
+ protected void assertRegistered(ClassLoaderDomain domain, ClassLoader expected)
+ {
+ assertTrue("Expected a registered", registered.isEmpty() == false);
+ ClassLoaderEvent event = registered.remove(0);
+ assertEquals(domain, event.getClassLoaderDomain());
+ assertEquals(domain, event.getSource());
+ assertEquals(expected, event.getClassLoader());
+ }
+
+ protected void assertNoRegistered()
+ {
+ assertTrue("Expected no registered: " + registered, registered.isEmpty());
+ }
+
+ protected void assertUnregistered(ClassLoaderDomain domain, ClassLoader expected)
+ {
+ assertTrue("Expected an unregistered", unregistered.isEmpty() == false);
+ ClassLoaderEvent event = unregistered.remove(0);
+ assertEquals(domain, event.getClassLoaderDomain());
+ assertEquals(domain, event.getSource());
+ assertEquals(expected, event.getClassLoader());
+ }
+
+ protected void assertNoUnregistered()
+ {
+ assertTrue("Expected no unregistered: " + unregistered, unregistered.isEmpty());
+ }
+}
Deleted: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassNotFoundHandlerUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassNotFoundHandlerUnitTestCase.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassNotFoundHandlerUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,484 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, 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.test.classloader.notifications.test;
-
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import junit.framework.Test;
-
-import org.jboss.classloader.plugins.ClassLoaderUtils;
-import org.jboss.classloader.plugins.loader.ClassLoaderToLoaderAdapter;
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ClassLoaderPolicy;
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloader.spi.ClassNotFoundEvent;
-import org.jboss.classloader.spi.ClassNotFoundHandler;
-import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloader.test.support.MockClassLoaderPolicy;
-import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
-import org.jboss.test.classloader.notifications.support.a.A;
-
-/**
- * ClassNotFoundHnadlerUnitTestCase
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
-public class ClassNotFoundHandlerUnitTestCase extends AbstractClassLoaderTestWithSecurity implements ClassNotFoundHandler
-{
- public static Test suite()
- {
- return suite(ClassNotFoundHandlerUnitTestCase.class);
- }
-
- public ClassNotFoundHandlerUnitTestCase(String name)
- {
- super(name);
- }
-
- List<ClassNotFoundEvent> events = new CopyOnWriteArrayList<ClassNotFoundEvent>();
-
- RegisterClassLoader runnable = null;
-
- public boolean classNotFound(ClassNotFoundEvent event)
- {
- events.add(event);
-
- if (runnable != null)
- {
- runnable.run();
- return true;
- }
- return false;
- }
-
- public void testClassNotFoundHandlerPolicy() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.addClassNotFoundHandler(this);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- assertLoadClassFail("does.not.exist.ClassName", cl);
- }
-
- public void testClassNotFoundHandlerDomain() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain domain = system.getDefaultDomain();
- domain.addClassNotFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- assertLoadClassFail("does.not.exist.ClassName", cl);
- }
-
- public void testClassNotFoundHandlerSystem() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- system.addClassNotFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- assertLoadClassFail("does.not.exist.ClassName", cl);
- }
-
- public void testClassNotFoundHandlerParentDomain() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
- ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, defaultDomain);
- domain.addClassNotFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- assertLoadClassFail("does.not.exist.ClassName", cl);
- }
-
- public void testClassNotFoundHandlerParentClassLoader() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
-
- MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
- parentPolicy.addClassNotFoundHandler(this);
- ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
-
- ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, new ClassLoaderToLoaderAdapter(parentCl));
- domain.setUseLoadClassForParent(false);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- assertLoadClassFail("does.not.exist.ClassName", cl);
- }
-
- public void testClassNotFoundHandlerPolicyNoEvent() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setImportAll(true);
- policy.addClassNotFoundHandler(this);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
- a.setPathsAndPackageNames(A.class);
- ClassLoader expected = system.registerClassLoaderPolicy(a);
-
- assertLoadClassNoEvent(A.class, cl, expected);
- }
-
- public void testClassNotFoundHandlerDomainNoEvent() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain domain = system.getDefaultDomain();
- domain.addClassNotFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setImportAll(true);
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
- a.setPathsAndPackageNames(A.class);
- ClassLoader expected = system.registerClassLoaderPolicy(a);
-
- assertLoadClassNoEvent(A.class, cl, expected);
- }
-
- public void testClassNotFoundHandlerParentDomainNoEvent() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
- ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, defaultDomain);
- domain.addClassNotFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
- a.setPathsAndPackageNames(A.class);
- ClassLoader expected = system.registerClassLoaderPolicy(a);
-
- assertLoadClassNoEvent(A.class, cl, expected);
- }
-
- public void testClassNotFoundHandlerParentClassLoaderNoEvent() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
-
- MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
- parentPolicy.setImportAll(true);
- parentPolicy.addClassNotFoundHandler(this);
- ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
-
- ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, new ClassLoaderToLoaderAdapter(parentCl));
- domain.setUseLoadClassForParent(false);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
- a.setPathsAndPackageNames(A.class);
- ClassLoader expected = system.registerClassLoaderPolicy(a);
-
- assertLoadClassNoEvent(A.class, cl, expected);
- }
-
- public void testClassNotFoundHandlerSystemNoEvent() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- system.addClassNotFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setImportAll(true);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
- a.setPathsAndPackageNames(A.class);
- ClassLoader expected = system.registerClassLoaderPolicy(a);
-
- assertLoadClassNoEvent(A.class, cl, expected);
- }
-
- public void testClassNotFoundHandlerPolicyResolved() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setImportAll(true);
- policy.addClassNotFoundHandler(this);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
- resolved.setPathsAndPackageNames(A.class);
- runnable = new RegisterClassLoader(system, null, resolved);
- assertLoadClass(A.class, cl, runnable);
- assertLoadClassNoEvent(A.class, cl, runnable.getClassLoader());
- }
-
- public void testClassNotFoundHandlerDomainResolved() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain domain = system.getDefaultDomain();
- domain.addClassNotFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setImportAll(true);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
- resolved.setPathsAndPackageNames(A.class);
- runnable = new RegisterClassLoader(system, domain, resolved);
- assertLoadClassFail("does.not.exist.ClassName", cl);
- assertLoadClassNoEvent(A.class, cl, runnable.getClassLoader());
- }
-
- public void testClassNotFoundHandlerParentDomainResolved() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
- ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, defaultDomain);
- domain.addClassNotFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
- resolved.setPathsAndPackageNames(A.class);
- runnable = new RegisterClassLoader(system, null, resolved);
- assertLoadClass(A.class, cl, runnable);
- assertLoadClassNoEvent(A.class, cl, runnable.getClassLoader());
- }
-
- public void testClassNotFoundHandlerParentClassLoaderResolved() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
-
- MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
- parentPolicy.setImportAll(true);
- parentPolicy.addClassNotFoundHandler(this);
- ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
-
- ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, new ClassLoaderToLoaderAdapter(parentCl));
- domain.setUseLoadClassForParent(false);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
- resolved.setPathsAndPackageNames(A.class);
- runnable = new RegisterClassLoader(system, null, resolved);
- assertLoadClass(A.class, cl, runnable);
- assertLoadClassNoEvent(A.class, cl, runnable.getClassLoader());
- }
-
- public void testClassNotFoundHandlerSystemResolved() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- system.addClassNotFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setImportAll(true);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
- resolved.setPathsAndPackageNames(A.class);
- runnable = new RegisterClassLoader(system, null, resolved);
- assertLoadClass(A.class, cl, runnable);
- assertLoadClassNoEvent(A.class, cl, runnable.getClassLoader());
- }
-
- public void testClassNotFoundHandlerPolicyNotResolved() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setImportAll(true);
- policy.addClassNotFoundHandler(this);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
- resolved.setPathsAndPackageNames(A.class);
- runnable = new RegisterClassLoader(system, null, resolved);
- assertLoadClassFail("does.not.exist.ClassName", cl);
- }
-
- public void testClassNotFoundHandlerDomainNotResolved() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain domain = system.getDefaultDomain();
- domain.addClassNotFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setImportAll(true);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
- resolved.setPathsAndPackageNames(A.class);
- runnable = new RegisterClassLoader(system, domain, resolved);
- assertLoadClassFail("does.not.exist.ClassName", cl);
- }
-
- public void testClassNotFoundHandlerParentDomainNotResolved() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
- ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, defaultDomain);
- domain.addClassNotFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
- resolved.setPathsAndPackageNames(A.class);
- runnable = new RegisterClassLoader(system, null, resolved);
- assertLoadClassFail("does.not.exist.ClassName", cl);
- }
-
- public void testClassNotFoundHandlerParentClassLoaderNotResolved() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
-
- MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
- parentPolicy.setImportAll(true);
- parentPolicy.addClassNotFoundHandler(this);
- ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
-
- ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, new ClassLoaderToLoaderAdapter(parentCl));
- domain.setUseLoadClassForParent(false);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
-
- MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
- resolved.setPathsAndPackageNames(A.class);
- runnable = new RegisterClassLoader(system, null, resolved);
- assertLoadClassFail("does.not.exist.ClassName", cl);
- }
-
- public void testClassNotFoundHandlerSystemNotResolved() throws Exception
- {
- ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
- system.addClassNotFoundHandler(this);
-
- MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
- policy.setImportAll(true);
- ClassLoader cl = system.registerClassLoaderPolicy(policy);
-
- MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
- resolved.setPathsAndPackageNames(A.class);
- runnable = new RegisterClassLoader(system, null, resolved);
- assertLoadClassFail("does.not.exist.ClassName", cl);
- }
-
- protected Class<?> assertLoadClassNoEvent(Class<?> reference, ClassLoader start, ClassLoader expected)
- {
- Class<?> result = assertLoadClass(reference, start, expected);
- assertNoEvent();
- return result;
- }
-
- protected Class<?> assertLoadClass(Class<?> reference, ClassLoader start, RegisterClassLoader runnable)
- {
- return assertLoadClass(reference, start, runnable, false);
- }
-
- protected Class<?> assertLoadClass(Class<?> reference, ClassLoader start, RegisterClassLoader runnable, boolean isReference)
- {
- String name = reference.getName();
- Class<?> result = null;
- try
- {
- result = start.loadClass(name);
- getLog().debug("Got class: " + ClassLoaderUtils.classToString(result) + " for " + name + " from " + start);
- }
- catch (ClassNotFoundException e)
- {
- failure("Did not expect CNFE for " + name + " from " + start, e);
- }
- assertClassLoader(result, runnable.getClassLoader());
- if (isReference)
- assertClassEquality(reference, result);
- else
- assertNoClassEquality(reference, result);
- assertEvent(name, start);
- return result;
- }
-
- protected void assertLoadClassFail(String name, ClassLoader start)
- {
- super.assertLoadClassFail(name, start);
- assertEvent(name, start);
- }
-
- protected void assertEvent(String name, ClassLoader start)
- {
- assertTrue("Expected an event", events.isEmpty() == false);
- ClassNotFoundEvent event = events.remove(0);
- assertEquals(name, event.getClassName());
- assertEquals(start, event.getClassLoader());
- assertEquals(start, event.getSource());
- }
-
- protected void assertNoEvent()
- {
- assertTrue("Expected no events: " + events, events.isEmpty());
- }
-
- class RegisterClassLoader implements Runnable
- {
- private ClassLoaderSystem system;
- private ClassLoaderDomain domain;
- private ClassLoaderPolicy policy;
- private ClassLoader classLoader;
-
- public RegisterClassLoader(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy)
- {
- this.system = system;
- if (domain == null)
- domain = system.getDefaultDomain();
- this.domain = domain;
- this.policy = policy;
- }
-
- public void run()
- {
- classLoader = system.registerClassLoaderPolicy(domain, policy);
- }
-
- public ClassLoader getClassLoader()
- {
- if (classLoader == null)
- throw new Error("No classloader registered");
- return classLoader;
- }
- }
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassNotFoundHandlerUnitTestCase.java (from rev 98000, projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassNotFoundHandlerUnitTestCase.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassNotFoundHandlerUnitTestCase.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/notifications/test/ClassNotFoundHandlerUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,484 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.test.classloader.notifications.test;
+
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import junit.framework.Test;
+
+import org.jboss.classloader.plugins.ClassLoaderUtils;
+import org.jboss.classloader.plugins.loader.ClassLoaderToLoaderAdapter;
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderPolicy;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.ClassNotFoundEvent;
+import org.jboss.classloader.spi.ClassNotFoundHandler;
+import org.jboss.classloader.spi.ParentPolicy;
+import org.jboss.classloader.test.support.MockClassLoaderPolicy;
+import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
+import org.jboss.test.classloader.notifications.support.a.A;
+
+/**
+ * ClassNotFoundHnadlerUnitTestCase
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassNotFoundHandlerUnitTestCase extends AbstractClassLoaderTestWithSecurity implements ClassNotFoundHandler
+{
+ public static Test suite()
+ {
+ return suite(ClassNotFoundHandlerUnitTestCase.class);
+ }
+
+ public ClassNotFoundHandlerUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ List<ClassNotFoundEvent> events = new CopyOnWriteArrayList<ClassNotFoundEvent>();
+
+ RegisterClassLoader runnable = null;
+
+ public boolean classNotFound(ClassNotFoundEvent event)
+ {
+ events.add(event);
+
+ if (runnable != null)
+ {
+ runnable.run();
+ return true;
+ }
+ return false;
+ }
+
+ public void testClassNotFoundHandlerPolicy() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.addClassNotFoundHandler(this);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ assertLoadClassFail("does.not.exist.ClassName", cl);
+ }
+
+ public void testClassNotFoundHandlerDomain() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain domain = system.getDefaultDomain();
+ domain.addClassNotFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ assertLoadClassFail("does.not.exist.ClassName", cl);
+ }
+
+ public void testClassNotFoundHandlerSystem() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ system.addClassNotFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ assertLoadClassFail("does.not.exist.ClassName", cl);
+ }
+
+ public void testClassNotFoundHandlerParentDomain() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, defaultDomain);
+ domain.addClassNotFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ assertLoadClassFail("does.not.exist.ClassName", cl);
+ }
+
+ public void testClassNotFoundHandlerParentClassLoader() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+
+ MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
+ parentPolicy.addClassNotFoundHandler(this);
+ ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
+
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, new ClassLoaderToLoaderAdapter(parentCl));
+ domain.setUseLoadClassForParent(false);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ assertLoadClassFail("does.not.exist.ClassName", cl);
+ }
+
+ public void testClassNotFoundHandlerPolicyNoEvent() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setImportAll(true);
+ policy.addClassNotFoundHandler(this);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
+ a.setPathsAndPackageNames(A.class);
+ ClassLoader expected = system.registerClassLoaderPolicy(a);
+
+ assertLoadClassNoEvent(A.class, cl, expected);
+ }
+
+ public void testClassNotFoundHandlerDomainNoEvent() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain domain = system.getDefaultDomain();
+ domain.addClassNotFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setImportAll(true);
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
+ a.setPathsAndPackageNames(A.class);
+ ClassLoader expected = system.registerClassLoaderPolicy(a);
+
+ assertLoadClassNoEvent(A.class, cl, expected);
+ }
+
+ public void testClassNotFoundHandlerParentDomainNoEvent() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, defaultDomain);
+ domain.addClassNotFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
+ a.setPathsAndPackageNames(A.class);
+ ClassLoader expected = system.registerClassLoaderPolicy(a);
+
+ assertLoadClassNoEvent(A.class, cl, expected);
+ }
+
+ public void testClassNotFoundHandlerParentClassLoaderNoEvent() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+
+ MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
+ parentPolicy.setImportAll(true);
+ parentPolicy.addClassNotFoundHandler(this);
+ ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
+
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, new ClassLoaderToLoaderAdapter(parentCl));
+ domain.setUseLoadClassForParent(false);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
+ a.setPathsAndPackageNames(A.class);
+ ClassLoader expected = system.registerClassLoaderPolicy(a);
+
+ assertLoadClassNoEvent(A.class, cl, expected);
+ }
+
+ public void testClassNotFoundHandlerSystemNoEvent() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ system.addClassNotFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setImportAll(true);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ MockClassLoaderPolicy a = createMockClassLoaderPolicy("a");
+ a.setPathsAndPackageNames(A.class);
+ ClassLoader expected = system.registerClassLoaderPolicy(a);
+
+ assertLoadClassNoEvent(A.class, cl, expected);
+ }
+
+ public void testClassNotFoundHandlerPolicyResolved() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setImportAll(true);
+ policy.addClassNotFoundHandler(this);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
+ resolved.setPathsAndPackageNames(A.class);
+ runnable = new RegisterClassLoader(system, null, resolved);
+ assertLoadClass(A.class, cl, runnable);
+ assertLoadClassNoEvent(A.class, cl, runnable.getClassLoader());
+ }
+
+ public void testClassNotFoundHandlerDomainResolved() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain domain = system.getDefaultDomain();
+ domain.addClassNotFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setImportAll(true);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
+ resolved.setPathsAndPackageNames(A.class);
+ runnable = new RegisterClassLoader(system, domain, resolved);
+ assertLoadClassFail("does.not.exist.ClassName", cl);
+ assertLoadClassNoEvent(A.class, cl, runnable.getClassLoader());
+ }
+
+ public void testClassNotFoundHandlerParentDomainResolved() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, defaultDomain);
+ domain.addClassNotFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
+ resolved.setPathsAndPackageNames(A.class);
+ runnable = new RegisterClassLoader(system, null, resolved);
+ assertLoadClass(A.class, cl, runnable);
+ assertLoadClassNoEvent(A.class, cl, runnable.getClassLoader());
+ }
+
+ public void testClassNotFoundHandlerParentClassLoaderResolved() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+
+ MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
+ parentPolicy.setImportAll(true);
+ parentPolicy.addClassNotFoundHandler(this);
+ ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
+
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, new ClassLoaderToLoaderAdapter(parentCl));
+ domain.setUseLoadClassForParent(false);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
+ resolved.setPathsAndPackageNames(A.class);
+ runnable = new RegisterClassLoader(system, null, resolved);
+ assertLoadClass(A.class, cl, runnable);
+ assertLoadClassNoEvent(A.class, cl, runnable.getClassLoader());
+ }
+
+ public void testClassNotFoundHandlerSystemResolved() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ system.addClassNotFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setImportAll(true);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
+ resolved.setPathsAndPackageNames(A.class);
+ runnable = new RegisterClassLoader(system, null, resolved);
+ assertLoadClass(A.class, cl, runnable);
+ assertLoadClassNoEvent(A.class, cl, runnable.getClassLoader());
+ }
+
+ public void testClassNotFoundHandlerPolicyNotResolved() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setImportAll(true);
+ policy.addClassNotFoundHandler(this);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
+ resolved.setPathsAndPackageNames(A.class);
+ runnable = new RegisterClassLoader(system, null, resolved);
+ assertLoadClassFail("does.not.exist.ClassName", cl);
+ }
+
+ public void testClassNotFoundHandlerDomainNotResolved() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain domain = system.getDefaultDomain();
+ domain.addClassNotFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setImportAll(true);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
+ resolved.setPathsAndPackageNames(A.class);
+ runnable = new RegisterClassLoader(system, domain, resolved);
+ assertLoadClassFail("does.not.exist.ClassName", cl);
+ }
+
+ public void testClassNotFoundHandlerParentDomainNotResolved() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, defaultDomain);
+ domain.addClassNotFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
+ resolved.setPathsAndPackageNames(A.class);
+ runnable = new RegisterClassLoader(system, null, resolved);
+ assertLoadClassFail("does.not.exist.ClassName", cl);
+ }
+
+ public void testClassNotFoundHandlerParentClassLoaderNotResolved() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+
+ MockClassLoaderPolicy parentPolicy = createMockClassLoaderPolicy("parent");
+ parentPolicy.setImportAll(true);
+ parentPolicy.addClassNotFoundHandler(this);
+ ClassLoader parentCl = system.registerClassLoaderPolicy(defaultDomain, parentPolicy);
+
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE, new ClassLoaderToLoaderAdapter(parentCl));
+ domain.setUseLoadClassForParent(false);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ ClassLoader cl = system.registerClassLoaderPolicy(domain, policy);
+
+ MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
+ resolved.setPathsAndPackageNames(A.class);
+ runnable = new RegisterClassLoader(system, null, resolved);
+ assertLoadClassFail("does.not.exist.ClassName", cl);
+ }
+
+ public void testClassNotFoundHandlerSystemNotResolved() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+ system.addClassNotFoundHandler(this);
+
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy("test");
+ policy.setImportAll(true);
+ ClassLoader cl = system.registerClassLoaderPolicy(policy);
+
+ MockClassLoaderPolicy resolved = createMockClassLoaderPolicy("a");
+ resolved.setPathsAndPackageNames(A.class);
+ runnable = new RegisterClassLoader(system, null, resolved);
+ assertLoadClassFail("does.not.exist.ClassName", cl);
+ }
+
+ protected Class<?> assertLoadClassNoEvent(Class<?> reference, ClassLoader start, ClassLoader expected)
+ {
+ Class<?> result = assertLoadClass(reference, start, expected);
+ assertNoEvent();
+ return result;
+ }
+
+ protected Class<?> assertLoadClass(Class<?> reference, ClassLoader start, RegisterClassLoader runnable)
+ {
+ return assertLoadClass(reference, start, runnable, false);
+ }
+
+ protected Class<?> assertLoadClass(Class<?> reference, ClassLoader start, RegisterClassLoader runnable, boolean isReference)
+ {
+ String name = reference.getName();
+ Class<?> result = null;
+ try
+ {
+ result = start.loadClass(name);
+ getLog().debug("Got class: " + ClassLoaderUtils.classToString(result) + " for " + name + " from " + start);
+ }
+ catch (ClassNotFoundException e)
+ {
+ failure("Did not expect CNFE for " + name + " from " + start, e);
+ }
+ assertClassLoader(result, runnable.getClassLoader());
+ if (isReference)
+ assertClassEquality(reference, result);
+ else
+ assertNoClassEquality(reference, result);
+ assertEvent(name, start);
+ return result;
+ }
+
+ protected void assertLoadClassFail(String name, ClassLoader start)
+ {
+ super.assertLoadClassFail(name, start);
+ assertEvent(name, start);
+ }
+
+ protected void assertEvent(String name, ClassLoader start)
+ {
+ assertTrue("Expected an event", events.isEmpty() == false);
+ ClassNotFoundEvent event = events.remove(0);
+ assertEquals(name, event.getClassName());
+ assertEquals(start, event.getClassLoader());
+ assertEquals(start, event.getSource());
+ }
+
+ protected void assertNoEvent()
+ {
+ assertTrue("Expected no events: " + events, events.isEmpty());
+ }
+
+ class RegisterClassLoader implements Runnable
+ {
+ private ClassLoaderSystem system;
+ private ClassLoaderDomain domain;
+ private ClassLoaderPolicy policy;
+ private ClassLoader classLoader;
+
+ public RegisterClassLoader(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy)
+ {
+ this.system = system;
+ if (domain == null)
+ domain = system.getDefaultDomain();
+ this.domain = domain;
+ this.policy = policy;
+ }
+
+ public void run()
+ {
+ classLoader = system.registerClassLoaderPolicy(domain, policy);
+ }
+
+ public ClassLoader getClassLoader()
+ {
+ if (classLoader == null)
+ throw new Error("No classloader registered");
+ return classLoader;
+ }
+ }
+}
Modified: projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/policy/test/ClassLoaderPolicyUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/policy/test/ClassLoaderPolicyUnitTestCase.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloader/src/test/java/org/jboss/test/classloader/policy/test/ClassLoaderPolicyUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -36,7 +36,7 @@
import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
import org.jboss.classloader.spi.filter.FilteredDelegateLoader;
import org.jboss.classloader.test.support.MockClassLoaderPolicy;
import org.jboss.test.classloader.AbstractClassLoaderTest;
@@ -122,7 +122,7 @@
{
ClassLoaderSystem system = createClassLoaderSystem();
// Hide java
- ParentPolicy parentPolicy = new ParentPolicy(ClassFilter.NOTHING, ClassFilter.NOTHING);
+ ParentPolicy parentPolicy = new ParentPolicy(ClassFilterUtils.NOTHING, ClassFilterUtils.NOTHING);
ClassLoaderDomain domain = system.createAndRegisterDomain("test", parentPolicy);
TestClassLoaderPolicy policy = new TestClassLoaderPolicy();
ClassLoader classLoader = system.registerClassLoaderPolicy(domain, policy);
Modified: projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoading.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoading.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoading.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -26,6 +26,7 @@
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloading.spi.metadata.Capability;
@@ -39,7 +40,7 @@
* @author <a href="ales.justin at jboss.org">Ales Justin</a>
* @version $Revision: 1.1 $
*/
-public class ClassLoading
+public class ClassLoading implements Resolver
{
/** The log */
private static final Logger log = Logger.getLogger(ClassLoading.class);
@@ -56,6 +57,9 @@
/** The module registries */
private final Set<ModuleRegistry> moduleRegistries = new ConcurrentSet<ModuleRegistry>();
+ /** The resolvers */
+ private List<Resolver> resolvers = null;
+
/**
* Add a module
*
@@ -151,7 +155,59 @@
globalCapabilitiesProviders.remove(provider);
}
+
+ /**
+ * Add a resolver
+ *
+ * @param resolver the resolver
+ */
+ public void addResolver(Resolver resolver)
+ {
+ if (resolver == null)
+ throw new IllegalArgumentException("Null resolver");
+
+ if (resolvers == null)
+ resolvers = new CopyOnWriteArrayList<Resolver>();
+
+ resolvers.add(resolver);
+ }
+
+ /**
+ * Remove a resolver
+ *
+ * @param resolver the resolver
+ */
+ public void removeResolver(Resolver resolver)
+ {
+ if (resolver == null)
+ throw new IllegalArgumentException("Null resolver");
+
+ if (resolvers == null)
+ return;
+
+ resolvers.remove(resolver);
+ }
+ public boolean resolve(ResolutionContext context)
+ {
+ if (resolvers != null && resolvers.isEmpty() == false)
+ {
+ for (Resolver resolver : resolvers)
+ {
+ try
+ {
+ if (resolver.resolve(context))
+ return true;
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error in resolver: " + resolver + " context=" + context, t);
+ }
+ }
+ }
+ return false;
+ }
+
/**
* Get or create the domain
*
Modified: projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/Domain.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/Domain.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/Domain.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -60,7 +60,7 @@
/** The registered modules by name */
private Map<String, Module> modulesByName = new ConcurrentHashMap<String, Module>();
-
+
/**
* Create a new Domain.
*
@@ -218,7 +218,7 @@
{
return classLoading.mergeGlobalCapabilities(capabilities);
}
-
+
/**
* Resolve a requirement to a module
*
@@ -228,6 +228,35 @@
*/
protected Module resolveModule(Module module, Requirement requirement)
{
+ // Try to resolve the module
+ Module result = doResolveModule(module, requirement);
+ if (result == null)
+ {
+ // If we have resolvers, try again if they find it
+ if (classLoading.resolve(new ResolutionContext(this, module, requirement)))
+ result = doResolveModule(module, requirement);
+ }
+
+ // If there is a result, check to see whether we need to resolve it
+ if (result != null)
+ {
+ LifeCycle lifeCycle = result.getLifeCycle();
+ if (lifeCycle != null && lifeCycle.isLazyResolve() && lifeCycle.isResolved() == false)
+ lifeCycle.doResolve();
+ }
+
+ return result;
+ }
+
+ /**
+ * Resolve a requirement to a module
+ *
+ * @param module the module
+ * @param requirement the requirement
+ * @return the resolved name or null if not resolved
+ */
+ protected Module doResolveModule(Module module, Requirement requirement)
+ {
// First check the parent domain has been setup
Domain parentDomain = null;
if (parentDomainName != null)
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/LifeCycle.java (from rev 98000, projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/LifeCycle.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/LifeCycle.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/LifeCycle.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,310 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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 org.jboss.classloader.spi.ClassFoundEvent;
+import org.jboss.classloader.spi.ClassFoundHandler;
+import org.jboss.classloader.spi.ClassLoaderPolicy;
+import org.jboss.classloading.spi.dependency.policy.ClassLoaderPolicyModule;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.ControllerStateModel;
+import org.jboss.logging.Logger;
+
+/**
+ * Lifecycle.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class LifeCycle
+{
+ /** The log */
+ private static final Logger log = Logger.getLogger(LifeCycle.class);
+
+ /** The module associated with this lifecycle */
+ private Module module;
+
+ /** Any lazy start handler */
+ private LazyStartHandler lazyStart;
+
+ /** Whether we are already in the lifecycle */
+ // TODO FIX THIS IN THE MC?
+ private boolean lifeCycle = false;
+
+ /**
+ * Create a new LifeCycle.
+ *
+ * @param module the module associated with the lifecycle
+ */
+ public LifeCycle(Module module)
+ {
+ if (module == null)
+ throw new IllegalArgumentException("Null module");
+ this.module = module;
+ }
+
+ /**
+ * Get the module.
+ *
+ * @return the module.
+ */
+ public Module getModule()
+ {
+ return module;
+ }
+
+ /**
+ * Whether the module is resolved
+ *
+ * @return true when resolved
+ */
+ public boolean isResolved()
+ {
+ return module.getClassLoader() != null;
+ }
+
+ /**
+ * Whether the context associated with the classloader is lazy resolve,
+ * i.e. the resolve method will be invoked the context is needed
+ *
+ * @return true if it is lazy resolve
+ */
+ public boolean isLazyResolve()
+ {
+ return false;
+ }
+
+ /**
+ * Resolve the classloader
+ */
+ void doResolve()
+ {
+ if (lifeCycle == false)
+ {
+ lifeCycle = true;
+ try
+ {
+ resolve();
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error in resolve: " + this, t);
+ }
+ finally
+ {
+ lifeCycle = false;
+ }
+ }
+ }
+
+ /**
+ * Resolve the classloader
+ */
+ public void resolve()
+ {
+ }
+
+ /**
+ * Unresolve the classloader
+ */
+ public void unresolve()
+ {
+ }
+
+ /**
+ * Fired when the classloader is resolved
+ */
+ public void resolved()
+ {
+ }
+
+ /**
+ * Fired when the classloader is unresolved
+ */
+ public void unresolved()
+ {
+ }
+
+ /**
+ * Whether the module is started
+ *
+ * @return true when started
+ */
+ public boolean isStarted()
+ {
+ ControllerContext context = module.getControllerContext();
+ if (context == null)
+ return false;
+
+ Controller controller = context.getController();
+ ControllerStateModel model = controller.getStates();
+ return model.isBeforeState(context.getState(), ControllerState.INSTALLED) == false;
+ }
+
+ /**
+ * Start the context associated with the classloader
+ */
+ void doStart()
+ {
+ if (lifeCycle == false)
+ {
+ lifeCycle = true;
+ try
+ {
+ start();
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error in start: " + this, t);
+ }
+ finally
+ {
+ lifeCycle = false;
+ }
+ }
+ }
+
+ /**
+ * Start the context associated with the classloader
+ */
+ public void start()
+ {
+ }
+
+ /**
+ * Stop the context associated with the classloader
+ */
+ void doStop()
+ {
+ if (lifeCycle == false)
+ {
+ lifeCycle = true;
+ try
+ {
+ start();
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error in stop: " + this, t);
+ }
+ finally
+ {
+ lifeCycle = false;
+ }
+ }
+ }
+
+ /**
+ * Stop the context associated with the classloader
+ */
+ public void stop()
+ {
+ }
+
+ /**
+ * Whether the context associated with the classloader is lazy start,
+ * i.e. the start method will be invoked on first class load
+ *
+ * @return true if it is lazy start
+ */
+ public boolean isLazyStart()
+ {
+ return false;
+ }
+
+ /**
+ * Setup lazy start
+ */
+ protected void setUpLazyStart()
+ {
+ if (isStarted())
+ return;
+ if (module instanceof ClassLoaderPolicyModule)
+ {
+ ClassLoaderPolicy policy = ((ClassLoaderPolicyModule) module).getPolicy();
+ lazyStart = new LazyStartHandler(policy);
+ }
+ else
+ {
+ throw new IllegalStateException("Cannot do lazy start for " + module);
+ }
+ }
+
+ /**
+ * Remove lazy start
+ */
+ protected void removeLazyStart()
+ {
+ if (lazyStart == null)
+ return;
+
+ lazyStart.cleanup();
+ lazyStart = null;
+ }
+
+ void fireResolved()
+ {
+ if (isLazyStart())
+ setUpLazyStart();
+ resolved();
+ }
+
+ void fireUnresolved()
+ {
+ removeLazyStart();
+ unresolved();
+ }
+
+ @Override
+ public String toString()
+ {
+ return getClass().getName() + "{" + getModule() + "}";
+ }
+
+ /**
+ * LazyStartHandler.
+ */
+ private class LazyStartHandler implements ClassFoundHandler
+ {
+ ClassLoaderPolicy policy;
+
+ public LazyStartHandler(ClassLoaderPolicy policy)
+ {
+ this.policy = policy;
+ policy.addClassFoundHandler(this);
+ }
+
+ public void classFound(ClassFoundEvent event)
+ {
+ removeLazyStart();
+ if (isStarted() == false)
+ start();
+ }
+
+ public void cleanup()
+ {
+ policy.removeClassFoundHandler(this);
+ }
+ }
+}
Modified: projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -67,7 +67,7 @@
*/
public abstract class Module extends NameAndVersionSupport
{
- /** The serialVersionUID - not really serializable */
+ /** The serialVersionUID */
private static final long serialVersionUID = 1L;
/** The modules by classloader */
@@ -93,6 +93,9 @@
/** The requirements */
private List<RequirementDependencyItem> requirementDependencies;
+
+ /** Any lifecycle associated with the classloader */
+ private LifeCycle lifeCycle;
/**
* Register a classloader for a module
@@ -109,6 +112,10 @@
throw new IllegalArgumentException("Null classloader");
modulesByClassLoader.put(classLoader, module);
+
+ LifeCycle lifeCycle = module.getLifeCycle();
+ if (lifeCycle != null)
+ lifeCycle.fireResolved();
}
/**
@@ -126,6 +133,10 @@
throw new IllegalArgumentException("Null classloader");
modulesByClassLoader.remove(classLoader);
+
+ LifeCycle lifeCycle = module.getLifeCycle();
+ if (lifeCycle != null)
+ lifeCycle.fireUnresolved();
}
/**
@@ -368,6 +379,28 @@
}
/**
+ * Get the lifecycle.
+ *
+ * @return the lifecycle.
+ */
+ public LifeCycle getLifeCycle()
+ {
+ return lifeCycle;
+ }
+
+ /**
+ * Set the lifeCycle.
+ *
+ * @param lifeCycle the lifeCycle.
+ */
+ public void setLifeCycle(LifeCycle lifeCycle)
+ {
+ if (lifeCycle != null && lifeCycle.getModule() != this)
+ throw new IllegalArgumentException("Cannot setLifeCycle on module " + this + " it is associated with a different module: " + lifeCycle.getModule());
+ this.lifeCycle = lifeCycle;
+ }
+
+ /**
* Find the module for a classloader
*
* @param cl the classloader
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/ResolutionContext.java (from rev 98000, projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/ResolutionContext.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/ResolutionContext.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/ResolutionContext.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,98 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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 org.jboss.classloading.spi.metadata.Requirement;
+
+/**
+ * ResolutionContext.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ResolutionContext
+{
+ /** The domain */
+ private Domain domain;
+
+ /** The module */
+ private Module module;
+
+ /** The requirement */
+ private Requirement requirement;
+
+ /**
+ * Create a new ResolutionContext.
+ *
+ * @param domain the domain
+ * @param module the module
+ * @param requirement the requirement
+ */
+ public ResolutionContext(Domain domain, Module module, Requirement requirement)
+ {
+ this.domain = domain;
+ this.module = module;
+ this.requirement = requirement;
+ }
+
+ /**
+ * Get the domain.
+ *
+ * @return the domain.
+ */
+ public Domain getDomain()
+ {
+ return domain;
+ }
+
+ /**
+ * Get the module.
+ *
+ * @return the module.
+ */
+ public Module getModule()
+ {
+ return module;
+ }
+
+ /**
+ * Get the requirement.
+ *
+ * @return the requirement.
+ */
+ public Requirement getRequirement()
+ {
+ return requirement;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append(getClass().getSimpleName());
+ builder.append("{domain=").append(domain);
+ builder.append(" module=").append(module);
+ builder.append(" requirement=").append(requirement);
+ builder.append('}');
+ return builder.toString();
+ }
+}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/Resolver.java (from rev 98000, projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Resolver.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/Resolver.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/Resolver.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,39 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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;
+
+/**
+ * Resolver.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface Resolver
+{
+ /**
+ * Resolve a requirement
+ *
+ * @param context the resolution context
+ * @return true when resolved
+ */
+ boolean resolve(ResolutionContext context);
+}
Modified: projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/dependency/policy/ClassLoaderPolicyModule.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -213,6 +213,12 @@
return policy;
}
+ /**
+ * Remove classloader.
+ *
+ * Unregister policy from the system
+ * and remove tha actual classloader from module.
+ */
public void removeClassLoader()
{
if (system != null && policy != null)
Modified: projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingMetaData.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingMetaData.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingMetaData.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -51,6 +51,9 @@
/** The parent domain */
private String parentDomain;
+ /** Whether to make a subdeployment classloader a top-level classloader */
+ private boolean topLevelClassLoader = false;
+
/** Whether to enforce j2se classloading compliance */
private boolean j2seClassLoadingCompliance = true;
@@ -135,6 +138,28 @@
}
/**
+ * Get the topLevelClassLoader.
+ *
+ * @return the topLevelClassLoader.
+ */
+ public boolean isTopLevelClassLoader()
+ {
+ return topLevelClassLoader;
+ }
+
+ /**
+ * Set the topLevelClassLoader.
+ *
+ * @param topLevelClassLoader the topLevelClassLoader.
+ */
+ @ManagementProperty
+ @XmlAttribute(name="top-level-classloader")
+ public void setTopLevelClassLoader(boolean topLevelClassLoader)
+ {
+ this.topLevelClassLoader = topLevelClassLoader;
+ }
+
+ /**
* Get the exportAll.
*
* @return the exportAll.
Modified: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/ClassLoadingAllTestSuite.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/ClassLoadingAllTestSuite.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/ClassLoadingAllTestSuite.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -26,7 +26,9 @@
import junit.textui.TestRunner;
import org.jboss.test.classloading.dependency.DependencyTestSuite;
+import org.jboss.test.classloading.lifecycle.LifeCycleTestSuite;
import org.jboss.test.classloading.metadata.MetaDataTestSuite;
+import org.jboss.test.classloading.resolver.ResolverTestSuite;
import org.jboss.test.classloading.version.VersionTestSuite;
/**
@@ -59,6 +61,8 @@
suite.addTest(VersionTestSuite.suite());
suite.addTest(MetaDataTestSuite.suite());
suite.addTest(DependencyTestSuite.suite());
+ suite.addTest(LifeCycleTestSuite.suite());
+ suite.addTest(ResolverTestSuite.suite());
return suite;
}
Modified: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/dependency/test/AbstractMockClassLoaderUnitTest.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/dependency/test/AbstractMockClassLoaderUnitTest.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/dependency/test/AbstractMockClassLoaderUnitTest.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -31,6 +31,7 @@
import org.jboss.classloading.spi.dependency.ClassLoading;
import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoaderPolicyModule;
import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
+import org.jboss.dependency.spi.ControllerContext;
import org.jboss.dependency.spi.ControllerState;
import org.jboss.dependency.spi.ControllerStateModel;
import org.jboss.kernel.Kernel;
@@ -61,6 +62,13 @@
{
super(name);
}
+
+ protected <T> T getBean(Object name, Class<T> expected)
+ {
+ ControllerContext context = controller.getInstalledContext(name);
+ assertNotNull("Context should be found: " + name, context);
+ return assertInstanceOf(context.getTarget(), expected);
+ }
protected ClassLoader assertClassLoader(KernelControllerContext context) throws Exception
{
Modified: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/dependency/test/MockClassLoadingMetaDataUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/dependency/test/MockClassLoadingMetaDataUnitTestCase.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/dependency/test/MockClassLoadingMetaDataUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -28,7 +28,7 @@
import junit.framework.Test;
import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoaderPolicyModule;
import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
import org.jboss.classloading.spi.metadata.Capability;
@@ -159,12 +159,12 @@
public void testIncluded() throws Exception
{
MockClassLoadingMetaData a = new MockClassLoadingMetaData("a");
- a.setIncluded(ClassFilter.JAVA_ONLY);
+ a.setIncluded(ClassFilterUtils.JAVA_ONLY);
KernelControllerContext contextA = install(a);
try
{
MockClassLoaderPolicyModule module = assertModule(contextA);
- assertEquals(ClassFilter.JAVA_ONLY, module.getIncluded());
+ assertEquals(ClassFilterUtils.JAVA_ONLY, module.getIncluded());
}
finally
{
@@ -176,12 +176,12 @@
public void testExcluded() throws Exception
{
MockClassLoadingMetaData a = new MockClassLoadingMetaData("a");
- a.setExcluded(ClassFilter.JAVA_ONLY);
+ a.setExcluded(ClassFilterUtils.JAVA_ONLY);
KernelControllerContext contextA = install(a);
try
{
MockClassLoaderPolicyModule module = assertModule(contextA);
- assertEquals(ClassFilter.JAVA_ONLY, module.getExcluded());
+ assertEquals(ClassFilterUtils.JAVA_ONLY, module.getExcluded());
}
finally
{
@@ -193,12 +193,12 @@
public void testExcludedExport() throws Exception
{
MockClassLoadingMetaData a = new MockClassLoadingMetaData("a");
- a.setExcludedExport(ClassFilter.JAVA_ONLY);
+ a.setExcludedExport(ClassFilterUtils.JAVA_ONLY);
KernelControllerContext contextA = install(a);
try
{
MockClassLoaderPolicyModule module = assertModule(contextA);
- assertEquals(ClassFilter.JAVA_ONLY, module.getExcludedExport());
+ assertEquals(ClassFilterUtils.JAVA_ONLY, module.getExcludedExport());
}
finally
{
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle)
Deleted: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/LifeCycleTestSuite.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/LifeCycleTestSuite.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/LifeCycleTestSuite.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,61 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, 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.test.classloading.lifecycle;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.jboss.test.classloading.lifecycle.test.LifeCycleUnitTestCase;
-
-/**
- * LifeCycle Test Suite.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 37459 $
- */
-public class LifeCycleTestSuite extends TestSuite
-{
- /**
- * For running the testsuite from the command line
- *
- * @param args the command line args
- */
- public static void main(String[] args)
- {
- TestRunner.run(suite());
- }
-
- /**
- * Create the testsuite
- *
- * @return the testsuite
- */
- public static Test suite()
- {
- TestSuite suite = new TestSuite("LifeCycle Tests");
-
- suite.addTest(LifeCycleUnitTestCase.suite());
-
- return suite;
- }
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/LifeCycleTestSuite.java (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/LifeCycleTestSuite.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/LifeCycleTestSuite.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/LifeCycleTestSuite.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.test.classloading.lifecycle;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+import org.jboss.test.classloading.lifecycle.test.LifeCycleUnitTestCase;
+
+/**
+ * LifeCycle Test Suite.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 37459 $
+ */
+public class LifeCycleTestSuite extends TestSuite
+{
+ /**
+ * For running the testsuite from the command line
+ *
+ * @param args the command line args
+ */
+ public static void main(String[] args)
+ {
+ TestRunner.run(suite());
+ }
+
+ /**
+ * Create the testsuite
+ *
+ * @return the testsuite
+ */
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("LifeCycle Tests");
+
+ suite.addTest(LifeCycleUnitTestCase.suite());
+
+ return suite;
+ }
+}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support)
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a)
Deleted: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/A.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/A.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/A.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,32 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2009, 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.test.classloading.lifecycle.support.a;
-
-/**
- * A.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
-public class A
-{
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/A.java (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/A.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/A.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/A.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.test.classloading.lifecycle.support.a;
+
+/**
+ * A.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class A
+{
+}
Deleted: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycle.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycle.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycle.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,113 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2009, 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.test.classloading.lifecycle.support.a;
-
-import org.jboss.classloading.spi.dependency.LifeCycle;
-import org.jboss.classloading.spi.dependency.Module;
-
-/**
- * MockLifeCycle.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
-public class MockLifeCycle extends LifeCycle
-{
- public boolean gotResolved = false;
- public boolean gotUnresolved = false;
- public boolean gotResolve = false;
- public boolean gotUnresolve = false;
- public boolean gotStart= false;
- public boolean gotStop = false;
-
- public boolean lazyResolve = false;
- public boolean lazyStart = false;
-
- public MockLifeCycle(Module module)
- {
- super(module);
- }
-
- public MockLifeCycleClassLoaderPolicyModule getModule()
- {
- return (MockLifeCycleClassLoaderPolicyModule) super.getModule();
- }
-
- public void resetFlags()
- {
- gotResolved = false;
- gotUnresolved = false;
- gotResolve = false;
- gotUnresolve = false;
- gotStart = false;
- gotStop = false;
- }
-
- @Override
- public void resolve()
- {
- gotResolve = true;
- getModule().resolveIt();
- }
-
- @Override
- public void resolved()
- {
- gotResolved = true;
- }
-
- @Override
- public void start()
- {
- gotStart = true;
- }
-
- @Override
- public void stop()
- {
- gotStop = true;
- }
-
- @Override
- public void unresolve()
- {
- gotUnresolve = true;
- }
-
- @Override
- public void unresolved()
- {
- gotUnresolved = true;
- }
-
- @Override
- public boolean isLazyResolve()
- {
- return lazyResolve;
- }
-
- @Override
- public boolean isLazyStart()
- {
- return lazyStart;
- }
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycle.java (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycle.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycle.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycle.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,113 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.test.classloading.lifecycle.support.a;
+
+import org.jboss.classloading.spi.dependency.LifeCycle;
+import org.jboss.classloading.spi.dependency.Module;
+
+/**
+ * MockLifeCycle.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class MockLifeCycle extends LifeCycle
+{
+ public boolean gotResolved = false;
+ public boolean gotUnresolved = false;
+ public boolean gotResolve = false;
+ public boolean gotUnresolve = false;
+ public boolean gotStart= false;
+ public boolean gotStop = false;
+
+ public boolean lazyResolve = false;
+ public boolean lazyStart = false;
+
+ public MockLifeCycle(Module module)
+ {
+ super(module);
+ }
+
+ public MockLifeCycleClassLoaderPolicyModule getModule()
+ {
+ return (MockLifeCycleClassLoaderPolicyModule) super.getModule();
+ }
+
+ public void resetFlags()
+ {
+ gotResolved = false;
+ gotUnresolved = false;
+ gotResolve = false;
+ gotUnresolve = false;
+ gotStart = false;
+ gotStop = false;
+ }
+
+ @Override
+ public void resolve()
+ {
+ gotResolve = true;
+ getModule().resolveIt();
+ }
+
+ @Override
+ public void resolved()
+ {
+ gotResolved = true;
+ }
+
+ @Override
+ public void start()
+ {
+ gotStart = true;
+ }
+
+ @Override
+ public void stop()
+ {
+ gotStop = true;
+ }
+
+ @Override
+ public void unresolve()
+ {
+ gotUnresolve = true;
+ }
+
+ @Override
+ public void unresolved()
+ {
+ gotUnresolved = true;
+ }
+
+ @Override
+ public boolean isLazyResolve()
+ {
+ return lazyResolve;
+ }
+
+ @Override
+ public boolean isLazyStart()
+ {
+ return lazyStart;
+ }
+}
Deleted: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycleClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycleClassLoaderPolicyModule.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycleClassLoaderPolicyModule.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,73 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2009, 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.test.classloading.lifecycle.support.a;
-
-import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoaderPolicyModule;
-import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
-import org.jboss.dependency.spi.Controller;
-import org.jboss.dependency.spi.ControllerContext;
-import org.jboss.dependency.spi.ControllerState;
-
-/**
- * MockLifeCycleClassLoaderPolicyModule.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
-public class MockLifeCycleClassLoaderPolicyModule extends MockClassLoaderPolicyModule
-{
- /** The serialVersionUID */
- private static final long serialVersionUID = 1L;
-
- public MockLifeCycleClassLoaderPolicyModule(MockClassLoadingMetaData classLoadingMetaData, String contextName)
- {
- super(classLoadingMetaData, contextName);
- MockLifeCycle lifeCycle = new MockLifeCycle(this);
- setLifeCycle(lifeCycle);
- }
-
- @Override
- public ClassLoader getClassLoader()
- {
- return super.getClassLoader();
- }
-
- @Override
- public ControllerState getClassLoaderState()
- {
- return ControllerState.CREATE;
- }
-
- void resolveIt()
- {
- ControllerContext context = getControllerContext();
- Controller controller = context.getController();
- try
- {
- controller.change(context, getClassLoaderState());
- }
- catch (Throwable t)
- {
- throw new Error("Error", t);
- }
- }
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycleClassLoaderPolicyModule.java (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycleClassLoaderPolicyModule.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycleClassLoaderPolicyModule.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/support/a/MockLifeCycleClassLoaderPolicyModule.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,73 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.test.classloading.lifecycle.support.a;
+
+import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoaderPolicyModule;
+import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+
+/**
+ * MockLifeCycleClassLoaderPolicyModule.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class MockLifeCycleClassLoaderPolicyModule extends MockClassLoaderPolicyModule
+{
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 1L;
+
+ public MockLifeCycleClassLoaderPolicyModule(MockClassLoadingMetaData classLoadingMetaData, String contextName)
+ {
+ super(classLoadingMetaData, contextName);
+ MockLifeCycle lifeCycle = new MockLifeCycle(this);
+ setLifeCycle(lifeCycle);
+ }
+
+ @Override
+ public ClassLoader getClassLoader()
+ {
+ return super.getClassLoader();
+ }
+
+ @Override
+ public ControllerState getClassLoaderState()
+ {
+ return ControllerState.CREATE;
+ }
+
+ void resolveIt()
+ {
+ ControllerContext context = getControllerContext();
+ Controller controller = context.getController();
+ try
+ {
+ controller.change(context, getClassLoaderState());
+ }
+ catch (Throwable t)
+ {
+ throw new Error("Error", t);
+ }
+ }
+}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test)
Deleted: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/AbstractMockLifeCycleUnitTest.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/AbstractMockLifeCycleUnitTest.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/AbstractMockLifeCycleUnitTest.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,238 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, 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.test.classloading.lifecycle.test;
-
-import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
-import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloading.spi.dependency.ClassLoading;
-import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
-import org.jboss.dependency.spi.ControllerMode;
-import org.jboss.dependency.spi.ControllerState;
-import org.jboss.kernel.Kernel;
-import org.jboss.kernel.plugins.bootstrap.AbstractBootstrap;
-import org.jboss.kernel.plugins.bootstrap.basic.BasicBootstrap;
-import org.jboss.kernel.spi.dependency.KernelController;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
-import org.jboss.test.classloading.AbstractClassLoadingTest;
-import org.jboss.test.classloading.lifecycle.support.a.MockLifeCycle;
-import org.jboss.test.classloading.lifecycle.support.a.MockLifeCycleClassLoaderPolicyModule;
-
-/**
- * AbstractMockLifeCycleUnitTest.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
-public abstract class AbstractMockLifeCycleUnitTest extends AbstractClassLoadingTest
-{
- private KernelController controller;
-
- protected ClassLoaderSystem system;
-
- public AbstractMockLifeCycleUnitTest(String name)
- {
- super(name);
- }
-
- protected void assertNoClassLoader(KernelControllerContext context) throws Exception
- {
- MockLifeCycleClassLoaderPolicyModule module = assertMockClassPolicyModule(context);
- ClassLoader cl = module.getClassLoader();
- assertNull("" + cl, cl);
- }
-
- protected ClassLoader assertClassLoader(KernelControllerContext context) throws Exception
- {
- MockLifeCycleClassLoaderPolicyModule module = assertMockClassPolicyModule(context);
- ClassLoader cl = module.getClassLoader();
- assertNotNull("Should be a classloader for " + module, cl);
- return cl;
- }
-
- protected MockLifeCycle assertNotResolved(KernelControllerContext context) throws Exception
- {
- assertNoClassLoader(context);
- MockLifeCycle lifeCycle = assertLifeCycle(context);
- assertFalse(context.getName() + " should be unresolved", lifeCycle.isResolved());
- assertFalse(context.getName() + " should be no resolved notification", lifeCycle.gotResolved);
- assertFalse(context.getName() + " should not be started", lifeCycle.isStarted());
- return lifeCycle;
- }
-
- protected MockLifeCycle assertUnresolved(KernelControllerContext context) throws Exception
- {
- assertNoClassLoader(context);
- MockLifeCycle lifeCycle = assertLifeCycle(context);
- assertFalse(context.getName() + " should be unresolved", lifeCycle.isResolved());
- assertTrue(context.getName() + " should be an unresolved notification", lifeCycle.gotUnresolved);
- assertFalse(context.getName() + " should not be started", lifeCycle.isStarted());
- return lifeCycle;
- }
-
- protected ClassLoader assertResolved(KernelControllerContext context) throws Exception
- {
- MockLifeCycle lifeCycle = assertLifeCycle(context);
- assertTrue(context.getName() + " should be resolved: " + context.getDependencyInfo().getUnresolvedDependencies(null), lifeCycle.isResolved());
- assertTrue(context.getName() + " should be a resolved notification", lifeCycle.gotResolved);
- assertFalse(context.getName() + " should not be started", lifeCycle.isStarted());
- return assertClassLoader(context);
- }
-
- protected ClassLoader assertStarted(KernelControllerContext context) throws Exception
- {
- MockLifeCycle lifeCycle = assertLifeCycle(context);
- assertTrue(context.getName() + " should be resolved: " + context.getDependencyInfo().getUnresolvedDependencies(null), lifeCycle.isResolved());
- assertTrue(context.getName() + " should be started", lifeCycle.isStarted());
- assertEquals(ControllerState.INSTALLED, context.getState());
- return assertClassLoader(context);
- }
-
- protected MockLifeCycle assertLifeCycle(KernelControllerContext context) throws Exception
- {
- MockLifeCycleClassLoaderPolicyModule module = assertMockClassPolicyModule(context);
- MockLifeCycle result = (MockLifeCycle) module.getLifeCycle();
- assertNotNull(result);
- return result;
- }
-
- protected MockLifeCycleClassLoaderPolicyModule assertMockClassPolicyModule(KernelControllerContext context) throws Exception
- {
- MockLifeCycleClassLoaderPolicyModule module = (MockLifeCycleClassLoaderPolicyModule) context.getTarget();
- assertNotNull("Should be a module for " + context, module);
- return module;
- }
-
- protected KernelControllerContext install(MockClassLoadingMetaData metaData) throws Exception
- {
- // Determine some properties
- String contextName = metaData.getName() + ":" + metaData.getVersion().toString();
-
- // Create the module
- MockLifeCycleClassLoaderPolicyModule mockModule = new MockLifeCycleClassLoaderPolicyModule(metaData, contextName);
- BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(contextName, mockModule.getClass().getName());
- builder.setConstructorValue(mockModule);
- builder.setMode(ControllerMode.MANUAL);
- builder.addConstructorParameter(MockClassLoadingMetaData.class.getName(), metaData);
- builder.addConstructorParameter(String.class.getName(), contextName);
- builder.setNoClassLoader();
- builder.setCreate("registerClassLoaderPolicy");
- builder.addCreateParameter(ClassLoaderSystem.class.getName(), builder.createValue(system));
- builder.setDestroy("removeClassLoader");
- BeanMetaData module = builder.getBeanMetaData();
- KernelControllerContext result = install(module);
- change(result, ControllerState.CONFIGURED);
- return result;
- }
-
- protected KernelControllerContext install(BeanMetaData beanMetaData) throws Exception
- {
- try
- {
- return controller.install(beanMetaData);
- }
- catch (Exception e)
- {
- throw e;
- }
- catch (Throwable t)
- {
- throw new RuntimeException("Error during install: " + beanMetaData, t);
- }
- }
-
- protected void change(KernelControllerContext controllerContext, ControllerState state) throws Exception
- {
- try
- {
- controller.change(controllerContext, state);
- }
- catch (Exception e)
- {
- throw e;
- }
- catch (Throwable t)
- {
- throw new RuntimeException("Error during change: " + controllerContext, t);
- }
- }
-
- protected void install(KernelControllerContext controllerContext) throws Exception
- {
- change(controllerContext, ControllerState.CONFIGURED);
- }
-
- protected void resolve(KernelControllerContext controllerContext) throws Exception
- {
- change(controllerContext, ControllerState.CREATE);
- }
-
- protected void unresolve(KernelControllerContext controllerContext) throws Exception
- {
- change(controllerContext, ControllerState.CONFIGURED);
- }
-
- protected void start(KernelControllerContext controllerContext) throws Exception
- {
- change(controllerContext, ControllerState.INSTALLED);
- }
-
- protected void stop(KernelControllerContext controllerContext) throws Exception
- {
- change(controllerContext, ControllerState.CREATE);
- }
-
- protected void uninstall(KernelControllerContext context)
- {
- controller.uninstall(context.getName());
- }
-
- protected void setUp() throws Exception
- {
- super.setUp();
-
- // Bootstrap the kernel
- AbstractBootstrap bootstrap = new BasicBootstrap();
- bootstrap.run();
- Kernel kernel = bootstrap.getKernel();
- controller = kernel.getController();
-
- system = new DefaultClassLoaderSystem();
- ClassLoaderDomain defaultDomain = system.getDefaultDomain();
- defaultDomain.setParentPolicy(ParentPolicy.BEFORE_BUT_JAVA_ONLY);
-
- BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("ClassLoading", ClassLoading.class.getName());
- builder.addMethodInstallCallback("addModule", null, null, ControllerState.CONFIGURED, null);
- builder.addMethodUninstallCallback("removeModule", null, null, ControllerState.CONFIGURED, null);
-
- install(builder.getBeanMetaData());
- }
-
- protected void tearDown() throws Exception
- {
- controller.shutdown();
- super.tearDown();
- }
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/AbstractMockLifeCycleUnitTest.java (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/AbstractMockLifeCycleUnitTest.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/AbstractMockLifeCycleUnitTest.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/AbstractMockLifeCycleUnitTest.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,238 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.test.classloading.lifecycle.test;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.ParentPolicy;
+import org.jboss.classloading.spi.dependency.ClassLoading;
+import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
+import org.jboss.dependency.spi.ControllerMode;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.plugins.bootstrap.AbstractBootstrap;
+import org.jboss.kernel.plugins.bootstrap.basic.BasicBootstrap;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.test.classloading.AbstractClassLoadingTest;
+import org.jboss.test.classloading.lifecycle.support.a.MockLifeCycle;
+import org.jboss.test.classloading.lifecycle.support.a.MockLifeCycleClassLoaderPolicyModule;
+
+/**
+ * AbstractMockLifeCycleUnitTest.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class AbstractMockLifeCycleUnitTest extends AbstractClassLoadingTest
+{
+ private KernelController controller;
+
+ protected ClassLoaderSystem system;
+
+ public AbstractMockLifeCycleUnitTest(String name)
+ {
+ super(name);
+ }
+
+ protected void assertNoClassLoader(KernelControllerContext context) throws Exception
+ {
+ MockLifeCycleClassLoaderPolicyModule module = assertMockClassPolicyModule(context);
+ ClassLoader cl = module.getClassLoader();
+ assertNull("" + cl, cl);
+ }
+
+ protected ClassLoader assertClassLoader(KernelControllerContext context) throws Exception
+ {
+ MockLifeCycleClassLoaderPolicyModule module = assertMockClassPolicyModule(context);
+ ClassLoader cl = module.getClassLoader();
+ assertNotNull("Should be a classloader for " + module, cl);
+ return cl;
+ }
+
+ protected MockLifeCycle assertNotResolved(KernelControllerContext context) throws Exception
+ {
+ assertNoClassLoader(context);
+ MockLifeCycle lifeCycle = assertLifeCycle(context);
+ assertFalse(context.getName() + " should be unresolved", lifeCycle.isResolved());
+ assertFalse(context.getName() + " should be no resolved notification", lifeCycle.gotResolved);
+ assertFalse(context.getName() + " should not be started", lifeCycle.isStarted());
+ return lifeCycle;
+ }
+
+ protected MockLifeCycle assertUnresolved(KernelControllerContext context) throws Exception
+ {
+ assertNoClassLoader(context);
+ MockLifeCycle lifeCycle = assertLifeCycle(context);
+ assertFalse(context.getName() + " should be unresolved", lifeCycle.isResolved());
+ assertTrue(context.getName() + " should be an unresolved notification", lifeCycle.gotUnresolved);
+ assertFalse(context.getName() + " should not be started", lifeCycle.isStarted());
+ return lifeCycle;
+ }
+
+ protected ClassLoader assertResolved(KernelControllerContext context) throws Exception
+ {
+ MockLifeCycle lifeCycle = assertLifeCycle(context);
+ assertTrue(context.getName() + " should be resolved: " + context.getDependencyInfo().getUnresolvedDependencies(null), lifeCycle.isResolved());
+ assertTrue(context.getName() + " should be a resolved notification", lifeCycle.gotResolved);
+ assertFalse(context.getName() + " should not be started", lifeCycle.isStarted());
+ return assertClassLoader(context);
+ }
+
+ protected ClassLoader assertStarted(KernelControllerContext context) throws Exception
+ {
+ MockLifeCycle lifeCycle = assertLifeCycle(context);
+ assertTrue(context.getName() + " should be resolved: " + context.getDependencyInfo().getUnresolvedDependencies(null), lifeCycle.isResolved());
+ assertTrue(context.getName() + " should be started", lifeCycle.isStarted());
+ assertEquals(ControllerState.INSTALLED, context.getState());
+ return assertClassLoader(context);
+ }
+
+ protected MockLifeCycle assertLifeCycle(KernelControllerContext context) throws Exception
+ {
+ MockLifeCycleClassLoaderPolicyModule module = assertMockClassPolicyModule(context);
+ MockLifeCycle result = (MockLifeCycle) module.getLifeCycle();
+ assertNotNull(result);
+ return result;
+ }
+
+ protected MockLifeCycleClassLoaderPolicyModule assertMockClassPolicyModule(KernelControllerContext context) throws Exception
+ {
+ MockLifeCycleClassLoaderPolicyModule module = (MockLifeCycleClassLoaderPolicyModule) context.getTarget();
+ assertNotNull("Should be a module for " + context, module);
+ return module;
+ }
+
+ protected KernelControllerContext install(MockClassLoadingMetaData metaData) throws Exception
+ {
+ // Determine some properties
+ String contextName = metaData.getName() + ":" + metaData.getVersion().toString();
+
+ // Create the module
+ MockLifeCycleClassLoaderPolicyModule mockModule = new MockLifeCycleClassLoaderPolicyModule(metaData, contextName);
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(contextName, mockModule.getClass().getName());
+ builder.setConstructorValue(mockModule);
+ builder.setMode(ControllerMode.MANUAL);
+ builder.addConstructorParameter(MockClassLoadingMetaData.class.getName(), metaData);
+ builder.addConstructorParameter(String.class.getName(), contextName);
+ builder.setNoClassLoader();
+ builder.setCreate("registerClassLoaderPolicy");
+ builder.addCreateParameter(ClassLoaderSystem.class.getName(), builder.createValue(system));
+ builder.setDestroy("removeClassLoader");
+ BeanMetaData module = builder.getBeanMetaData();
+ KernelControllerContext result = install(module);
+ change(result, ControllerState.CONFIGURED);
+ return result;
+ }
+
+ protected KernelControllerContext install(BeanMetaData beanMetaData) throws Exception
+ {
+ try
+ {
+ return controller.install(beanMetaData);
+ }
+ catch (Exception e)
+ {
+ throw e;
+ }
+ catch (Throwable t)
+ {
+ throw new RuntimeException("Error during install: " + beanMetaData, t);
+ }
+ }
+
+ protected void change(KernelControllerContext controllerContext, ControllerState state) throws Exception
+ {
+ try
+ {
+ controller.change(controllerContext, state);
+ }
+ catch (Exception e)
+ {
+ throw e;
+ }
+ catch (Throwable t)
+ {
+ throw new RuntimeException("Error during change: " + controllerContext, t);
+ }
+ }
+
+ protected void install(KernelControllerContext controllerContext) throws Exception
+ {
+ change(controllerContext, ControllerState.CONFIGURED);
+ }
+
+ protected void resolve(KernelControllerContext controllerContext) throws Exception
+ {
+ change(controllerContext, ControllerState.CREATE);
+ }
+
+ protected void unresolve(KernelControllerContext controllerContext) throws Exception
+ {
+ change(controllerContext, ControllerState.CONFIGURED);
+ }
+
+ protected void start(KernelControllerContext controllerContext) throws Exception
+ {
+ change(controllerContext, ControllerState.INSTALLED);
+ }
+
+ protected void stop(KernelControllerContext controllerContext) throws Exception
+ {
+ change(controllerContext, ControllerState.CREATE);
+ }
+
+ protected void uninstall(KernelControllerContext context)
+ {
+ controller.uninstall(context.getName());
+ }
+
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+
+ // Bootstrap the kernel
+ AbstractBootstrap bootstrap = new BasicBootstrap();
+ bootstrap.run();
+ Kernel kernel = bootstrap.getKernel();
+ controller = kernel.getController();
+
+ system = new DefaultClassLoaderSystem();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+ defaultDomain.setParentPolicy(ParentPolicy.BEFORE_BUT_JAVA_ONLY);
+
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("ClassLoading", ClassLoading.class.getName());
+ builder.addMethodInstallCallback("addModule", null, null, ControllerState.CONFIGURED, null);
+ builder.addMethodUninstallCallback("removeModule", null, null, ControllerState.CONFIGURED, null);
+
+ install(builder.getBeanMetaData());
+ }
+
+ protected void tearDown() throws Exception
+ {
+ controller.shutdown();
+ super.tearDown();
+ }
+}
Deleted: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/LifeCycleUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/LifeCycleUnitTestCase.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/LifeCycleUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,236 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, 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.test.classloading.lifecycle.test;
-
-import junit.framework.Test;
-
-import org.jboss.classloader.plugins.ClassLoaderUtils;
-import org.jboss.classloading.plugins.metadata.PackageRequirement;
-import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
-import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
-import org.jboss.test.classloading.lifecycle.support.a.A;
-import org.jboss.test.classloading.lifecycle.support.a.MockLifeCycle;
-
-/**
- * LifeCycleUnitTestCase.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
-public class LifeCycleUnitTestCase extends AbstractMockLifeCycleUnitTest
-{
- public static Test suite()
- {
- return suite(LifeCycleUnitTestCase.class);
- }
-
- public LifeCycleUnitTestCase(String name)
- {
- super(name);
- }
-
- static String packageA = ClassLoaderUtils.getClassPackageName(A.class.getName());
-
- public void testInstall() throws Exception
- {
- MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
- KernelControllerContext context = install(metaData);
- try
- {
- assertNotResolved(context);
- }
- finally
- {
- uninstall(context);
- }
- }
-
- public void testResolve() throws Exception
- {
- MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
- KernelControllerContext context = install(metaData);
- try
- {
- assertNotResolved(context);
-
- resolve(context);
- assertResolved(context);
- }
- finally
- {
- uninstall(context);
- }
- }
-
- public void testUnresolve() throws Exception
- {
- MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
- KernelControllerContext context = install(metaData);
- try
- {
- assertNotResolved(context);
-
- resolve(context);
- assertResolved(context);
-
- unresolve(context);
- assertUnresolved(context);
- }
- finally
- {
- uninstall(context);
- }
- }
-
- public void testStart() throws Exception
- {
- MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
- KernelControllerContext context = install(metaData);
- try
- {
- assertNotResolved(context);
-
- start(context);
- assertStarted(context);
- }
- finally
- {
- uninstall(context);
- }
- }
-
- public void testStop() throws Exception
- {
- MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
- KernelControllerContext context = install(metaData);
- try
- {
- assertNotResolved(context);
-
- start(context);
- assertStarted(context);
-
- stop(context);
- assertResolved(context);
- }
- finally
- {
- uninstall(context);
- }
- }
-
- public void testNoLazyResolve() throws Exception
- {
- MockClassLoadingMetaData metaDataA = new MockClassLoadingMetaData("a");
- metaDataA.setPathsAndPackageNames(A.class);
- KernelControllerContext contextA = install(metaDataA);
-
- ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
- MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
- metaData.getRequirements().addRequirement(factory.createRequirePackage(packageA));
- KernelControllerContext context = install(metaData);
- try
- {
- assertNotResolved(context);
- assertNotResolved(contextA);
-
- resolve(context);
- assertNotResolved(context);
- assertNotResolved(contextA);
- }
- finally
- {
- uninstall(context);
- }
- }
-
- public void testLazyResolve() throws Exception
- {
- MockClassLoadingMetaData metaDataA = new MockClassLoadingMetaData("a");
- metaDataA.setPathsAndPackageNames(A.class);
- KernelControllerContext contextA = install(metaDataA);
-
- MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
- metaData.getRequirements().addRequirement(new PackageRequirement(ClassLoaderUtils.getClassPackageName(A.class.getName())));
- KernelControllerContext context = install(metaData);
- try
- {
- assertNotResolved(context);
- MockLifeCycle lifeCycleA = assertNotResolved(contextA);
- lifeCycleA.lazyResolve = true;
-
- resolve(context);
- ClassLoader cl = assertResolved(context);
-
- ClassLoader clA = assertResolved(contextA);
-
- assertLoadClass(A.class, cl, clA);
- assertTrue("Should get resolve invocation", lifeCycleA.gotResolve);
- }
- finally
- {
- uninstall(context);
- }
- }
-
- public void testNotLazyStart() throws Exception
- {
- MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
- metaData.setPathsAndPackageNames(A.class);
- KernelControllerContext context = install(metaData);
- try
- {
- assertNotResolved(context);
-
- resolve(context);
- ClassLoader cl = assertResolved(context);
- assertLoadClass(A.class, cl);
- assertResolved(context);
- }
- finally
- {
- uninstall(context);
- }
- }
-
- public void testLazyStart() throws Exception
- {
- MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
- metaData.setPathsAndPackageNames(A.class);
- KernelControllerContext context = install(metaData);
- try
- {
- MockLifeCycle lifeCycle = assertNotResolved(context);
- lifeCycle.lazyStart = true;
-
- resolve(context);
- ClassLoader cl = assertResolved(context);
- assertLoadClass(A.class, cl);
- assertTrue("Should get start invocation", lifeCycle.gotStart);
- }
- finally
- {
- uninstall(context);
- }
- }
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/LifeCycleUnitTestCase.java (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/LifeCycleUnitTestCase.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/LifeCycleUnitTestCase.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/lifecycle/test/LifeCycleUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,236 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.test.classloading.lifecycle.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloader.plugins.ClassLoaderUtils;
+import org.jboss.classloading.plugins.metadata.PackageRequirement;
+import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.test.classloading.lifecycle.support.a.A;
+import org.jboss.test.classloading.lifecycle.support.a.MockLifeCycle;
+
+/**
+ * LifeCycleUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class LifeCycleUnitTestCase extends AbstractMockLifeCycleUnitTest
+{
+ public static Test suite()
+ {
+ return suite(LifeCycleUnitTestCase.class);
+ }
+
+ public LifeCycleUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ static String packageA = ClassLoaderUtils.getClassPackageName(A.class.getName());
+
+ public void testInstall() throws Exception
+ {
+ MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
+ KernelControllerContext context = install(metaData);
+ try
+ {
+ assertNotResolved(context);
+ }
+ finally
+ {
+ uninstall(context);
+ }
+ }
+
+ public void testResolve() throws Exception
+ {
+ MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
+ KernelControllerContext context = install(metaData);
+ try
+ {
+ assertNotResolved(context);
+
+ resolve(context);
+ assertResolved(context);
+ }
+ finally
+ {
+ uninstall(context);
+ }
+ }
+
+ public void testUnresolve() throws Exception
+ {
+ MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
+ KernelControllerContext context = install(metaData);
+ try
+ {
+ assertNotResolved(context);
+
+ resolve(context);
+ assertResolved(context);
+
+ unresolve(context);
+ assertUnresolved(context);
+ }
+ finally
+ {
+ uninstall(context);
+ }
+ }
+
+ public void testStart() throws Exception
+ {
+ MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
+ KernelControllerContext context = install(metaData);
+ try
+ {
+ assertNotResolved(context);
+
+ start(context);
+ assertStarted(context);
+ }
+ finally
+ {
+ uninstall(context);
+ }
+ }
+
+ public void testStop() throws Exception
+ {
+ MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
+ KernelControllerContext context = install(metaData);
+ try
+ {
+ assertNotResolved(context);
+
+ start(context);
+ assertStarted(context);
+
+ stop(context);
+ assertResolved(context);
+ }
+ finally
+ {
+ uninstall(context);
+ }
+ }
+
+ public void testNoLazyResolve() throws Exception
+ {
+ MockClassLoadingMetaData metaDataA = new MockClassLoadingMetaData("a");
+ metaDataA.setPathsAndPackageNames(A.class);
+ KernelControllerContext contextA = install(metaDataA);
+
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
+ metaData.getRequirements().addRequirement(factory.createRequirePackage(packageA));
+ KernelControllerContext context = install(metaData);
+ try
+ {
+ assertNotResolved(context);
+ assertNotResolved(contextA);
+
+ resolve(context);
+ assertNotResolved(context);
+ assertNotResolved(contextA);
+ }
+ finally
+ {
+ uninstall(context);
+ }
+ }
+
+ public void testLazyResolve() throws Exception
+ {
+ MockClassLoadingMetaData metaDataA = new MockClassLoadingMetaData("a");
+ metaDataA.setPathsAndPackageNames(A.class);
+ KernelControllerContext contextA = install(metaDataA);
+
+ MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
+ metaData.getRequirements().addRequirement(new PackageRequirement(ClassLoaderUtils.getClassPackageName(A.class.getName())));
+ KernelControllerContext context = install(metaData);
+ try
+ {
+ assertNotResolved(context);
+ MockLifeCycle lifeCycleA = assertNotResolved(contextA);
+ lifeCycleA.lazyResolve = true;
+
+ resolve(context);
+ ClassLoader cl = assertResolved(context);
+
+ ClassLoader clA = assertResolved(contextA);
+
+ assertLoadClass(A.class, cl, clA);
+ assertTrue("Should get resolve invocation", lifeCycleA.gotResolve);
+ }
+ finally
+ {
+ uninstall(context);
+ }
+ }
+
+ public void testNotLazyStart() throws Exception
+ {
+ MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
+ metaData.setPathsAndPackageNames(A.class);
+ KernelControllerContext context = install(metaData);
+ try
+ {
+ assertNotResolved(context);
+
+ resolve(context);
+ ClassLoader cl = assertResolved(context);
+ assertLoadClass(A.class, cl);
+ assertResolved(context);
+ }
+ finally
+ {
+ uninstall(context);
+ }
+ }
+
+ public void testLazyStart() throws Exception
+ {
+ MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
+ metaData.setPathsAndPackageNames(A.class);
+ KernelControllerContext context = install(metaData);
+ try
+ {
+ MockLifeCycle lifeCycle = assertNotResolved(context);
+ lifeCycle.lazyStart = true;
+
+ resolve(context);
+ ClassLoader cl = assertResolved(context);
+ assertLoadClass(A.class, cl);
+ assertTrue("Should get start invocation", lifeCycle.gotStart);
+ }
+ finally
+ {
+ uninstall(context);
+ }
+ }
+}
Modified: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/metadata/test/ClassLoadingMetaDataUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/metadata/test/ClassLoadingMetaDataUnitTestCase.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/metadata/test/ClassLoadingMetaDataUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -27,6 +27,7 @@
import junit.framework.Test;
import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
import org.jboss.classloading.spi.metadata.CapabilitiesMetaData;
import org.jboss.classloading.spi.metadata.Capability;
import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
@@ -181,24 +182,24 @@
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
assertNull(test.getIncluded());
- test.setIncluded(ClassFilter.EVERYTHING);
- assertEquals(ClassFilter.EVERYTHING, test.getIncluded());
+ test.setIncluded(ClassFilterUtils.EVERYTHING);
+ assertEquals(ClassFilterUtils.EVERYTHING, test.getIncluded());
}
public void testSetExcluded() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
assertNull(test.getExcluded());
- test.setExcluded(ClassFilter.EVERYTHING);
- assertEquals(ClassFilter.EVERYTHING, test.getExcluded());
+ test.setExcluded(ClassFilterUtils.EVERYTHING);
+ assertEquals(ClassFilterUtils.EVERYTHING, test.getExcluded());
}
public void testSetExcludedExport() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
assertNull(test.getExcludedExport());
- test.setExcludedExport(ClassFilter.EVERYTHING);
- assertEquals(ClassFilter.EVERYTHING, test.getExcludedExport());
+ test.setExcludedExport(ClassFilterUtils.EVERYTHING);
+ assertEquals(ClassFilterUtils.EVERYTHING, test.getExcludedExport());
}
public void testGetIncluded() throws Exception
@@ -211,14 +212,14 @@
assertTrue(filter.matchesClassName(Object.class.getName()));
assertFalse(filter.matchesClassName(Collection.class.getName()));
- test.setIncluded(ClassFilter.JAVA_ONLY);
+ test.setIncluded(ClassFilterUtils.JAVA_ONLY);
filter = test.getIncluded();
assertTrue(filter.matchesClassName(Object.class.getName()));
assertFalse(filter.matchesClassName(Collection.class.getName()));
test.setIncludedPackages(null);
filter = test.getIncluded();
- assertEquals(ClassFilter.JAVA_ONLY, filter);
+ assertEquals(ClassFilterUtils.JAVA_ONLY, filter);
assertTrue(filter.matchesClassName(Object.class.getName()));
assertTrue(filter.matchesClassName(Collection.class.getName()));
}
@@ -233,14 +234,14 @@
assertTrue(filter.matchesClassName(Object.class.getName()));
assertFalse(filter.matchesClassName(Collection.class.getName()));
- test.setExcluded(ClassFilter.JAVA_ONLY);
+ test.setExcluded(ClassFilterUtils.JAVA_ONLY);
filter = test.getExcluded();
assertTrue(filter.matchesClassName(Object.class.getName()));
assertFalse(filter.matchesClassName(Collection.class.getName()));
test.setExcludedPackages(null);
filter = test.getExcluded();
- assertEquals(ClassFilter.JAVA_ONLY, filter);
+ assertEquals(ClassFilterUtils.JAVA_ONLY, filter);
assertTrue(filter.matchesClassName(Object.class.getName()));
assertTrue(filter.matchesClassName(Collection.class.getName()));
}
@@ -255,14 +256,14 @@
assertTrue(filter.matchesClassName(Object.class.getName()));
assertFalse(filter.matchesClassName(Collection.class.getName()));
- test.setExcludedExport(ClassFilter.JAVA_ONLY);
+ test.setExcludedExport(ClassFilterUtils.JAVA_ONLY);
filter = test.getExcludedExport();
assertTrue(filter.matchesClassName(Object.class.getName()));
assertFalse(filter.matchesClassName(Collection.class.getName()));
test.setExcludedExportPackages(null);
filter = test.getExcludedExport();
- assertEquals(ClassFilter.JAVA_ONLY, filter);
+ assertEquals(ClassFilterUtils.JAVA_ONLY, filter);
assertTrue(filter.matchesClassName(Object.class.getName()));
assertTrue(filter.matchesClassName(Collection.class.getName()));
}
Modified: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/metadata/test/ManagedObjectClassLoadingMetaDataUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/metadata/test/ManagedObjectClassLoadingMetaDataUnitTestCase.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/metadata/test/ManagedObjectClassLoadingMetaDataUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -44,7 +44,7 @@
/**
* ManagedObjectClassLoadingMetaDataUnitTestCase.
- *
+ *
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
@@ -53,7 +53,7 @@
private ManagedObjectFactory moFactory = ManagedObjectFactory.getInstance();
private MetaTypeFactory mtFactory = MetaTypeFactory.getInstance();
private MetaValueFactory mvFactory = MetaValueFactory.getInstance();
-
+
public static Test suite()
{
return suite(ManagedObjectClassLoadingMetaDataUnitTestCase.class);
@@ -63,12 +63,12 @@
{
super(name);
}
-
+
protected ManagedObject assertManagedObject(ClassLoadingMetaData test)
{
ManagedObject result = moFactory.initManagedObject(test, null, null);
assertNotNull(result);
- List<String> expectedProperties = Arrays.asList("name", "version", "domain", "parentDomain", "exportAll", "included", "excluded", "excludedExport", "importAll", "parentFirst", "cache", "blackList", "capabilities", "requirements");
+ List<String> expectedProperties = Arrays.asList("name", "version", "domain", "parentDomain", "topLevelClassLoader", "exportAll", "included", "excluded", "excludedExport", "importAll", "parentFirst", "cache", "blackList", "capabilities", "requirements");
Set<String> actualProperties = result.getPropertyNames();
for (String expected : expectedProperties)
{
@@ -82,7 +82,7 @@
}
return result;
}
-
+
protected ManagedProperty assertManagedProperty(ManagedObject mo, String name, MetaType metaType, MetaValue metaValue)
{
ManagedProperty property = mo.getProperty(name);
@@ -91,7 +91,7 @@
assertEquals(metaValue, property.getValue());
return property;
}
-
+
protected <T> ManagedProperty assertManagedProperty(ManagedObject mo, String name, Class<T> type, T value)
{
MetaType metaType = mtFactory.resolve(type);
@@ -101,7 +101,7 @@
metaValue = mvFactory.create(value);
return assertManagedProperty(mo, name, metaType, metaValue);
}
-
+
public void testConstructor() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
@@ -110,6 +110,7 @@
assertManagedProperty(mo, "version", Version.class, Version.DEFAULT_VERSION);
assertManagedProperty(mo, "domain", String.class, null);
assertManagedProperty(mo, "parentDomain", String.class, null);
+ assertManagedProperty(mo, "topLevelClassLoader", boolean.class, false);
assertManagedProperty(mo, "exportAll", ExportAll.class, null);
assertManagedProperty(mo, "included", String.class, null);
assertManagedProperty(mo, "excluded", String.class, null);
@@ -119,7 +120,7 @@
assertManagedProperty(mo, "capabilities", CapabilitiesMetaData.class, new CapabilitiesMetaData());
assertManagedProperty(mo, "requirements", RequirementsMetaData.class, new RequirementsMetaData());
}
-
+
public void testSetName() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
@@ -127,7 +128,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "name", String.class, "test");
}
-
+
public void testSetVersion() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
@@ -143,7 +144,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "domain", String.class, "domain");
}
-
+
public void testSetParentDomain() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
@@ -151,7 +152,15 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "parentDomain", String.class, "parentDomain");
}
-
+
+ public void testSetTopLevelClassLoader() throws Exception
+ {
+ ClassLoadingMetaData test = new ClassLoadingMetaData();
+ test.setTopLevelClassLoader(true);
+ ManagedObject mo = assertManagedObject(test);
+ assertManagedProperty(mo, "topLevelClassLoader", boolean.class, true);
+ }
+
public void testSetExportAll() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
@@ -159,7 +168,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "exportAll", ExportAll.class, ExportAll.ALL);
}
-
+
public void testSetIncludedPackages() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
@@ -167,7 +176,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "included", String.class, "Included");
}
-
+
public void testSetExcludedPackages() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
@@ -175,7 +184,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "excluded", String.class, "Excluded");
}
-
+
public void testSetExcludedExportPackages() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
@@ -183,7 +192,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "excludedExport", String.class, "ExcludedExport");
}
-
+
public void testSetImportAll() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
@@ -191,7 +200,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "importAll", boolean.class, true);
}
-
+
public void testJ2seClassLoadingComplaince() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
@@ -199,7 +208,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "parentFirst", boolean.class, false);
}
-
+
public void testCacheable() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
@@ -207,7 +216,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "cache", boolean.class, false);
}
-
+
public void testBlackList() throws Exception
{
ClassLoadingMetaData test = new ClassLoadingMetaData();
@@ -215,7 +224,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "blackList", boolean.class, false);
}
-
+
public void testCapabilities() throws Exception
{
ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
@@ -225,7 +234,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "requirements", RequirementsMetaData.class, test.getRequirements());
}
-
+
public void testRequirements() throws Exception
{
ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
Modified: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/test/ClassLoadingMetaDataXmlUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/test/ClassLoadingMetaDataXmlUnitTestCase.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/test/ClassLoadingMetaDataXmlUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -63,6 +63,7 @@
assertEquals(Version.DEFAULT_VERSION, result.getVersion());
assertNull(result.getDomain());
assertNull(result.getParentDomain());
+ assertFalse(result.isTopLevelClassLoader());
assertNull(result.getExportAll());
assertNull(result.getIncludedPackages());
assertNull(result.getExcludedPackages());
@@ -93,6 +94,12 @@
assertEquals("testParentDomain", result.getParentDomain());
}
+ public void testModuleTopLevelClassLoader() throws Exception
+ {
+ ClassLoadingMetaData result = unmarshal();
+ assertTrue(result.isTopLevelClassLoader());
+ }
+
public void testModuleExportAll() throws Exception
{
ClassLoadingMetaData result = unmarshal();
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/resolver)
Deleted: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/ResolverTestSuite.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/resolver/ResolverTestSuite.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/ResolverTestSuite.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,61 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, 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.test.classloading.resolver;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.jboss.test.classloading.lifecycle.test.LifeCycleUnitTestCase;
-
-/**
- * LifeCycle Test Suite.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 37459 $
- */
-public class ResolverTestSuite extends TestSuite
-{
- /**
- * For running the testsuite from the command line
- *
- * @param args the command line args
- */
- public static void main(String[] args)
- {
- TestRunner.run(suite());
- }
-
- /**
- * Create the testsuite
- *
- * @return the testsuite
- */
- public static Test suite()
- {
- TestSuite suite = new TestSuite("LifeCycle Tests");
-
- suite.addTest(LifeCycleUnitTestCase.suite());
-
- return suite;
- }
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/ResolverTestSuite.java (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/resolver/ResolverTestSuite.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/ResolverTestSuite.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/ResolverTestSuite.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.test.classloading.resolver;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+import org.jboss.test.classloading.lifecycle.test.LifeCycleUnitTestCase;
+
+/**
+ * LifeCycle Test Suite.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 37459 $
+ */
+public class ResolverTestSuite extends TestSuite
+{
+ /**
+ * For running the testsuite from the command line
+ *
+ * @param args the command line args
+ */
+ public static void main(String[] args)
+ {
+ TestRunner.run(suite());
+ }
+
+ /**
+ * Create the testsuite
+ *
+ * @return the testsuite
+ */
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("LifeCycle Tests");
+
+ suite.addTest(LifeCycleUnitTestCase.suite());
+
+ return suite;
+ }
+}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/resolver/support)
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a)
Deleted: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a/A.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a/A.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a/A.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,32 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2009, 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.test.classloading.resolver.support.a;
-
-/**
- * A.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
-public class A
-{
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a/A.java (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a/A.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a/A.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/support/a/A.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.test.classloading.resolver.support.a;
+
+/**
+ * A.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class A
+{
+}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/test (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/resolver/test)
Deleted: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/test/ResolverUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/resolver/test/ResolverUnitTestCase.java 2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/test/ResolverUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -1,144 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, 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.test.classloading.resolver.test;
-
-import junit.framework.Test;
-
-import org.jboss.classloader.plugins.ClassLoaderUtils;
-import org.jboss.classloading.plugins.metadata.PackageRequirement;
-import org.jboss.classloading.spi.dependency.ClassLoading;
-import org.jboss.classloading.spi.dependency.ResolutionContext;
-import org.jboss.classloading.spi.dependency.Resolver;
-import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
-import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
-import org.jboss.classloading.spi.metadata.Requirement;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
-import org.jboss.test.classloading.dependency.test.AbstractMockClassLoaderUnitTest;
-import org.jboss.test.classloading.resolver.support.a.A;
-
-/**
- * ResolverUnitTestCase.
- *
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
-public class ResolverUnitTestCase extends AbstractMockClassLoaderUnitTest implements Resolver
-{
- public static Test suite()
- {
- return suite(ResolverUnitTestCase.class);
- }
-
- static String packageA = ClassLoaderUtils.getClassPackageName(A.class.getName());
-
- boolean doResolve = true;
- KernelControllerContext contextA = null;
- ClassLoader other = null;
-
- public ResolverUnitTestCase(String name)
- {
- super(name);
- }
-
- public boolean resolve(ResolutionContext context)
- {
- if (doResolve == false)
- return false;
-
- Requirement requirement = context.getRequirement();
- if (requirement instanceof PackageRequirement == false)
- return false;
-
- PackageRequirement packageRequirement = (PackageRequirement) requirement;
- if (packageA.equals(packageRequirement.getName()) == false)
- return false;
-
- if (other != null)
- return true;
-
- MockClassLoadingMetaData a = new MockClassLoadingMetaData("a");
- a.setPathsAndPackageNames(A.class);
- try
- {
- contextA = install(a);
- other = assertClassLoader(contextA);
- return true;
- }
- catch (Exception e)
- {
- getLog().warn("Error:", e);
- }
- return false;
- }
-
- public void testResolve() throws Exception
- {
- doResolve = true;
-
- MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
- metaData.getRequirements().addRequirement(new PackageRequirement(ClassLoaderUtils.getClassPackageName(A.class.getName())));
- KernelControllerContext context = install(metaData);
- try
- {
- ClassLoader cl = assertClassLoader(context);
- assertNotNull("Should have resolved the other classloader", other);
- assertLoadClass(A.class, cl, other);
- }
- finally
- {
- uninstall(context);
- }
- }
-
- public void testNotResolved() throws Exception
- {
- doResolve = false;
-
- ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
- MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
- metaData.getRequirements().addRequirement(factory.createRequirePackage(packageA));
- KernelControllerContext context = install(metaData);
- try
- {
- assertNoClassLoader(context);
- assertNull("Should not have resolved the other classloader", other);
- }
- finally
- {
- uninstall(context);
- }
- }
-
- protected void setUp() throws Exception
- {
- super.setUp();
- ClassLoading classLoading = getBean("ClassLoading", ClassLoading.class);
- classLoading.addResolver(this);
- }
-
- protected void tearDown() throws Exception
- {
- if (contextA != null)
- uninstall(contextA);
- super.tearDown();
- }
-}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/test/ResolverUnitTestCase.java (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/resolver/test/ResolverUnitTestCase.java)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/test/ResolverUnitTestCase.java (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/java/org/jboss/test/classloading/resolver/test/ResolverUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,144 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.test.classloading.resolver.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloader.plugins.ClassLoaderUtils;
+import org.jboss.classloading.plugins.metadata.PackageRequirement;
+import org.jboss.classloading.spi.dependency.ClassLoading;
+import org.jboss.classloading.spi.dependency.ResolutionContext;
+import org.jboss.classloading.spi.dependency.Resolver;
+import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.metadata.Requirement;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.test.classloading.dependency.test.AbstractMockClassLoaderUnitTest;
+import org.jboss.test.classloading.resolver.support.a.A;
+
+/**
+ * ResolverUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ResolverUnitTestCase extends AbstractMockClassLoaderUnitTest implements Resolver
+{
+ public static Test suite()
+ {
+ return suite(ResolverUnitTestCase.class);
+ }
+
+ static String packageA = ClassLoaderUtils.getClassPackageName(A.class.getName());
+
+ boolean doResolve = true;
+ KernelControllerContext contextA = null;
+ ClassLoader other = null;
+
+ public ResolverUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public boolean resolve(ResolutionContext context)
+ {
+ if (doResolve == false)
+ return false;
+
+ Requirement requirement = context.getRequirement();
+ if (requirement instanceof PackageRequirement == false)
+ return false;
+
+ PackageRequirement packageRequirement = (PackageRequirement) requirement;
+ if (packageA.equals(packageRequirement.getName()) == false)
+ return false;
+
+ if (other != null)
+ return true;
+
+ MockClassLoadingMetaData a = new MockClassLoadingMetaData("a");
+ a.setPathsAndPackageNames(A.class);
+ try
+ {
+ contextA = install(a);
+ other = assertClassLoader(contextA);
+ return true;
+ }
+ catch (Exception e)
+ {
+ getLog().warn("Error:", e);
+ }
+ return false;
+ }
+
+ public void testResolve() throws Exception
+ {
+ doResolve = true;
+
+ MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
+ metaData.getRequirements().addRequirement(new PackageRequirement(ClassLoaderUtils.getClassPackageName(A.class.getName())));
+ KernelControllerContext context = install(metaData);
+ try
+ {
+ ClassLoader cl = assertClassLoader(context);
+ assertNotNull("Should have resolved the other classloader", other);
+ assertLoadClass(A.class, cl, other);
+ }
+ finally
+ {
+ uninstall(context);
+ }
+ }
+
+ public void testNotResolved() throws Exception
+ {
+ doResolve = false;
+
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ MockClassLoadingMetaData metaData = new MockClassLoadingMetaData("test");
+ metaData.getRequirements().addRequirement(factory.createRequirePackage(packageA));
+ KernelControllerContext context = install(metaData);
+ try
+ {
+ assertNoClassLoader(context);
+ assertNull("Should not have resolved the other classloader", other);
+ }
+ finally
+ {
+ uninstall(context);
+ }
+ }
+
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ ClassLoading classLoading = getBean("ClassLoading", ClassLoading.class);
+ classLoading.addResolver(this);
+ }
+
+ protected void tearDown() throws Exception
+ {
+ if (contextA != null)
+ uninstall(contextA);
+ super.tearDown();
+ }
+}
Copied: projects/jboss-cl/branches/vfs3-int/classloading/src/test/resources/org/jboss/test/classloading/metadata/xml/test/ModuleTopLevelClassLoader.xml (from rev 98000, projects/jboss-cl/trunk/classloading/src/test/resources/org/jboss/test/classloading/metadata/xml/test/ModuleTopLevelClassLoader.xml)
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading/src/test/resources/org/jboss/test/classloading/metadata/xml/test/ModuleTopLevelClassLoader.xml (rev 0)
+++ projects/jboss-cl/branches/vfs3-int/classloading/src/test/resources/org/jboss/test/classloading/metadata/xml/test/ModuleTopLevelClassLoader.xml 2009-12-19 02:42:11 UTC (rev 98009)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloading xmlns="urn:jboss:classloading:1.0"
+ name="test"
+ top-level-classloader="true">
+</classloading>
Modified: projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/plugins/vfs/VFSResourceVisitor.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/plugins/vfs/VFSResourceVisitor.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/plugins/vfs/VFSResourceVisitor.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -23,6 +23,7 @@
import java.net.URL;
+import org.jboss.classloader.plugins.ClassLoaderUtils;
import org.jboss.classloader.spi.filter.ClassFilter;
import org.jboss.classloading.spi.visitor.ResourceContext;
import org.jboss.classloading.spi.visitor.ResourceFilter;
@@ -121,10 +122,8 @@
URL rootURL = root.toURL();
for (URL url : urls)
{
- if (rootURL.equals(url))
- {
+ if (ClassLoaderUtils.compareURL(rootURL, url) == 0)
return true;
- }
}
return false;
}
Modified: projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -42,6 +42,7 @@
import org.jboss.classloader.spi.DelegateLoader;
import org.jboss.classloader.spi.PackageInformation;
import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
import org.jboss.classloader.spi.filter.FilteredDelegateLoader;
import org.jboss.classloading.plugins.vfs.PackageVisitor;
import org.jboss.classloading.spi.metadata.ExportAll;
@@ -444,7 +445,7 @@
public DelegateLoader getExported()
{
if (getExportAll() != null)
- return new FilteredDelegateLoader(this, ClassFilter.EVERYTHING);
+ return new FilteredDelegateLoader(this, ClassFilterUtils.EVERYTHING);
return super.getExported();
}
@@ -513,6 +514,7 @@
}
@Override
+ // FindBugs: The Set doesn't use equals/hashCode
public void getResources(String name, Set<URL> urls) throws IOException
{
if (checkFilters(name, "getResources"))
Modified: projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/resources/schema/jboss-classloading-1.0.xsd
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/resources/schema/jboss-classloading-1.0.xsd 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/resources/schema/jboss-classloading-1.0.xsd 2009-12-19 02:42:11 UTC (rev 98009)
@@ -91,6 +91,17 @@
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
+ <xsd:attribute name="top-level-classloader" type="xsd:boolean" use="optional">
+ <xsd:annotation>
+ <xsd:documentation>
+ <![CDATA[
+ Whether a subdeployment classloader should be a top level classloader,
+ the default is false. This value is ignored when not specified against
+ a subdeployment.
+ ]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
<xsd:attribute name="parent-first" type="xsd:boolean" use="optional">
<xsd:annotation>
<xsd:documentation>
Modified: projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/ManagedObjectVFSClassLoaderFactoryUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/ManagedObjectVFSClassLoaderFactoryUnitTestCase.java 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/ManagedObjectVFSClassLoaderFactoryUnitTestCase.java 2009-12-19 02:42:11 UTC (rev 98009)
@@ -46,7 +46,7 @@
/**
* ManagedObjectVFSClassLoaderFactoryUnitTestCase.
- *
+ *
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
@@ -55,7 +55,7 @@
private ManagedObjectFactory moFactory = ManagedObjectFactory.getInstance();
private MetaTypeFactory mtFactory = MetaTypeFactory.getInstance();
private MetaValueFactory mvFactory = MetaValueFactory.getInstance();
-
+
public static Test suite()
{
return suite(ManagedObjectVFSClassLoaderFactoryUnitTestCase.class);
@@ -65,12 +65,12 @@
{
super(name);
}
-
+
protected ManagedObject assertManagedObject(VFSClassLoaderFactory test)
{
ManagedObject result = moFactory.initManagedObject(test, null, null);
assertNotNull(result);
- List<String> expectedProperties = Arrays.asList("name", "version", "context", "domain", "parentDomain", "exportAll", "included", "excluded", "excludedExport", "importAll", "parentFirst", "cache", "blackList", "system", "roots", "capabilities", "requirements");
+ List<String> expectedProperties = Arrays.asList("name", "version", "context", "domain", "parentDomain", "topLevelClassLoader", "exportAll", "included", "excluded", "excludedExport", "importAll", "parentFirst", "cache", "blackList", "system", "roots", "capabilities", "requirements");
Set<String> actualProperties = result.getPropertyNames();
for (String expected : expectedProperties)
{
@@ -84,7 +84,7 @@
}
return result;
}
-
+
protected ManagedProperty assertManagedProperty(ManagedObject mo, String name, MetaType metaType, MetaValue metaValue)
{
ManagedProperty property = mo.getProperty(name);
@@ -93,7 +93,7 @@
assertEquals(metaValue, property.getValue());
return property;
}
-
+
protected ManagedProperty assertManagedProperty(ManagedObject mo, String name, Type type, Object value)
{
MetaType metaType = mtFactory.resolve(type);
@@ -103,12 +103,12 @@
metaValue = mvFactory.create(value, type);
return assertManagedProperty(mo, name, metaType, metaValue);
}
-
+
protected <T> ManagedProperty assertManagedProperty(ManagedObject mo, String name, Class<T> type, T value)
{
return assertManagedProperty(mo, name, (Type) type, value);
}
-
+
public void testConstructor() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -117,6 +117,7 @@
assertManagedProperty(mo, "version", Version.class, Version.DEFAULT_VERSION);
assertManagedProperty(mo, "domain", String.class, null);
assertManagedProperty(mo, "parentDomain", String.class, null);
+ assertManagedProperty(mo, "topLevelClassLoader", boolean.class, false);
assertManagedProperty(mo, "exportAll", ExportAll.class, null);
assertManagedProperty(mo, "included", String.class, null);
assertManagedProperty(mo, "excluded", String.class, null);
@@ -126,7 +127,7 @@
assertManagedProperty(mo, "capabilities", CapabilitiesMetaData.class, new CapabilitiesMetaData());
assertManagedProperty(mo, "requirements", RequirementsMetaData.class, new RequirementsMetaData());
}
-
+
public void testSetName() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -134,7 +135,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "name", String.class, "test");
}
-
+
public void testSetVersion() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -142,7 +143,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "version", Version.class, Version.parseVersion("1.0.0"));
}
-
+
public void testContext() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -158,7 +159,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "domain", String.class, "domain");
}
-
+
public void testSetParentDomain() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -166,7 +167,15 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "parentDomain", String.class, "parentDomain");
}
-
+
+ public void testSetTopLevelClassLoader() throws Exception
+ {
+ VFSClassLoaderFactory test = new VFSClassLoaderFactory();
+ test.setTopLevelClassLoader(true);
+ ManagedObject mo = assertManagedObject(test);
+ assertManagedProperty(mo, "topLevelClassLoader", boolean.class, true);
+ }
+
public void testSetExportAll() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -174,7 +183,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "exportAll", ExportAll.class, ExportAll.ALL);
}
-
+
public void testSetIncludedPackages() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -182,7 +191,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "included", String.class, "Included");
}
-
+
public void testSetExcludedPackages() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -190,7 +199,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "excluded", String.class, "Excluded");
}
-
+
public void testSetExcludedExportPackages() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -198,7 +207,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "excludedExport", String.class, "ExcludedExport");
}
-
+
public void testSetImportAll() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -206,7 +215,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "importAll", boolean.class, true);
}
-
+
public void testJ2seClassLoadingComplaince() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -214,7 +223,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "parentFirst", boolean.class, false);
}
-
+
public void testCacheable() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -222,7 +231,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "cache", boolean.class, false);
}
-
+
public void testBlackList() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -230,7 +239,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "blackList", boolean.class, false);
}
-
+
public void testSetSystem() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -238,7 +247,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "system", String.class, "test");
}
-
+
public void testSetRoots() throws Exception
{
VFSClassLoaderFactory test = new VFSClassLoaderFactory();
@@ -248,9 +257,9 @@
Field field = getClass().getField("rootsSignature");
assertManagedProperty(mo, "roots", field.getGenericType(), roots);
}
-
+
public static List<String> rootsSignature;
-
+
public void testCapabilities() throws Exception
{
ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
@@ -260,7 +269,7 @@
ManagedObject mo = assertManagedObject(test);
assertManagedProperty(mo, "requirements", RequirementsMetaData.class, test.getRequirements());
}
-
+
public void testRequirements() throws Exception
{
ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
Modified: projects/jboss-cl/branches/vfs3-int/pom.xml
===================================================================
--- projects/jboss-cl/branches/vfs3-int/pom.xml 2009-12-19 02:27:42 UTC (rev 98008)
+++ projects/jboss-cl/branches/vfs3-int/pom.xml 2009-12-19 02:42:11 UTC (rev 98009)
@@ -31,15 +31,15 @@
<properties>
<version.jboss.vfs>3.0.0.CR1-SNAPSHOT</version.jboss.vfs>
- <version.jboss.man>2.1.1.CR1</version.jboss.man>
+ <version.jboss.man>2.1.1.GA</version.jboss.man>
<version.jboss.microcontainer>2.0.9.GA</version.jboss.microcontainer>
- <version.jboss.common.core>2.2.14.GA</version.jboss.common.core>
+ <version.jboss.common.core>2.2.16.GA</version.jboss.common.core>
<version.jboss.logging.spi>2.2.0.CR1</version.jboss.logging.spi>
<version.jboss.classloading.spi>5.1.0.SP1</version.jboss.classloading.spi>
<version.jbossxb>2.0.1.GA</version.jbossxb>
<version.org.jboss.test>1.1.1.GA</version.org.jboss.test>
<version.junit>4.4</version.junit>
- <version.javassist>3.10.0.GA</version.javassist>
+ <version.javassist>3.11.0.GA</version.javassist>
</properties>
<build>
More information about the jboss-cvs-commits
mailing list