You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2010/05/27 19:32:45 UTC

svn commit: r948920 - in /tapestry/tapestry5/trunk: tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/ ...

Author: hlship
Date: Thu May 27 17:32:45 2010
New Revision: 948920

URL: http://svn.apache.org/viewvc?rev=948920&view=rev
Log:
Refactor Predicate from an interface to an abstract base class

Removed:
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/AbstractPredicate.java
Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageLifecycleAnnotationWorker.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageResetAnnotationWorker.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderPhaseMethodWorker.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/F.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/Predicate.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InternalUtilsTest.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/func/FuncTest.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java?rev=948920&r1=948919&r2=948920&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java Thu May 27 17:32:45 2010
@@ -40,7 +40,7 @@ import org.apache.tapestry5.ioc.services
 import org.apache.tapestry5.ioc.services.FieldValueConduit;
 import org.apache.tapestry5.ioc.services.MethodSignature;
 import org.apache.tapestry5.ioc.util.BodyBuilder;
-import org.apache.tapestry5.ioc.util.func.AbstractPredicate;
+import org.apache.tapestry5.ioc.util.func.Predicate;
 import org.apache.tapestry5.ioc.util.func.Predicate;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.model.MutableComponentModel;
@@ -1472,7 +1472,7 @@ public final class InternalClassTransfor
 
         failIfFrozen();
 
