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<S> to List<T>.
*/
@@ -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)
{