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 2011/01/06 22:31:21 UTC

svn commit: r1056088 - in /tapestry/tapestry5/trunk/tapestry-func/src: main/java/org/apache/tapestry5/func/ test/java/org/apache/tapestry5/func/

Author: hlship
Date: Thu Jan  6 21:31:21 2011
New Revision: 1056088

URL: http://svn.apache.org/viewvc?rev=1056088&view=rev
Log:
TAP5-1390: Be more specific about Comparators used when sorting
Add new Comparator factories for the first or second value in a Tuple

Modified:
    tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java
    tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ArrayFlow.java
    tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/EmptyFlow.java
    tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java
    tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/FlowOperations.java
    tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlow.java
    tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlowImpl.java
    tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/ZippedFlowTests.java

Modified: tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java?rev=1056088&r1=1056087&r2=1056088&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java (original)
+++ tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java Thu Jan  6 21:31:21 2011
@@ -189,7 +189,7 @@ abstract class AbstractFlow<T> implement
         return new ArrayFlow<T>(this).sort();
     }
 
-    public Flow<T> sort(Comparator<? super T> comparator)
+    public Flow<T> sort(Comparator<T> comparator)
     {
         if (isEmpty())
             return F.emptyFlow();

Modified: tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ArrayFlow.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ArrayFlow.java?rev=1056088&r1=1056087&r2=1056088&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ArrayFlow.java (original)
+++ tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ArrayFlow.java Thu Jan  6 21:31:21 2011
@@ -133,7 +133,7 @@ class ArrayFlow<T> extends AbstractFlow<
         return new ArrayFlow<T>((List<T>) newValues);
     }
 
-    public Flow<T> sort(Comparator<? super T> comparator)
+    public Flow<T> sort(Comparator<T> comparator)
     {
         assert comparator != null;
 

Modified: tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/EmptyFlow.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/EmptyFlow.java?rev=1056088&r1=1056087&r2=1056088&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/EmptyFlow.java (original)
+++ tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/EmptyFlow.java Thu Jan  6 21:31:21 2011
@@ -84,7 +84,7 @@ class EmptyFlow<T> extends AbstractFlow<
     }
 
     /** Does nothing; returns this empty list. */
-    public Flow<T> sort(Comparator<? super T> comparator)
+    public Flow<T> sort(Comparator<T> comparator)
     {
         return this;
     }

Modified: tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java?rev=1056088&r1=1056087&r2=1056088&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java (original)
+++ tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java Thu Jan  6 21:31:21 2011
@@ -15,6 +15,7 @@
 package org.apache.tapestry5.func;
 
 import java.util.Collection;
+import java.util.Comparator;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -498,4 +499,38 @@ public class F
         };
     }
 
+    /**
+     * Creates a Comparator for the Tuples of a {@link ZippedFlow} that sorts the Tuple elements based on the first
+     * value in the Tuple.
+     * 
+     * @since 5.3.0
+     */
+    public static <A extends Comparable, B> Comparator<Tuple<A, B>> orderByFirst()
+    {
+        return new Comparator<Tuple<A, B>>()
+        {
+
+            public int compare(Tuple<A, B> o1, Tuple<A, B> o2)
+            {
+                return o1.first.compareTo(o2.first);
+            }
+        };
+    }
+
+    /**
+     * Creates a Comparator for the Tuples of a {@link ZippedFlow} that sorts the Tuple elements based on the first
+     * value in the Tuple.
+     * 
+     * @since 5.3.0
+     */
+    public static <A, B extends Comparable> Comparator<Tuple<A, B>> orderBySecond()
+    {
+        return new Comparator<Tuple<A, B>>()
+        {
+            public int compare(Tuple<A, B> o1, Tuple<A, B> o2)
+            {
+                return o1.second.compareTo(o2.second);
+            }
+        };
+    }
 }

