You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2016/08/04 04:59:05 UTC

groovy git commit: minor refactor and javadoc clarification

Repository: groovy
Updated Branches:
  refs/heads/master 85cf8bc5f -> 4db71e697


minor refactor and javadoc clarification


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/4db71e69
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/4db71e69
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/4db71e69

Branch: refs/heads/master
Commit: 4db71e69730f1ea45da30644e133a494b9a91832
Parents: 85cf8bc
Author: paulk <pa...@asert.com.au>
Authored: Thu Aug 4 14:57:51 2016 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Thu Aug 4 14:57:51 2016 +1000

----------------------------------------------------------------------
 .../groovy/runtime/DefaultGroovyMethods.java    | 60 +++++++++++---------
 1 file changed, 32 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/4db71e69/src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java b/src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
index b61f3be..7e89c44 100644
--- a/src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
+++ b/src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
@@ -1008,12 +1008,12 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
 
     /**
      * Returns an iterator equivalent to this iterator with all duplicated items removed
-     * by using the default comparator. The original iterator will become
+     * by using Groovy's default number-aware comparator. The original iterator will become
      * exhausted of elements after determining the unique values. A new iterator
      * for the unique values will be returned.
      *
      * @param self an Iterator
-     * @return the modified Iterator
+     * @return a new Iterator of the unique items from the original iterator
      * @since 1.5.5
      */
     public static <T> Iterator<T> unique(Iterator<T> self) {
@@ -1021,8 +1021,8 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
     }
 
     /**
-     * Modifies this collection to remove all duplicated items, using the
-     * default comparator.
+     * Modifies this collection to remove all duplicated items, using Groovy's
+     * default number-aware comparator.
      * <pre class="groovyTestCase">assert [1,3] == [1,3,3].unique()</pre>
      *
      * @param self a collection
@@ -1035,8 +1035,8 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
     }
 
     /**
-     * Modifies this List to remove all duplicated items, using the
-     * default comparator.
+     * Modifies this List to remove all duplicated items, using Groovy's
+     * default number-aware comparator.
      * <pre class="groovyTestCase">assert [1,3] == [1,3,3].unique()</pre>
      *
      * @param self a List
@@ -1049,7 +1049,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
     }
 
     /**
-     * Remove all duplicates from a given Collection using the default comparator.
+     * Remove all duplicates from a given Collection using Groovy's default number-aware comparator.
      * If mutate is true, it works by modifying the original object (and also returning it).
      * If mutate is false, a new collection is returned leaving the original unchanged.
      * <pre class="groovyTestCase">
@@ -1088,7 +1088,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
     }
 
     /**
-     * Remove all duplicates from a given List using the default comparator.
+     * Remove all duplicates from a given List using Groovy's default number-aware comparator.
      * If mutate is true, it works by modifying the original object (and also returning it).
      * If mutate is false, a new collection is returned leaving the original unchanged.
      * <pre class="groovyTestCase">
@@ -1135,13 +1135,16 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * will be passed as arguments, and the closure should return an
      * int value (with 0 indicating the items are not unique).
      *
-     * @param self an Iterator
-     * @param closure a Closure used to determine unique items
+     * @param self      an Iterator
+     * @param condition a Closure used to determine unique items
      * @return the modified Iterator
      * @since 1.5.5
      */