-        List<TransformField> fields = matchFields(new AbstractPredicate<TransformField>()
+        List<TransformField> fields = matchFields(new Predicate<TransformField>()
         {
             public boolean accept(TransformField object)
             {
@@ -1492,7 +1492,7 @@ public final class InternalClassTransfor
 
     public List<TransformField> matchFieldsWithAnnotation(final Class<? extends Annotation> annotationClass)
     {
-        return matchFields(new AbstractPredicate<TransformField>()
+        return matchFields(new Predicate<TransformField>()
         {
             public boolean accept(TransformField field)
             {
@@ -1503,7 +1503,7 @@ public final class InternalClassTransfor
 
     public List<TransformMethodSignature> findMethodsWithAnnotation(final Class<? extends Annotation> annotationClass)
     {
-        List<TransformMethod> methods = matchMethods(new AbstractPredicate<TransformMethod>()
+        List<TransformMethod> methods = matchMethods(new Predicate<TransformMethod>()
         {
             public boolean accept(TransformMethod method)
             {
@@ -1518,7 +1518,7 @@ public final class InternalClassTransfor
     {
         Defense.notNull(filter, "filter");
 
-        List<TransformMethod> methods = matchMethods(new AbstractPredicate<TransformMethod>()
+        List<TransformMethod> methods = matchMethods(new Predicate<TransformMethod>()
         {
             public boolean accept(TransformMethod object)
             {
@@ -1538,7 +1538,7 @@ public final class InternalClassTransfor
 
     public List<TransformMethod> matchMethodsWithAnnotation(final Class<? extends Annotation> annotationType)
     {
-        return matchMethods(new AbstractPredicate<TransformMethod>()
+        return matchMethods(new Predicate<TransformMethod>()
         {
             public boolean accept(TransformMethod method)
             {
@@ -1580,7 +1580,7 @@ public final class InternalClassTransfor
 
     public List<TransformField> matchUnclaimedFields()
     {
-        return matchFields(new AbstractPredicate<TransformField>()
+        return matchFields(new Predicate<TransformField>()
         {
             public boolean accept(TransformField object)
             {

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java?rev=948920&r1=948919&r2=948920&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java Thu May 27 17:32:45 2010
@@ -22,7 +22,7 @@ import org.apache.tapestry5.annotations.
 import org.apache.tapestry5.annotations.SessionState;
 import org.apache.tapestry5.internal.services.ComponentClassCache;
 import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.ioc.util.func.AbstractPredicate;
+import org.apache.tapestry5.ioc.util.func.Predicate;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.services.ApplicationStateManager;
 import org.apache.tapestry5.services.ClassTransformation;
@@ -95,7 +95,7 @@ public class ApplicationStateWorker impl
 
         final String expectedName = field.getName() + "Exists";
 
-        List<TransformField> fields = transformation.matchFields(new AbstractPredicate<TransformField>()
+        List<TransformField> fields = transformation.matchFields(new Predicate<TransformField>()
         {
             public boolean accept(TransformField field)
             {

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java?rev=948920&r1=948919&r2=948920&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java Thu May 27 17:32:45 2010
@@ -25,7 +25,7 @@ import org.apache.tapestry5.annotations.
 import org.apache.tapestry5.internal.services.ComponentClassCache;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.func.AbstractPredicate;
+import org.apache.tapestry5.ioc.util.func.Predicate;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.runtime.ComponentEvent;
 import org.apache.tapestry5.services.ClassTransformation;
@@ -177,7 +177,7 @@ public class OnEventWorker implements Co
 
     private List<TransformMethod> matchEventHandlerMethods(ClassTransformation transformation)
     {
-        return transformation.matchMethods(new AbstractPredicate<TransformMethod>()
+        return transformation.matchMethods(new Predicate<TransformMethod>()
         {
             public boolean accept(TransformMethod method)
             {

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageLifecycleAnnotationWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageLifecycleAnnotationWorker.java?rev=948920&r1=948919&r2=948920&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageLifecycleAnnotationWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageLifecycleAnnotationWorker.java Thu May 27 17:32:45 2010
@@ -17,7 +17,7 @@ package org.apache.tapestry5.internal.tr
 import java.lang.annotation.Annotation;
 import java.util.List;
 
-import org.apache.tapestry5.ioc.util.func.AbstractPredicate;
+import org.apache.tapestry5.ioc.util.func.Predicate;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.services.ClassTransformation;
 import org.apache.tapestry5.services.ComponentClassTransformWorker;
@@ -97,7 +97,7 @@ public class PageLifecycleAnnotationWork
 
     private List<TransformMethod> matchLifecycleMethods(final ClassTransformation transformation)
     {
-        return transformation.matchMethods(new AbstractPredicate<TransformMethod>()
+        return transformation.matchMethods(new Predicate<TransformMethod>()
         {
 
             public boolean accept(TransformMethod method)

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageResetAnnotationWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageResetAnnotationWorker.java?rev=948920&r1=948919&r2=948920&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageResetAnnotationWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageResetAnnotationWorker.java Thu May 27 17:32:45 2010
@@ -20,7 +20,7 @@ import org.apache.tapestry5.annotations.
 import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.structure.PageResetListener;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.func.AbstractPredicate;
+import org.apache.tapestry5.ioc.util.func.Predicate;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.services.ClassTransformation;
 import org.apache.tapestry5.services.ComponentClassTransformWorker;
@@ -132,7 +132,7 @@ public class PageResetAnnotationWorker i
 
     private List<TransformMethod> matchPageResetMethods(final ClassTransformation transformation)
     {
-        return transformation.matchMethods(new AbstractPredicate<TransformMethod>()
+        return transformation.matchMethods(new Predicate<TransformMethod>()
         {
             public boolean accept(TransformMethod method)
             {

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java?rev=948920&r1=948919&r2=948920&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java Thu May 27 17:32:45 2010
@@ -25,7 +25,7 @@ import org.apache.tapestry5.internal.ser
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.util.func.AbstractPredicate;
+import org.apache.tapestry5.ioc.util.func.Predicate;
 import org.apache.tapestry5.ioc.util.func.Predicate;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.services.*;
@@ -134,7 +134,7 @@ public class ParameterWorker implements 
 
     private List<TransformField> matchParameterFields(ClassTransformation transformation, final boolean principal)
     {
-        Predicate<TransformField> predicate = new AbstractPredicate<TransformField>()
+        Predicate<TransformField> predicate = new Predicate<TransformField>()
         {
             public boolean accept(TransformField field)
             {
@@ -438,7 +438,7 @@ public class ParameterWorker implements 
     {
         final String methodName = "default" + parameterName;
 
-        Predicate<TransformMethod> predicate = new AbstractPredicate<TransformMethod>()
+        Predicate<TransformMethod> predicate = new Predicate<TransformMethod>()
         {
             public boolean accept(TransformMethod method)
             {

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderPhaseMethodWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderPhaseMethodWorker.java?rev=948920&r1=948919&r2=948920&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderPhaseMethodWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderPhaseMethodWorker.java Thu May 27 17:32:45 2010
@@ -32,7 +32,7 @@ import org.apache.tapestry5.annotations.
 import org.apache.tapestry5.annotations.SetupRender;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.func.AbstractPredicate;
+import org.apache.tapestry5.ioc.util.func.Predicate;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.runtime.Event;
 import org.apache.tapestry5.services.ClassTransformation;
@@ -263,7 +263,7 @@ public class RenderPhaseMethodWorker imp
 
     private List<TransformMethod> matchAllMethodsNotOverriddenFromBaseClass(final ClassTransformation transformation)
     {
-        return transformation.matchMethods(new AbstractPredicate<TransformMethod>()
+        return transformation.matchMethods(new Predicate<TransformMethod>()
         {
             public boolean accept(TransformMethod method)
             {

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/F.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/F.java?rev=948920&r1=948919&r2=948920&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/F.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/F.java Thu May 27 17:32:45 2010
@@ -32,7 +32,6 @@ import org.apache.tapestry5.ioc.services
  */
 public class F
 {
-
     /**
      * Functional map (i.e., transform operation) from a Collection&lt;S&gt; to List&lt;T&gt;.
      */
@@ -132,7 +131,7 @@ public class F
 
     public static Predicate<Number> eq(final long value)
     {
-        return new AbstractPredicate<Number>()
+        return new Predicate<Number>()
         {
             public boolean accept(Number object)
             {
@@ -148,7 +147,7 @@ public class F
 
     public static Predicate<Number> gt(final long value)
     {
-        return new AbstractPredicate<Number>()
+        return new Predicate<Number>()
         {
             public boolean accept(Number object)
             {
@@ -174,7 +173,7 @@ public class F
 
     public static <T> Predicate<T> isNull()
     {
-        return new AbstractPredicate<T>()
+        return new Predicate<T>()
         {
             public boolean accept(T object)
             {
@@ -213,8 +212,8 @@ public class F
      * @param ifRejected
      *            used when predicate evaluates to false
      */
-    public static <S, T> Mapper<S, T> select(final Predicate<? super S> predicate,
-            final Mapper<S, T> ifAccepted, final Mapper<S, T> ifRejected)
+    public static <S, T> Mapper<S, T> select(final Predicate<? super S> predicate, final Mapper<S, T> ifAccepted,
+            final Mapper<S, T> ifRejected)
     {
         return new Mapper<S, T>()
         {
@@ -238,8 +237,7 @@ public class F
     /**
      * Override of {@link #select(Predicate, Mapper)} where rejected values are replaced with a fixed value.
      */
-    public static <S, T> Mapper<S, T> select(Predicate<? super S> predicate, Mapper<S, T> ifAccepted,
-            T ifRejected)
+    public static <S, T> Mapper<S, T> select(Predicate<? super S> predicate, Mapper<S, T> ifAccepted, T ifRejected)
     {
         Mapper<S, T> rejectedMapper = always(ifRejected);
 
@@ -261,7 +259,7 @@ public class F
     /** Allows Mapper that maps to boolean to be used as a Predicate. */
     public static <S> Predicate<S> toPredicate(final Mapper<S, Boolean> mapper)
     {
-        return new AbstractPredicate<S>()
+        return new Predicate<S>()
         {
             public boolean accept(S object)
             {

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/Predicate.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/Predicate.java?rev=948920&r1=948919&r2=948920&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/Predicate.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/Predicate.java Thu May 27 17:32:45 2010
@@ -14,6 +14,8 @@
 
 package org.apache.tapestry5.ioc.util.func;
 
+import org.apache.tapestry5.ioc.internal.util.Defense;
+
 /**
  * Used when filtering a collection of objects of a given type; the predicate is passed
  * each object in turn, and returns true to include the object in the result collection.
@@ -24,18 +26,66 @@ package org.apache.tapestry5.ioc.util.fu
  * @see F#filter(Predicate, java.util.List)
  * @see F#remove(Predicate, java.util.List)
  */
-public interface Predicate<T>
+public abstract class Predicate<T>
 {
     /**
-     * Examines the object and determines whether to accept or reject it.
-     * 
-     * @return true to accept, false to reject
+     * This method is overridden in subclasses to define which objects the Predicate will accept
+     * and which it will reject.
+     */
+    public abstract boolean accept(T object);
+
+    /**
+     * Combines this Predicate with another compatible Predicate to form a new Predicate, which is returned. The
+     * new Predicate is true only if both of the combined Predicates are true.
      */
-    boolean accept(T object);
+    public final Predicate<T> and(final Predicate<? super T> other)
+    {
+        Defense.notNull(other, "other");
 
-    Predicate<T> invert();
+        final Predicate<T> left = this;
+
+        return new Predicate<T>()
+        {
+            public boolean accept(T object)
+            {
+                return left.accept(object) && other.accept(object);
+            };
+        };
+    }
+
+    /**
+     * Combines this Predicate with another compatible Predicate to form a new Predicate, which is returned. The
+     * new Predicate is true if either of the combined Predicates are true.
+     */
+    public final Predicate<T> or(final Predicate<? super T> other)
+    {
+        Defense.notNull(other, "other");
+
+        final Predicate<T> left = this;
+
+        return new Predicate<T>()
+        {
+            public boolean accept(T object)
+            {
+                return left.accept(object) || other.accept(object);
+            };
+        };
+    }
+
+    /**
+     * Inverts this Predicate, returning a new Predicate that inverts the value returned from {@link #accept}.
+     */
+    public final Predicate<T> invert()
+    {
+        final Predicate<T> normal = this;
 
-    Predicate<T> and(Predicate<? super T> right);
+        return new Predicate<T>()
+        {
+            public boolean accept(T object)
+            {
+                return !normal.accept(object);
+            };
+        };
+    }
 
-    Predicate<T> or(Predicate<? super T> right);
 }

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InternalUtilsTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InternalUtilsTest.java?rev=948920&r1=948919&r2=948920&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InternalUtilsTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InternalUtilsTest.java Thu May 27 17:32:45 2010
@@ -48,7 +48,7 @@ import org.apache.tapestry5.ioc.internal
 import org.apache.tapestry5.ioc.services.Builtin;
 import org.apache.tapestry5.ioc.services.SymbolSource;
 import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.apache.tapestry5.ioc.util.func.AbstractPredicate;
+import org.apache.tapestry5.ioc.util.func.Predicate;
 import org.easymock.EasyMock;
 import org.easymock.IAnswer;
 import org.testng.annotations.DataProvider;
@@ -664,7 +664,7 @@ public class InternalUtilsTest extends I
     {
         List<String> input = CollectionFactory.newList("Fred", "Barney", "..", ".hidden", "Wilma");
 
-        List<String> output = InternalUtils.matchAndSort(input, new AbstractPredicate<String>()
+        List<String> output = InternalUtils.matchAndSort(input, new Predicate<String>()
         {
             public boolean accept(String object)
             {

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/func/FuncTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/func/FuncTest.java?rev=948920&r1=948919&r2=948920&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/func/FuncTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/func/FuncTest.java Thu May 27 17:32:45 2010
@@ -40,7 +40,7 @@ public class FuncTest extends TestBase
         }
     };
 
-    private Predicate<Number> evenp = new AbstractPredicate<Number>()
+    private Predicate<Number> evenp = new Predicate<Number>()
     {
         public boolean accept(Number object)
         {