Author: mbenson
Date: Mon Jun  9 09:55:04 2008
New Revision: 665767

URL: http://svn.apache.org/viewvc?rev=665767&view=rev
Log:
mv BinaryFunctionUnaryFunction to src/main

Added:
    
commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/adapter/BinaryFunctionUnaryFunction.java
      - copied, changed from r661495, 
commons/sandbox/functor/trunk/src/test/java/org/apache/commons/functor/example/kata/one/BinaryFunctionUnaryFunction.java
Removed:
    
commons/sandbox/functor/trunk/src/test/java/org/apache/commons/functor/example/kata/one/BinaryFunctionUnaryFunction.java

Copied: 
commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/adapter/BinaryFunctionUnaryFunction.java
 (from r661495, 
commons/sandbox/functor/trunk/src/test/java/org/apache/commons/functor/example/kata/one/BinaryFunctionUnaryFunction.java)
URL: 
http://svn.apache.org/viewvc/commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/adapter/BinaryFunctionUnaryFunction.java?p2=commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/adapter/BinaryFunctionUnaryFunction.java&p1=commons/sandbox/functor/trunk/src/test/java/org/apache/commons/functor/example/kata/one/BinaryFunctionUnaryFunction.java&r1=661495&r2=665767&rev=665767&view=diff
==============================================================================
--- 
commons/sandbox/functor/trunk/src/test/java/org/apache/commons/functor/example/kata/one/BinaryFunctionUnaryFunction.java
 (original)
+++ 
commons/sandbox/functor/trunk/src/main/java/org/apache/commons/functor/adapter/BinaryFunctionUnaryFunction.java
 Mon Jun  9 09:55:04 2008
@@ -14,32 +14,82 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.functor.example.kata.one;
+package org.apache.commons.functor.adapter;
 
 import org.apache.commons.functor.BinaryFunction;
 import org.apache.commons.functor.UnaryFunction;
 
 /**
+ * Adapts a BinaryFunction as a UnaryFunction by sending the same argument to 
both sides of the BinaryFunction.
+ * It sounds nonsensical, but using Composite functions, can be made to do 
something useful.
  * @version $Revision$ $Date$
  * @author Rodney Waldhoff
  */
-public final class BinaryFunctionUnaryFunction implements UnaryFunction {
-    public BinaryFunctionUnaryFunction(BinaryFunction f) {
-        if (null == f) {
-            throw new NullPointerException();
-        } else {
-            this.function = f;
+public final class BinaryFunctionUnaryFunction<A, T> implements 
UnaryFunction<A, T> {
+    private BinaryFunction<? super A, ? super A, ? extends T> function;
+
+    /**
+     * Create a new BinaryFunctionUnaryFunction.
+     * @param function to adapt
+     */
+    public BinaryFunctionUnaryFunction(BinaryFunction<? super A, ? super A, ? 
extends T> function) {
+        if (null == function) {
+            throw new IllegalArgumentException("BinaryFunction argument was 
null");
         }
+        this.function = function;
     }
 
-    public Object evaluate(Object obj) {
+    /**
+     * 
+     * [EMAIL PROTECTED]
+     */
+    public T evaluate(A obj) {
         return function.evaluate(obj,obj);
     }
 
-    public static UnaryFunction adapt(BinaryFunction f) {
-        return null == f ? null : new BinaryFunctionUnaryFunction(f);
+    /**
+     * [EMAIL PROTECTED]
+     */
+    @Override
+    public boolean equals(Object obj) {
+        return obj == this || obj instanceof BinaryFunctionUnaryFunction
+                && equals((BinaryFunctionUnaryFunction<?, ?>) obj);
+    }
+
+    /**
+     * Learn whether another BinaryFunctionUnaryFunction is equal to 
<code>this</code>.
+     * @param that BinaryFunctionUnaryFunction to check
+     * @return whether equal
+     */
+    public boolean equals(BinaryFunctionUnaryFunction<?, ?> that) {
+        return that != null && that.function.equals(this.function);
+    }
+
+    /**
+     * [EMAIL PROTECTED]
+     */
+    @Override
+    public int hashCode() {
+        return ("BinaryFunctionUnaryFunction".hashCode() << 2) | 
function.hashCode();
+    }
+
+    /**
+     * [EMAIL PROTECTED]
+     */
+    @Override
+    public String toString() {
+        return "BinaryFunctionUnaryFunction<" + function + ">";
     }
 
-    private BinaryFunction function;
+    /**
+     * Adapt a BinaryFunction as a UnaryFunction.
+     * @param <A>
+     * @param <T>
+     * @param function to adapt
+     * @return UnaryFunction<A, T>
+     */
+    public static <A, T> UnaryFunction<A, T> adapt(BinaryFunction<? super A, ? 
super A, ? extends T> function) {
+        return null == function ? null : new BinaryFunctionUnaryFunction<A, 
T>(function);
+    }
 
 }


Reply via email to