[jboss-cvs] JBossAS SVN: r78989 - projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/visitor.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Oct 1 09:16:01 EDT 2008


Author: alesj
Date: 2008-10-01 09:16:01 -0400 (Wed, 01 Oct 2008)
New Revision: 78989

Modified:
   projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/visitor/FederatedResourceVisitor.java
Log:
Remember generated federated filters.

Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/visitor/FederatedResourceVisitor.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/visitor/FederatedResourceVisitor.java	2008-10-01 13:09:15 UTC (rev 78988)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/plugins/visitor/FederatedResourceVisitor.java	2008-10-01 13:16:01 UTC (rev 78989)
@@ -21,9 +21,11 @@
 */
 package org.jboss.classloading.plugins.visitor;
 
+import java.util.Arrays;
+
+import org.jboss.classloading.spi.visitor.ResourceContext;
+import org.jboss.classloading.spi.visitor.ResourceFilter;
 import org.jboss.classloading.spi.visitor.ResourceVisitor;
-import org.jboss.classloading.spi.visitor.ResourceFilter;
-import org.jboss.classloading.spi.visitor.ResourceContext;
 
 /**
  * Federated resource visitor.
@@ -35,13 +37,16 @@
    private ResourceVisitor[] visitors;
    private ResourceFilter[] filters;
    private ResourceFilter[] recurseFilters;
+
+   private ResourceFilter filter;
+   private ResourceFilter recurseFilter;
    private boolean[] recurseFlags;
    private boolean[] filterFlags;
 
    public FederatedResourceVisitor(ResourceVisitor[] visitors)
    {
-      if (visitors == null)
-         throw new IllegalArgumentException("Null visitors");
+      if (visitors == null || visitors.length == 0)
+         throw new IllegalArgumentException("Null or empty visitors: " + Arrays.toString(visitors));
       this.visitors = visitors;
    }
 
@@ -57,8 +62,12 @@
       if (recurseFilters == null || recurseFilters.length == 0)
          return null;
 
-      recurseFlags = new boolean[recurseFilters.length];
-      return new FederatedRecurseFilter();
+      if (recurseFilter == null)
+      {
+         recurseFlags = new boolean[recurseFilters.length];
+         recurseFilter = new FederatedRecurseFilter();
+      }
+      return recurseFilter;
    }
 
    public ResourceFilter getFilter()
@@ -66,15 +75,19 @@
       if (filters != null && filters.length == 0)
          return null;
 
-      if (filters == null)
+      if (filter == null)
       {
-         filters = new ResourceFilter[visitors.length];
-         for (int i =0; i < visitors.length; i++)
-            filters[i] = visitors[i].getFilter();
+         if (filters == null)
+         {
+            filters = new ResourceFilter[visitors.length];
+            for (int i =0; i < visitors.length; i++)
+               filters[i] = visitors[i].getFilter();
+         }
+
+         filterFlags = new boolean[filters == null ? 0 : filters.length];
+         filter = new FederatedResourceFilter();
       }
-
-      filterFlags = new boolean[filters == null ? 0 : filters.length];           
-      return new FederatedResourceFilter();
+      return filter;
    }
 
    public void visit(ResourceContext resource)




More information about the jboss-cvs-commits mailing list