Updated Branches: refs/heads/master b5d81b36b -> 2b4a0c99e
fixed warnings, ClassVisitFilter has no use for generic parameter, added AllVisitFilter Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/2b4a0c99 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/2b4a0c99 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/2b4a0c99 Branch: refs/heads/master Commit: 2b4a0c99e742476658f271f0b7ebd60c653b9969 Parents: b5d81b3 Author: Sven Meier <[email protected]> Authored: Thu Jun 14 22:10:24 2012 +0200 Committer: Sven Meier <[email protected]> Committed: Thu Jun 14 22:10:24 2012 +0200 ---------------------------------------------------------------------- .../src/main/java/org/apache/wicket/Component.java | 23 +++------ .../test/java/org/apache/wicket/VisitorTest.java | 8 ++- .../apache/wicket/util/visit/AllVisitFilter.java | 37 ++++++++++++++ .../apache/wicket/util/visit/ClassVisitFilter.java | 12 +++-- .../wicket/util/visit/AllVisitFilterTest.java | 39 +++++++++++++++ .../wicket/util/visit/ClassVisitFilterTest.java | 13 +++-- 6 files changed, 104 insertions(+), 28 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/2b4a0c99/wicket-core/src/main/java/org/apache/wicket/Component.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java b/wicket-core/src/main/java/org/apache/wicket/Component.java index 4cb377c..6686d98 100644 --- a/wicket-core/src/main/java/org/apache/wicket/Component.java +++ b/wicket-core/src/main/java/org/apache/wicket/Component.java @@ -86,8 +86,9 @@ import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.string.PrependingStringBuffer; import org.apache.wicket.util.string.Strings; import org.apache.wicket.util.value.ValueMap; -import org.apache.wicket.util.visit.ClassVisitFilter; +import org.apache.wicket.util.visit.AllVisitFilter; import org.apache.wicket.util.visit.IVisit; +import org.apache.wicket.util.visit.IVisitFilter; import org.apache.wicket.util.visit.IVisitor; import org.apache.wicket.util.visit.Visit; import org.slf4j.Logger; @@ -3399,17 +3400,9 @@ public abstract class Component public final <R, C extends MarkupContainer> R visitParents(final Class<C> parentClass, final IVisitor<C, R> visitor) { - return visitParents(parentClass, visitor, new ClassVisitFilter<R>(null) - { - @Override - public boolean visitObject(Object object) - { - return true; - } - }); + return visitParents(parentClass, visitor, new AllVisitFilter()); } - /** * Traverses all parent components of the given class in this parentClass, calling the visitor's * visit method at each one. @@ -3424,15 +3417,15 @@ public abstract class Component * a filter that adds an additional logic to the condition whether a parent container * matches * @return First non-null value returned by visitor callback - * @see org.apache.wicket.util.visit.ClassVisitFilter */ + @SuppressWarnings("unchecked") public final <R, C extends MarkupContainer> R visitParents(final Class<C> parentClass, - final IVisitor<C, R> visitor, ClassVisitFilter<R> filter) + final IVisitor<C, R> visitor, IVisitFilter filter) { Args.notNull(filter, "filter"); // Start here - C current = (C)getParent(); + MarkupContainer current = getParent(); Visit<R> visit = new Visit<R>(); @@ -3442,7 +3435,7 @@ public abstract class Component // Is current an instance of this class? if (parentClass.isInstance(current) && filter.visitObject(current)) { - visitor.component(current, visit); + visitor.component((C)current, visit); if (visit.isStopped()) { return visit.getResult(); @@ -3450,7 +3443,7 @@ public abstract class Component } // Check parent - current = (C)current.getParent(); + current = current.getParent(); } return null; } http://git-wip-us.apache.org/repos/asf/wicket/blob/2b4a0c99/wicket-core/src/test/java/org/apache/wicket/VisitorTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/VisitorTest.java b/wicket-core/src/test/java/org/apache/wicket/VisitorTest.java index f1d7c0f..a91c399 100644 --- a/wicket-core/src/test/java/org/apache/wicket/VisitorTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/VisitorTest.java @@ -183,7 +183,7 @@ public class VisitorTest extends WicketTestCase /** * https://issues.apache.org/jira/browse/WICKET-3805 - * + * * Visit parents with arbitrary type */ public void testVisitParents() @@ -193,11 +193,11 @@ public class VisitorTest extends WicketTestCase { public void component(MarkupContainer object, IVisit<MarkerInterface> visit) { - visit.stop((MarkerInterface) object); + visit.stop((MarkerInterface)object); } }; MarkerInterface markedParent = testContainer.get("G:H").visitParents(MarkupContainer.class, - visitor, new ClassVisitFilter<MarkerInterface>(MarkerInterface.class)); + visitor, new ClassVisitFilter(MarkerInterface.class)); assertEquals("G", markedParent.getId()); } @@ -210,6 +210,8 @@ public class VisitorTest extends WicketTestCase implements MarkerInterface { + private static final long serialVersionUID = 1L; + public MarkedWebMarkupContainer(String id) { super(id); http://git-wip-us.apache.org/repos/asf/wicket/blob/2b4a0c99/wicket-util/src/main/java/org/apache/wicket/util/visit/AllVisitFilter.java ---------------------------------------------------------------------- diff --git a/wicket-util/src/main/java/org/apache/wicket/util/visit/AllVisitFilter.java b/wicket-util/src/main/java/org/apache/wicket/util/visit/AllVisitFilter.java new file mode 100644 index 0000000..80d6794 --- /dev/null +++ b/wicket-util/src/main/java/org/apache/wicket/util/visit/AllVisitFilter.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.util.visit; + +/** + * {@link IVisitFilter} that let visitors visit all. + * + * @author igor.vaynberg + */ +public class AllVisitFilter implements IVisitFilter +{ + /** {@inheritDoc} */ + public boolean visitChildren(final Object object) + { + return true; + } + + /** {@inheritDoc} */ + public boolean visitObject(final Object object) + { + return true; + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/2b4a0c99/wicket-util/src/main/java/org/apache/wicket/util/visit/ClassVisitFilter.java ---------------------------------------------------------------------- diff --git a/wicket-util/src/main/java/org/apache/wicket/util/visit/ClassVisitFilter.java b/wicket-util/src/main/java/org/apache/wicket/util/visit/ClassVisitFilter.java index 0a7d0b1..57f3500 100644 --- a/wicket-util/src/main/java/org/apache/wicket/util/visit/ClassVisitFilter.java +++ b/wicket-util/src/main/java/org/apache/wicket/util/visit/ClassVisitFilter.java @@ -16,14 +16,16 @@ */ package org.apache.wicket.util.visit; +import org.apache.wicket.util.lang.Args; + /** * {@link IVisitFilter} that restricts visitors to only visiting objects of the specified class * * @author igor.vaynberg */ -public class ClassVisitFilter<T> implements IVisitFilter +public class ClassVisitFilter implements IVisitFilter { - private final Class<T> clazz; + private final Class<?> clazz; /** * Constructor @@ -31,8 +33,10 @@ public class ClassVisitFilter<T> implements IVisitFilter * @param clazz * class of objects that visitors should be restricted to */ - public ClassVisitFilter(final Class<T> clazz) + public ClassVisitFilter(final Class<?> clazz) { + Args.notNull(clazz, "clazz"); + this.clazz = clazz; } @@ -45,6 +49,6 @@ public class ClassVisitFilter<T> implements IVisitFilter /** {@inheritDoc} */ public boolean visitObject(final Object object) { - return clazz == null || clazz.isAssignableFrom(object.getClass()); + return clazz.isAssignableFrom(object.getClass()); } } http://git-wip-us.apache.org/repos/asf/wicket/blob/2b4a0c99/wicket-util/src/test/java/org/apache/wicket/util/visit/AllVisitFilterTest.java ---------------------------------------------------------------------- diff --git a/wicket-util/src/test/java/org/apache/wicket/util/visit/AllVisitFilterTest.java b/wicket-util/src/test/java/org/apache/wicket/util/visit/AllVisitFilterTest.java new file mode 100644 index 0000000..2eb972d --- /dev/null +++ b/wicket-util/src/test/java/org/apache/wicket/util/visit/AllVisitFilterTest.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.util.visit; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Test for {@link AllVisitFilter}. + * + * @since 1.5.7 + */ +public class AllVisitFilterTest extends Assert +{ + /** + * @throws Exception + */ + @Test + public void visitAll() throws Exception + { + IVisitFilter filter = new AllVisitFilter(); + assertTrue(filter.visitObject("a string")); + assertTrue(filter.visitObject(123)); + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/2b4a0c99/wicket-util/src/test/java/org/apache/wicket/util/visit/ClassVisitFilterTest.java ---------------------------------------------------------------------- diff --git a/wicket-util/src/test/java/org/apache/wicket/util/visit/ClassVisitFilterTest.java b/wicket-util/src/test/java/org/apache/wicket/util/visit/ClassVisitFilterTest.java index b93c5f4..01894c4 100644 --- a/wicket-util/src/test/java/org/apache/wicket/util/visit/ClassVisitFilterTest.java +++ b/wicket-util/src/test/java/org/apache/wicket/util/visit/ClassVisitFilterTest.java @@ -20,19 +20,20 @@ import org.junit.Assert; import org.junit.Test; /** + * Test for {@link ClassVisitFilter}. + * * @since 1.5.7 */ public class ClassVisitFilterTest extends Assert { + /** + * @throws Exception + */ @Test - public void visitObject() throws Exception + public void visitStrings() throws Exception { - ClassVisitFilter<String> filter = new ClassVisitFilter<String>(String.class); + ClassVisitFilter filter = new ClassVisitFilter(String.class); assertTrue(filter.visitObject("a string")); assertFalse(filter.visitObject(123)); - - filter = new ClassVisitFilter<String>(null); - assertTrue(filter.visitObject("a string")); - assertTrue(filter.visitObject(123)); } }
