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)); } /**