Modified: tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/FlowOperations.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/FlowOperations.java?rev=1056088&r1=1056087&r2=1056088&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/FlowOperations.java (original)
+++ tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/FlowOperations.java Thu Jan  6 21:31:21 2011
@@ -74,13 +74,12 @@ public interface FlowOperations<T, FT> e
 
     /**
      * Sorts this flow using the comparator, forming a new flow. This is a non-lazy operation; it
-     * will fully realize the values of the Flow.
+     * will fully realize the elements of the Flow.
      */
-    FT sort(Comparator<? super T> comparator);
+    FT sort(Comparator<T> comparator);
 
     /**
-     * Returns a new flow containing just the first values from
-     * this Flow.
+     * Returns a new flow containing just the first elements from this Flow.
      * 
      * @param length
      *            maximum number of values in the Flow
@@ -88,7 +87,7 @@ public interface FlowOperations<T, FT> e
     FT take(int length);
 
     /**
-     * Returns a new flow with the first values omitted.
+     * Returns a new flow with the first elements omitted.
      * 
      * @param length
      *            number of values to drop
@@ -96,7 +95,7 @@ public interface FlowOperations<T, FT> e
     FT drop(int length);
 
     /**
-     * Returns a new Flow with the values in the list appended to this Flow. This is a lazy
+     * Returns a new Flow with the elements in the list appended to this Flow. This is a lazy
      * operation.
      */
     FT concat(List<? extends T> list);

Modified: tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlow.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlow.java?rev=1056088&r1=1056087&r2=1056088&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlow.java (original)
+++ tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlow.java Thu Jan  6 21:31:21 2011
@@ -1,4 +1,4 @@
-// Copyright 2010 The Apache Software Foundation
+// Copyright 2010, 2011 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -17,8 +17,8 @@ package org.apache.tapestry5.func;
 import java.util.Map;
 
 /**
- * The result of the {@link Flow#zipWith(Flow)} method, a Flow of combined {@link Tuple} values
- * (that can be deconstructed, eventually, using {@link #unzip()}).
+ * The result of the {@link Flow#zipWith(Flow)} method (or created from a Map via {@link F#zippedFlow(Map)}), a Flow of
+ * combined {@link Tuple} values (that can be deconstructed, eventually, using {@link #unzip()}).
  * 
  * @param <A>
  * @param <B>

Modified: tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlowImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlowImpl.java?rev=1056088&r1=1056087&r2=1056088&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlowImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlowImpl.java Thu Jan  6 21:31:21 2011
@@ -104,7 +104,7 @@ class ZippedFlowImpl<A, B> implements Zi
         return tupleFlow.count();
     }
 
-    public ZippedFlow<A, B> sort(Comparator<? super Tuple<A, B>> comparator)
+    public ZippedFlow<A, B> sort(Comparator<Tuple<A, B>> comparator)
     {
         return create(tupleFlow.sort(comparator));
     }

Modified: tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/ZippedFlowTests.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/ZippedFlowTests.java?rev=1056088&r1=1056087&r2=1056088&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/ZippedFlowTests.java (original)
+++ tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/ZippedFlowTests.java Thu Jan  6 21:31:21 2011
@@ -50,16 +50,15 @@ public class ZippedFlowTests extends Bas
 
         ZippedFlow<Integer, String> zipped = F.zippedFlow(map);
 
-        ZippedFlow<Integer, String> sorted = zipped.sort(new Comparator<Tuple<Integer, String>>()
-        {
-            public int compare(Tuple<Integer, String> o1, Tuple<Integer, String> o2)
-            {
-                return o1.second.compareTo(o2.second);
-            }
-        });
+        ZippedFlow<Integer, String> sorted = zipped.sort(F.<Integer, String> orderBySecond());
 
         assertFlowValues(sorted.firsts(), 2, 1);
         assertFlowValues(sorted.seconds(), "barney", "fred");
+
+        sorted = zipped.sort(F.<Integer, String> orderByFirst());
+
+        assertFlowValues(sorted.firsts(), 1, 2);
+        assertFlowValues(sorted.seconds(), "fred", "barney");
     }
 
     @Test