Author: ivaynberg
Date: Thu Mar 25 07:53:59 2010
New Revision: 927294

URL: http://svn.apache.org/viewvc?rev=927294&view=rev
Log:
more visitor cleanup

Added:
    
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/ClassVisitFilter.java
   (with props)
Modified:
    
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/IVisitFilter.java
    
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/Visits.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java

Added: 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/ClassVisitFilter.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/ClassVisitFilter.java?rev=927294&view=auto
==============================================================================
--- 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/ClassVisitFilter.java
 (added)
+++ 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/ClassVisitFilter.java
 Thu Mar 25 07:53:59 2010
@@ -0,0 +1,21 @@
+package org.apache.wicket.util.visit;
+
+public class ClassVisitFilter implements IVisitFilter
+{
+       private final Class<?> clazz;
+
+       public ClassVisitFilter(Class<?> clazz)
+       {
+               this.clazz = clazz;
+       }
+
+       public boolean visitChildren(Object object)
+       {
+               return true;
+       }
+
+       public boolean visitObject(Object object)
+       {
+               return clazz.isAssignableFrom(object.getClass());
+       }
+}

Propchange: 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/ClassVisitFilter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/IVisitFilter.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/IVisitFilter.java?rev=927294&r1=927293&r2=927294&view=diff
==============================================================================
--- 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/IVisitFilter.java
 (original)
+++ 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/IVisitFilter.java
 Thu Mar 25 07:53:59 2010
@@ -18,4 +18,5 @@ public interface IVisitFilter
                        return true;
                }
        };
+       
 }

Modified: 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/Visits.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/Visits.java?rev=927294&r1=927293&r2=927294&view=diff
==============================================================================
--- 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/Visits.java 
(original)
+++ 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/visit/Visits.java 
Thu Mar 25 07:53:59 2010
@@ -6,17 +6,17 @@ import java.util.Iterator;
 public class Visits
 {
        // TODO replace class argument with IVisitFilter
-       public static final <S, R> R visitChildren(Iterable<?> container, final 
Class<?> clazz,
-                       final IVisitor<S, R> visitor)
+       public static final <S, R> R visitChildren(Iterable<?> container, 
+                       final IVisitor<S, R> visitor, IVisitFilter filter)
        {
                Visit<R> visit = new Visit<R>();
-               visitChildren(container, clazz, visitor, visit);
+               visitChildren(container, visitor, filter, visit);
                return visit.getResult();
        }
 
 
-       private static final <S, R> void visitChildren(Iterable<?> container, 
final Class<?> clazz,
-                       final IVisitor<S, R> visitor, Visit<R> visit)
+       private static final <S, R> void visitChildren(Iterable<?> container, 
+                       final IVisitor<S, R> visitor, IVisitFilter filter, 
Visit<R> visit)
        {
                if (visitor == null)
                {
@@ -30,7 +30,7 @@ public class Visits
                        final Object child = children.next();
 
                        // Is the child of the correct class (or was no class 
specified)?
-                       if (clazz == null || clazz.isInstance(child))
+                       if (filter.visitObject(child))
                        {
                                Visit<R> childTraversal = new Visit<R>();
 
@@ -51,10 +51,10 @@ public class Visits
                        }
 
                        // If child is a container
-                       if (!visit.isDontGoDeeper() && (child instanceof 
Iterable<?>))
+                       if (!visit.isDontGoDeeper() && (child instanceof 
Iterable<?>)&&filter.visitChildren(child))
                        {
                                // visit the children in the container
-                               visitChildren((Iterable<?>)child, clazz, 
visitor, visit);
+                               visitChildren((Iterable<?>)child,  visitor, 
filter, visit);
 
                                if (visit.isStopped())
                                {
@@ -77,7 +77,7 @@ public class Visits
         */
        public static final <S, R> R visitChildren(Iterable<?> visitable, final 
IVisitor<S, R> visitor)
        {
-               return visitChildren(visitable, null, visitor);
+               return visitChildren(visitable, visitor, IVisitFilter.ANY);
        }
 
        /**

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java?rev=927294&r1=927293&r2=927294&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java 
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java 
Thu Mar 25 07:53:59 2010
@@ -41,6 +41,7 @@ import org.apache.wicket.model.IWrapMode
 import org.apache.wicket.settings.IDebugSettings;
 import org.apache.wicket.util.string.ComponentStrings;
 import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.util.visit.ClassVisitFilter;
 import org.apache.wicket.util.visit.IVisit;
 import org.apache.wicket.util.visit.IVisitor;
 import org.apache.wicket.util.visit.Visits;
@@ -904,7 +905,7 @@ public abstract class MarkupContainer ex
        public final <S extends Component, R> R visitChildren(final Class<?> 
clazz,
                final IVisitor<S, R> visitor)
        {
-               return Visits.visitChildren(this, clazz, visitor);
+               return Visits.visitChildren(this, visitor, new 
ClassVisitFilter(clazz));
        }
 
        /**


Reply via email to