[jboss-cvs] JBossAS SVN: r69855 - in projects/microcontainer/trunk/classloader/src: tests/org/jboss/test/classloader/filter and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Feb 15 09:02:09 EST 2008
Author: adrian at jboss.org
Date: 2008-02-15 09:02:09 -0500 (Fri, 15 Feb 2008)
New Revision: 69855
Added:
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/CombiningFilterUnitTestCase.java
Modified:
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/CombiningClassFilter.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/FilterTestSuite.java
Log:
Allow the combining class filter to use and/or logic, i.e. all or one filter must match
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/CombiningClassFilter.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/CombiningClassFilter.java 2008-02-15 14:00:50 UTC (rev 69854)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/CombiningClassFilter.java 2008-02-15 14:02:09 UTC (rev 69855)
@@ -31,6 +31,9 @@
*/
public class CombiningClassFilter implements ClassFilter
{
+ /** Whether it is an "and" filter */
+ private boolean and = false;
+
/** The filters */
private ClassFilter[] filters;
@@ -43,19 +46,34 @@
*/
public static CombiningClassFilter create(ClassFilter... filters)
{
- return new CombiningClassFilter(filters);
+ return new CombiningClassFilter(false, filters);
}
/**
* Create a new CombiningClassFilter.
*
+ * @param and whether it is an "and" filter
* @param filters the filters
+ * @return the filter
* @throws IllegalArgumentException for null filters
*/
- public CombiningClassFilter(ClassFilter[] filters)
+ public static CombiningClassFilter create(boolean and, ClassFilter... filters)
{
+ return new CombiningClassFilter(and, filters);
+ }
+
+ /**
+ * Create a new CombiningClassFilter.
+ *
+ * @param and whether it is an "and" filter
+ * @param filters the filters
+ * @throws IllegalArgumentException for null filters
+ */
+ public CombiningClassFilter(boolean and, ClassFilter[] filters)
+ {
if (filters == null)
throw new IllegalArgumentException("Null filters");
+ this.and = and;
this.filters = filters;
}
@@ -65,6 +83,8 @@
{
if (filter.matchesClassName(className))
return true;
+ else if (and)
+ return false;
}
return false;
}
@@ -75,6 +95,8 @@
{
if (filter.matchesResourcePath(resourcePath))
return true;
+ else if (and)
+ return false;
}
return false;
}
@@ -85,6 +107,8 @@
{
if (filter.matchesPackageName(packageName))
return true;
+ else if (and)
+ return false;
}
return false;
}
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/FilterTestSuite.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/FilterTestSuite.java 2008-02-15 14:00:50 UTC (rev 69854)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/FilterTestSuite.java 2008-02-15 14:02:09 UTC (rev 69855)
@@ -25,6 +25,7 @@
import junit.framework.TestSuite;
import junit.textui.TestRunner;
+import org.jboss.test.classloader.filter.test.CombiningFilterUnitTestCase;
import org.jboss.test.classloader.filter.test.FilterUnitTestCase;
import org.jboss.test.classloader.filter.test.PackageFilterUnitTestCase;
@@ -57,6 +58,7 @@
suite.addTest(FilterUnitTestCase.suite());
suite.addTest(PackageFilterUnitTestCase.suite());
+ suite.addTest(CombiningFilterUnitTestCase.suite());
return suite;
}
Added: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/CombiningFilterUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/CombiningFilterUnitTestCase.java (rev 0)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/CombiningFilterUnitTestCase.java 2008-02-15 14:02:09 UTC (rev 69855)
@@ -0,0 +1,110 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.filter.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloader.plugins.filter.CombiningClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.PackageClassFilter;
+import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
+
+/**
+ * CombiningFilterUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class CombiningFilterUnitTestCase extends AbstractClassLoaderTestWithSecurity
+{
+ public static Test suite()
+ {
+ return suite(CombiningFilterUnitTestCase.class);
+ }
+
+ public CombiningFilterUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testNothing() throws Exception
+ {
+ ClassFilter filter = CombiningClassFilter.create();
+ assertFilterNoMatchClassName("gibberish", filter);
+ assertFilterNoMatchClassName("", filter);
+ assertFilterNoMatchClassName(null, filter);
+ assertFilterNoMatchResourcePath("x.xml", filter);
+ assertFilterNoMatchPackageName("gibberish", filter);
+ assertFilterNoMatchPackageName("", filter);
+ assertFilterNoMatchPackageName(null, filter);
+ }
+
+ public void testJavaLangReflectAnd() throws Exception
+ {
+ ClassFilter filter1 = PackageClassFilter.createPackageClassFilter("java.lang");
+ ClassFilter filter2 = PackageClassFilter.createPackageClassFilter("java.lang.reflect");
+ ClassFilter filter = CombiningClassFilter.create(true, filter1, filter2);
+ assertFilterMatchesClassName("java.lang.Object", filter);
+ assertFilterMatchesClassName("java.lang.X", filter);
+ assertFilterNoMatchClassName("java.lang", filter);
+ assertFilterNoMatchClassName("java.lang.", filter);
+ assertFilterNoMatchClassName("java.lang.reflect.Method", filter);
+ assertFilterNoMatchClassName("gibberish", filter);
+ assertFilterNoMatchClassName("", filter);
+ assertFilterNoMatchClassName(null, filter);
+ assertFilterMatchesResourcePath("java/lang/something.xml", filter);
+ assertFilterMatchesPackageName("java.lang", filter);
+ assertFilterNoMatchPackageName("java.langx", filter);
+ assertFilterNoMatchPackageName("java.lang.X.", filter);
+ assertFilterNoMatchPackageName("gibberish", filter);
+ assertFilterNoMatchPackageName("", filter);
+ assertFilterNoMatchPackageName(null, filter);
+ }
+
+ public void testJavaLangReflectOr() throws Exception
+ {
+ ClassFilter filter1 = PackageClassFilter.createPackageClassFilter("java.lang");
+ ClassFilter filter2 = PackageClassFilter.createPackageClassFilter("java.lang.reflect");
+ ClassFilter filter = CombiningClassFilter.create(false, filter1, filter2);
+ assertFilterMatchesClassName("java.lang.Object", filter);
+ assertFilterMatchesClassName("java.lang.X", filter);
+ assertFilterMatchesClassName("java.lang.reflect.Method", filter);
+ assertFilterMatchesClassName("java.lang.reflect.X", filter);
+ assertFilterMatchesClassName("java.lang.reflect", filter);
+ assertFilterNoMatchClassName("java.lang", filter);
+ assertFilterNoMatchClassName("java.lang.", filter);
+ assertFilterNoMatchClassName("java.lang.reflect.", filter);
+ assertFilterNoMatchClassName("java.lang.reflect.subpackage.Something", filter);
+ assertFilterNoMatchClassName("gibberish", filter);
+ assertFilterNoMatchClassName("", filter);
+ assertFilterNoMatchClassName(null, filter);
+ assertFilterMatchesPackageName("java.lang", filter);
+ assertFilterNoMatchPackageName("java.langx", filter);
+ assertFilterNoMatchPackageName("java.lang.X.", filter);
+ assertFilterMatchesPackageName("java.lang.reflect", filter);
+ assertFilterNoMatchPackageName("java.lang.reflectx", filter);
+ assertFilterNoMatchPackageName("java.lang.reflect.X", filter);
+ assertFilterNoMatchPackageName("gibberish", filter);
+ assertFilterNoMatchPackageName("", filter);
+ assertFilterNoMatchPackageName(null, filter);
+ }
+}
More information about the jboss-cvs-commits
mailing list