-    public static <T> Iterator<T> unique(Iterator<T> self, @ClosureParams(value=FromString.class, options={"T","T,T"}) Closure closure) {
-        return toList((Iterable<T>) unique(toList(self), closure)).listIterator();
+    public static <T> Iterator<T> unique(Iterator<T> self, @ClosureParams(value=FromString.class, options={"T","T,T"}) Closure condition) {
+        Comparator<T> comparator = condition.getMaximumNumberOfParameters() == 1
+                ? new OrderBy<T>(condition, true)
+                : new ClosureComparator<T>(condition);
+        return unique(self, comparator);
     }
 
     /**
@@ -1263,7 +1266,8 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
 
     /**
      * Returns an iterator equivalent to this iterator with all duplicated
-     * items removed by using the supplied comparator.
+     * items removed by using the supplied comparator. The original iterator
+     * will be exhausted upon returning.
      *
      * @param self an Iterator
      * @param comparator a Comparator
@@ -1271,7 +1275,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @since 1.5.5
      */
     public static <T> Iterator<T> unique(Iterator<T> self, Comparator<T> comparator) {
-        return toList((Iterable<T>) unique(toList(self), comparator)).listIterator();
+        return toList((Iterable<T>) unique(toList(self), false, comparator)).listIterator();
     }
 
     /**
@@ -1519,18 +1523,18 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @since 2.4.0
      */
     public static <T> Iterator<T> toUnique(Iterator<T> self, @ClosureParams(value=FromString.class, options={"T","T,T"}) Closure condition) {
-        return new UniqueIterator<T>(self, condition.getMaximumNumberOfParameters() == 1
+        return toUnique(self, condition.getMaximumNumberOfParameters() == 1
                 ? new OrderBy<T>(condition, true)
                 : new ClosureComparator<T>(condition));
     }
 
-    private static final class UniqueIterator<E> implements Iterator<E> {
+    private static final class ToUniqueIterator<E> implements Iterator<E> {
         private final Iterator<E> delegate;
         private final Set<E> seen;
         private boolean exhausted;
         private E next;
 
-        private UniqueIterator(Iterator<E> delegate, Comparator<E> comparator) {
+        private ToUniqueIterator(Iterator<E> delegate, Comparator<E> comparator) {
             this.delegate = delegate;
             seen = new TreeSet<E>(comparator);
             advance();
@@ -1575,7 +1579,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @since 2.4.0
      */
     public static <T> Iterator<T> toUnique(Iterator<T> self, Comparator<T> comparator) {
-        return new UniqueIterator<T>(self, comparator);
+        return new ToUniqueIterator<T>(self, comparator);
     }
 
     /**
@@ -1587,7 +1591,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @since 2.4.0
      */
     public static <T> Iterator<T> toUnique(Iterator<T> self) {
-        return new UniqueIterator<T>(self, null);
+        return toUnique(self, (Comparator<T>) null);
     }
 
     /**
@@ -1953,11 +1957,11 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
     }
 
     /**
-     * Iterates through an Collection,
+     * Iterates through a Collection,
      * passing each item and the item's index (a counter starting at
      * zero) to the given closure.
      *
-     * @param self    an Collection
+     * @param self    a Collection
      * @param closure a Closure to operate on each item
      * @return the self Collection
      * @since 2.4.0
@@ -2037,7 +2041,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
     }
 
     /**
-     * Iterates through an Collection, passing each item to the given closure.
+     * Iterates through a Collection, passing each item to the given closure.
      *
      * @param self    the Collection over which we iterate
      * @param closure the closure applied on each element found
@@ -11142,7 +11146,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
     }
 
     /**
-     * Create a List as a union of a List and an Collection.
+     * Create a List as a union of a List and a Collection.
      * This operation will always create a new object for the result,
      * while the operands remain unchanged.
      *
@@ -11172,7 +11176,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
     }
 
     /**
-     * Create a Set as a union of a Set and an Collection.
+     * Create a Set as a union of a Set and a Collection.
      * This operation will always create a new object for the result,
      * while the operands remain unchanged.
      *
@@ -11202,7 +11206,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
     }
 
     /**
-     * Create a SortedSet as a union of a SortedSet and an Collection.
+     * Create a SortedSet as a union of a SortedSet and a Collection.
      * This operation will always create a new object for the result,
      * while the operands remain unchanged.
      *
@@ -12022,7 +12026,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * <pre class="groovyTestCase">assert [1, "a", true, true, false, 5.3] - [true, 5.3] == [1, "a", false]</pre>
      *
      * @param self     a List
-     * @param removeMe a Iterable of elements to remove
+     * @param removeMe an Iterable of elements to remove
      * @return a new List with the given elements removed
      * @since 1.8.7
      */
@@ -12134,7 +12138,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * collections have their contents (recursively) added to the new collection.
      * <pre class="groovyTestCase">assert [1,2,3,4,5] == [1,[2,3],[[4]],[],5].flatten()</pre>
      *
-     * @param self a Iterable to flatten
+     * @param self an Iterable to flatten
      * @return a flattened Collection
      * @since 1.6.0
      */
@@ -15382,7 +15386,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * Transform a Number into a Long
      *
      * @param self a Number
-     * @return an Long
+     * @return a Long
      * @since 1.0
      */
     public static Long toLong(Number self) {