[jboss-cvs] JBossAS SVN: r69854 - in projects/microcontainer/trunk/classloader/src: tests/org/jboss/test/classloader/filter/test and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Feb 15 09:00:50 EST 2008


Author: adrian at jboss.org
Date: 2008-02-15 09:00:50 -0500 (Fri, 15 Feb 2008)
New Revision: 69854

Modified:
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/PackageClassFilter.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/PackageFilterUnitTestCase.java
Log:
Add the ability to parse a package filter from a comma seperated string

Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/PackageClassFilter.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/PackageClassFilter.java	2008-02-15 13:59:13 UTC (rev 69853)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/PackageClassFilter.java	2008-02-15 14:00:50 UTC (rev 69854)
@@ -21,7 +21,10 @@
  */
 package org.jboss.classloader.spi.filter;
 
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
+import java.util.StringTokenizer;
 
 import org.jboss.classloader.plugins.filter.PatternClassFilter;
 
@@ -89,6 +92,23 @@
       }
       return patterns;
    }
+
+   /**
+    * 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)
+   {
+      StringTokenizer tokenizer = new StringTokenizer(string, ",");
+      List<String> packages = new ArrayList<String>();
+      while (tokenizer.hasMoreTokens())
+         packages.add(tokenizer.nextToken());
+      return createPackageClassFilter(packages);
+   }
    
    /**
     * Create a new package class filter
@@ -103,6 +123,23 @@
    }
    
    /**
+    * 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)
+   {
+      String[] packages;
+      if (packageNames == null)
+         packages = new String[0];
+      else
+         packages = packageNames.toArray(new String[packageNames.size()]);
+      return new PackageClassFilter(packages);
+   }
+   
+   /**
     * Create a new PackageClassFilter.
     * 
     * @param packageNames the packageNames

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/PackageFilterUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/PackageFilterUnitTestCase.java	2008-02-15 13:59:13 UTC (rev 69853)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/PackageFilterUnitTestCase.java	2008-02-15 14:00:50 UTC (rev 69854)
@@ -103,6 +103,32 @@
       assertFilterNoMatchPackageName(null, filter);
    }
    
+   public void testFromString() throws Exception
+   {
+      ClassFilter filter = PackageClassFilter.createPackageClassFilterFromString("java.lang,java.lang.reflect");
+      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);
+   }
+   
    public void testDefaultPackage() throws Exception
    {
       ClassFilter filter = PackageClassFilter.createPackageClassFilter("");




More information about the jboss-cvs-commits mailing list