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 2010/06/11 01:30:27 UTC
svn commit: r953498 - in /tapestry/tapestry5/trunk/tapestry-func/src:
main/java/org/apache/tapestry5/func/AbstractFlow.java
main/java/org/apache/tapestry5/func/Flow.java
test/java/org/apache/tapestry5/func/FuncTest.java
Author: hlship
Date: Thu Jun 10 23:30:26 2010
New Revision: 953498
URL: http://svn.apache.org/viewvc?rev=953498&view=rev
Log:
Add method for converting a Flow directly to an object array
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/Flow.java
tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.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=953498&r1=953497&r2=953498&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 Jun 10 23:30:26 2010
@@ -14,7 +14,9 @@
package org.apache.tapestry5.func;
+import java.lang.reflect.Array;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
@@ -202,6 +204,18 @@ abstract class AbstractFlow<T> implement
return Collections.unmodifiableList(toMutableList());
}
+ @SuppressWarnings("unchecked")
+ public T[] toArray(Class<T> type)
+ {
+ assert type != null;
+
+ List<T> list = toMutableList();
+
+ Object array = Array.newInstance(type, list.size());
+
+ return list.toArray((T[]) array);
+ }
+
public int count()
{
return isEmpty() ? 0 : 1 + rest().count();
Modified: tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Flow.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Flow.java?rev=953498&r1=953497&r2=953498&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Flow.java (original)
+++ tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Flow.java Thu Jun 10 23:30:26 2010
@@ -87,6 +87,12 @@ public interface Flow<T> extends Iterabl
*/
List<T> toList();
+ /**
+ * Converts the Flow into an array of values (due to type erasure, you have to remind the Flow about the
+ * type).
+ */
+ T[] toArray(Class<T> type);
+
/** Returns a new flow with the same elements but in reverse order. */
Flow<T> reverse();
Modified: tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.java?rev=953498&r1=953497&r2=953498&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.java Thu Jun 10 23:30:26 2010
@@ -25,7 +25,6 @@ import org.testng.annotations.Test;
public class FuncTest extends BaseFuncTest
{
-
@Test
public void flow_reverse()
@@ -490,7 +489,6 @@ public class FuncTest extends BaseFuncTe
assertListsEquals(result, "a", "had", "Mary", "lamb");
}
-
@Test
public void each_on_empty_flow()
{
@@ -530,7 +528,6 @@ public class FuncTest extends BaseFuncTe
}, initial), initial);
}
-
@Test
public void count_of_the_empty_flow_is_zero()
{
@@ -552,7 +549,6 @@ public class FuncTest extends BaseFuncTe
assertEquals(flow.filter(F.notNull()).count(), 5);
}
-
@Test
public void concat_empty_list()
{
@@ -561,4 +557,12 @@ public class FuncTest extends BaseFuncTe
assertFlowValues(flow.concat(flow.filter(evenp)), 1, 3);
}
+ @Test
+ public void to_array()
+ {
+ Flow<Integer> flow = F.range(1, 10).drop(2).take(3);
+
+ assertTrue(Arrays.equals(flow.toArray(Integer.class), new Integer[]
+ { 3, 4, 5 }));
+ }
}