You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2010/03/25 08:53:59 UTC

svn commit: r927294 - in /wicket/trunk: wicket-util/src/main/java/org/apache/wicket/util/visit/ wicket/src/main/java/org/apache/wicket/

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