Author: markt Date: Mon Jul 15 15:50:23 2013 New Revision: 1503310 URL: http://svn.apache.org/r1503310 Log: EL 3.0 collections operations. Implement distinct.
Modified: tomcat/trunk/java/org/apache/el/stream/Stream.java tomcat/trunk/test/org/apache/el/stream/TestCollectionOperations.java Modified: tomcat/trunk/java/org/apache/el/stream/Stream.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/stream/Stream.java?rev=1503310&r1=1503309&r2=1503310&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/el/stream/Stream.java (original) +++ tomcat/trunk/java/org/apache/el/stream/Stream.java Mon Jul 15 15:50:23 2013 @@ -17,9 +17,11 @@ package org.apache.el.stream; import java.util.ArrayList; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; +import java.util.Set; import javax.el.LambdaExpression; @@ -94,6 +96,27 @@ public class Stream { } + public Stream distinct() { + Iterator<Object> downStream = new OpIterator() { + + private Set<Object> values = new HashSet<>(); + + @Override + protected void findNext() { + while (iterator.hasNext()) { + Object obj = iterator.next(); + if (values.add(obj)) { + next = obj; + foundNext = true; + break; + } + } + } + }; + return new Stream(downStream); + } + + public Iterator<?> iterator() { return iterator; } Modified: tomcat/trunk/test/org/apache/el/stream/TestCollectionOperations.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/stream/TestCollectionOperations.java?rev=1503310&r1=1503309&r2=1503310&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/el/stream/TestCollectionOperations.java (original) +++ tomcat/trunk/test/org/apache/el/stream/TestCollectionOperations.java Mon Jul 15 15:50:23 2013 @@ -164,4 +164,20 @@ public class TestCollectionOperations { Assert.assertEquals(expected, result); } + + + @Test + public void testDistinct01() { + ELProcessor processor = new ELProcessor(); + Object result = processor.getValue( + "['a', 'b', 'b', 'c'].stream().distinct().toList()", + List.class); + List<String> expected = new ArrayList<>(3); + expected.add("a"); + expected.add("b"); + expected.add("c"); + + Assert.assertEquals(expected, result); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org