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; /** * {@link #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 implements BinaryPredicate>, 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 INSTANCE = IsInstance.instance(); // predicate interface // ------------------------------------------------------------------------ + /** * {@inheritDoc} */ - public boolean test(Object obj) { - return klass.isInstance(obj); + public boolean test(T left, Class right) { + return right.isInstance(left); } /** * {@inheritDoc} */ 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 + * {@inheritDoc} */ - 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; } /** * {@inheritDoc} */ - public int hashCode() { - int hash = "IsInstanceOf".hashCode(); - if (null != klass) { - hash ^= klass.hashCode(); - } - return hash; + public String toString() { + return "IsInstance"; } /** - * {@inheritDoc} + * Get an IsInstance instance. + * @param + * @return IsInstance */ - public String toString() { - return "IsInstanceOf<" + klass + ">"; + public static IsInstance instance() { + return new IsInstance(); } + /** + * Get an IsInstanceOf UnaryPredicate. + * @param + * @param clazz bound right-side argument + * @return UnaryPredicate + */ + public static UnaryPredicate of(Class clazz) { + return RightBoundPredicate.bind(new IsInstance(), clazz); + } }