Author: mbenson
Date: Mon Jun 9 09:58:00 2008
New Revision: 665769
URL: http://svn.apache.org/viewvc?rev=665769&view=rev
Log:
generify; rename IsInstanceOf to IsInstance and change to a BinaryPredicate
instead of a UnaryPredicate
Added:
commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/core/IsInstance.java
- copied, changed from r661495,
commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/core/IsInstanceOf.java
Removed:
commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/core/IsInstanceOf.java
Copied:
commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/core/IsInstance.java
(from r661495,
commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/core/IsInstanceOf.java)
URL:
http://svn.apache.org/viewvc/commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/core/IsInstance.java?p2=commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/core/IsInstance.java&p1=commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/core/IsInstanceOf.java&r1=661495&r2=665769&rev=665769&view=diff
==============================================================================
---
commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/core/IsInstanceOf.java
(original)
+++
commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/core/IsInstance.java
Mon Jun 9 09:58:00 2008
@@ -18,7 +18,9 @@
import java.io.Serializable;
+import org.apache.commons.functor.BinaryPredicate;
import org.apache.commons.functor.UnaryPredicate;
+import org.apache.commons.functor.adapter.RightBoundPredicate;
/**
* [EMAIL PROTECTED] #test Tests}
@@ -29,63 +31,59 @@
* @version $Revision$ $Date$
* @author Rodney Waldhoff
*/
-public final class IsInstanceOf implements UnaryPredicate, Serializable {
-
- // attributes
- // ------------------------------------------------------------------------
- private Class klass;
-
- // constructor
- // ------------------------------------------------------------------------
+public final class IsInstance<T> implements BinaryPredicate<T, Class<?>>,
Serializable {
/**
- * Create a new IsInstanceOf.
- * @param klass Class of which a tested object must be an instance.
+ * Basic IsInstanceOf instance.
*/
- public IsInstanceOf(Class klass) {
- this.klass = klass;
- }
+ public static final IsInstance<Object> INSTANCE =
IsInstance.<Object>instance();
// predicate interface
// ------------------------------------------------------------------------
+
/**
* [EMAIL PROTECTED]
*/
- public boolean test(Object obj) {
- return klass.isInstance(obj);
+ public boolean test(T left, Class<?> right) {
+ return right.isInstance(left);
}
/**
* [EMAIL PROTECTED]
*/
public boolean equals(Object that) {
- return that == this || (that instanceof IsInstanceOf &&
equals((IsInstanceOf) that));
+ return that instanceof IsInstance;
}
/**
- * Learn whether another IsInstanceOf is equal to this.
- * @param that IsInstanceOf to test
- * @return boolean
+ * [EMAIL PROTECTED]
*/
- public boolean equals(IsInstanceOf that) {
- return (null != that && (null == this.klass ? null == that.klass :
this.klass.equals(that.klass)));
+ public int hashCode() {
+ return ("IsInstance".hashCode() << 4) | 37;
}
/**
* [EMAIL PROTECTED]
*/
- public int hashCode() {
- int hash = "IsInstanceOf".hashCode();
- if (null != klass) {
- hash ^= klass.hashCode();
- }
- return hash;
+ public String toString() {
+ return "IsInstance";
}
/**
- * [EMAIL PROTECTED]
+ * Get an IsInstance instance.
+ * @param <T>
+ * @return IsInstance<T>
*/
- public String toString() {
- return "IsInstanceOf<" + klass + ">";
+ public static <T> IsInstance<T> instance() {
+ return new IsInstance<T>();
}
+ /**
+ * Get an IsInstanceOf UnaryPredicate.
+ * @param <T>
+ * @param clazz bound right-side argument
+ * @return UnaryPredicate<T>
+ */
+ public static <T> UnaryPredicate<T> of(Class<?> clazz) {
+ return RightBoundPredicate.bind(new IsInstance<T>(), clazz);
+ }
}