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