Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Vosburgh2013-02-07 23:25:34 +0000
committerBrian Vosburgh2013-02-11 22:16:10 +0000
commitc3766a4031446101b96cf94874d0bdfb8e3da7b8 (patch)
treececedf17508fb3c85aba0e14b04129f8dc9766e7
parent7e4c28eaf7626efaf3157d5a485b7c9c8b5d9e70 (diff)
downloadwebtools.dali-c3766a4031446101b96cf94874d0bdfb8e3da7b8.tar.gz
webtools.dali-c3766a4031446101b96cf94874d0bdfb8e3da7b8.tar.xz
webtools.dali-c3766a4031446101b96cf94874d0bdfb8e3da7b8.zip
change TreeIterable and GraphIterable to take a Transformer that returns
an Iterable (instead of an Iterator)
-rw-r--r--common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceType.java10
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/ObjectTools.java7
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/GraphIterable.java5
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/IterableTools.java12
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/TreeIterable.java5
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/transformer/IterableTransformerWrapper.java44
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/transformer/TransformerTools.java12
-rw-r--r--common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/iterable/GraphIterableTests.java15
-rw-r--r--common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/iterable/TreeIterableTests.java20
9 files changed, 92 insertions, 38 deletions
diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceType.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceType.java
index 61b34e21f3..45f21f6bd8 100644
--- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceType.java
+++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceType.java
@@ -336,17 +336,17 @@ final class SourceType
}
public Iterable<JavaResourceType> getAllTypes() {
- return IterableTools.treeIterable(this, TYPES_TRANSFORMER);
+ return ObjectTools.tree(this, TYPES_TRANSFORMER);
}
- private static final Transformer<JavaResourceType, Iterator<? extends JavaResourceType>> TYPES_TRANSFORMER = new TypesTransformer();
+ private static final Transformer<JavaResourceType, Iterable<? extends JavaResourceType>> TYPES_TRANSFORMER = new TypesTransformer();
/* CU private */ static class TypesTransformer
- extends TransformerAdapter<JavaResourceType, Iterator<? extends JavaResourceType>>
+ extends TransformerAdapter<JavaResourceType, Iterable<? extends JavaResourceType>>
{
@Override
- public Iterator<? extends JavaResourceType> transform(JavaResourceType type) {
- return type.getTypes().iterator();
+ public Iterable<? extends JavaResourceType> transform(JavaResourceType type) {
+ return type.getTypes();
}
}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/ObjectTools.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/ObjectTools.java
index 82c63f58ba..d50f3e3f25 100644
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/ObjectTools.java
+++ b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/ObjectTools.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2012 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2013 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0, which accompanies this distribution
* and is available at http://www.eclipse.org/legal/epl-v10.html.
@@ -12,7 +12,6 @@ package org.eclipse.jpt.common.utility.internal;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.Iterator;
import org.eclipse.jpt.common.utility.internal.collection.RepeatingElementList;
import org.eclipse.jpt.common.utility.internal.iterable.ChainIterable;
import org.eclipse.jpt.common.utility.internal.iterable.GraphIterable;
@@ -107,7 +106,7 @@ public final class ObjectTools {
* by its children etc. as determined by the specified transformer.
* @see GraphIterable
*/
- public static <E> GraphIterable<E> graph(E object, Transformer<? super E, ? extends Iterator<? extends E>> transformer) {
+ public static <E> GraphIterable<E> graph(E object, Transformer<? super E, ? extends Iterable<? extends E>> transformer) {
return IterableTools.graphIterable(object, transformer);
}
@@ -125,7 +124,7 @@ public final class ObjectTools {
* with the specified object as its root and transformer.
* @see TreeIterable
*/
- public static <E> TreeIterable<E> tree(E object, Transformer<? super E, ? extends Iterator<? extends E>> transformer) {
+ public static <E> TreeIterable<E> tree(E object, Transformer<? super E, ? extends Iterable<? extends E>> transformer) {
return IterableTools.treeIterable(object, transformer);
}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/GraphIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/GraphIterable.java
index aca3efecf9..d40483cb62 100644
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/GraphIterable.java
+++ b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/GraphIterable.java
@@ -12,6 +12,7 @@ package org.eclipse.jpt.common.utility.internal.iterable;
import java.util.Iterator;
import org.eclipse.jpt.common.utility.internal.collection.ListTools;
import org.eclipse.jpt.common.utility.internal.iterator.IteratorTools;
+import org.eclipse.jpt.common.utility.internal.transformer.TransformerTools;
import org.eclipse.jpt.common.utility.transformer.Transformer;
/**
@@ -56,13 +57,13 @@ public class GraphIterable<E>
* Construct an iterable containing the nodes of a graph
* with the specified roots and transformer.
*/
- public GraphIterable(Iterable<? extends E> roots, Transformer<? super E, ? extends Iterator<? extends E>> transformer) {
+ public GraphIterable(Iterable<? extends E> roots, Transformer<? super E, ? extends Iterable<? extends E>> transformer) {
super();
if ((roots == null) || (transformer == null)) {
throw new NullPointerException();
}
this.roots = roots;
- this.transformer = transformer;
+ this.transformer = TransformerTools.iterableTransformerWrapper(transformer);
}
public Iterator<E> iterator() {
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/IterableTools.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/IterableTools.java
index 9f287479e7..66b41b4814 100644
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/IterableTools.java
+++ b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/IterableTools.java
@@ -700,7 +700,7 @@ public final class IterableTools {
* by its children etc. as determined by the specified transformer.
* @see GraphIterable
*/
- public static <E> GraphIterable<E> graphIterable(E root, Transformer<? super E, ? extends Iterator<? extends E>> transformer) {
+ public static <E> GraphIterable<E> graphIterable(E root, Transformer<? super E, ? extends Iterable<? extends E>> transformer) {
return graphIterable(singletonIterable(root), transformer);
}
@@ -709,7 +709,7 @@ public final class IterableTools {
* by their children etc. as determined by the specified transformer.
* @see GraphIterable
*/
- public static <E> GraphIterable<E> graphIterable(E[] roots, Transformer<? super E, ? extends Iterator<? extends E>> transformer) {
+ public static <E> GraphIterable<E> graphIterable(E[] roots, Transformer<? super E, ? extends Iterable<? extends E>> transformer) {
return graphIterable(Arrays.asList(roots), transformer);
}
@@ -718,7 +718,7 @@ public final class IterableTools {
* by their children etc. as determined by the specified transformer.
* @see GraphIterable
*/
- public static <E> GraphIterable<E> graphIterable(Iterable<? extends E> roots, Transformer<? super E, ? extends Iterator<? extends E>> transformer) {
+ public static <E> GraphIterable<E> graphIterable(Iterable<? extends E> roots, Transformer<? super E, ? extends Iterable<? extends E>> transformer) {
return new GraphIterable<E>(roots, transformer);
}
@@ -859,7 +859,7 @@ public final class IterableTools {
* with the specified root and transformer.
* @see TreeIterable
*/
- public static <E> TreeIterable<E> treeIterable(E root, Transformer<? super E, ? extends Iterator<? extends E>> transformer) {
+ public static <E> TreeIterable<E> treeIterable(E root, Transformer<? super E, ? extends Iterable<? extends E>> transformer) {
return treeIterable(singletonIterable(root), transformer);
}
@@ -868,7 +868,7 @@ public final class IterableTools {
* with the specified roots and transformer.
* @see TreeIterable
*/
- public static <E> TreeIterable<E> treeIterable(E[] roots, Transformer<? super E, ? extends Iterator<? extends E>> transformer) {
+ public static <E> TreeIterable<E> treeIterable(E[] roots, Transformer<? super E, ? extends Iterable<? extends E>> transformer) {
return treeIterable(iterable(roots), transformer);
}
@@ -877,7 +877,7 @@ public final class IterableTools {
* with the specified roots and transformer.
* @see TreeIterable
*/
- public static <E> TreeIterable<E> treeIterable(Iterable<? extends E> roots, Transformer<? super E, ? extends Iterator<? extends E>> transformer) {
+ public static <E> TreeIterable<E> treeIterable(Iterable<? extends E> roots, Transformer<? super E, ? extends Iterable<? extends E>> transformer) {
return new TreeIterable<E>(roots, transformer);
}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/TreeIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/TreeIterable.java
index c4a380b34a..f0ca4d9b44 100644
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/TreeIterable.java
+++ b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterable/TreeIterable.java
@@ -12,6 +12,7 @@ package org.eclipse.jpt.common.utility.internal.iterable;
import java.util.Iterator;
import org.eclipse.jpt.common.utility.internal.collection.ListTools;
import org.eclipse.jpt.common.utility.internal.iterator.IteratorTools;
+import org.eclipse.jpt.common.utility.internal.transformer.TransformerTools;
import org.eclipse.jpt.common.utility.transformer.Transformer;
/**
@@ -42,13 +43,13 @@ public class TreeIterable<E>
* Construct an iterable containing the nodes of a tree with the specified roots
* and midwife.
*/
- public TreeIterable(Iterable<? extends E> roots, Transformer<? super E, ? extends Iterator<? extends E>> transformer) {
+ public TreeIterable(Iterable<? extends E> roots, Transformer<? super E, ? extends Iterable<? extends E>> transformer) {
super();
if ((roots == null) || (transformer == null)) {
throw new NullPointerException();
}
this.roots = roots;
- this.transformer = transformer;
+ this.transformer = TransformerTools.iterableTransformerWrapper(transformer);
}
public Iterator<E> iterator() {
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/transformer/IterableTransformerWrapper.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/transformer/IterableTransformerWrapper.java
new file mode 100644
index 0000000000..257ba69961
--- /dev/null
+++ b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/transformer/IterableTransformerWrapper.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2013 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.common.utility.internal.transformer;
+
+import java.util.Iterator;
+import org.eclipse.jpt.common.utility.internal.ObjectTools;
+import org.eclipse.jpt.common.utility.transformer.Transformer;
+
+/**
+ * Wrap a transformer that converts an input object into an <em>iterable</em>
+ * of objects of the same type as the input object, converting that transformer
+ * into one that converts the same object into an <em>iterator</em>
+ * of objects of the same type as the input object.
+ *
+ * @param <I> input: the type of the object passed to the transformer; also the
+ * type of object returned by the output iterator
+ */
+public class IterableTransformerWrapper<I>
+ implements Transformer<I, Iterator<? extends I>>
+{
+ protected final Transformer<? super I, ? extends Iterable<? extends I>> transformer;
+
+
+ public IterableTransformerWrapper(Transformer<? super I, ? extends Iterable<? extends I>> transformer) {
+ super();
+ this.transformer = transformer;
+ }
+
+ public Iterator<? extends I> transform(I input) {
+ return this.transformer.transform(input).iterator();
+ }
+
+ @Override
+ public String toString() {
+ return ObjectTools.toString(this, this.transformer);
+ }
+}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/transformer/TransformerTools.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/transformer/TransformerTools.java
index 774267969f..00ec6c5c29 100644
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/transformer/TransformerTools.java
+++ b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/transformer/TransformerTools.java
@@ -48,6 +48,18 @@ public final class TransformerTools {
}
/**
+ * Wrap the specified transformer converting it
+ * into one that converts the same input object into an <em>iterator</em>
+ * of objects of the same type as the input object.
+ *
+ * @param <I> input: the type of the object passed to the transformer; also the
+ * type of object returned by the output iterator
+ */
+ public static <I> IterableTransformerWrapper<I> iterableTransformerWrapper(Transformer<? super I, ? extends Iterable<? extends I>> transformer) {
+ return new IterableTransformerWrapper<I>(transformer);
+ }
+
+ /**
* Return a transformer that simply casts the specified transformer's return type.
* @see LateralTransformerWrapper
*/
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/iterable/GraphIterableTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/iterable/GraphIterableTests.java
index e8d2666285..1828f08378 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/iterable/GraphIterableTests.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/iterable/GraphIterableTests.java
@@ -11,7 +11,6 @@ package org.eclipse.jpt.common.utility.tests.internal.iterable;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Iterator;
import junit.framework.TestCase;
import org.eclipse.jpt.common.utility.internal.collection.ListTools;
import org.eclipse.jpt.common.utility.internal.iterable.IterableTools;
@@ -62,7 +61,7 @@ public class GraphIterableTests
public void testMissingMisterRogers() {
boolean exCaught = false;
try {
- for (GraphNode gn : IterableTools.graphIterable(this.buildGraphRoot(), Transformer.Disabled.<GraphNode, Iterator<? extends GraphNode>>instance())) {
+ for (GraphNode gn : IterableTools.graphIterable(this.buildGraphRoot(), Transformer.Disabled.<GraphNode, Iterable<? extends GraphNode>>instance())) {
assertTrue(this.nodes.contains(gn));
}
fail();
@@ -72,10 +71,10 @@ public class GraphIterableTests
assertTrue(exCaught);
}
- private Transformer<GraphNode, Iterator<? extends GraphNode>> buildTransformer() {
- return new Transformer<GraphNode, Iterator<? extends GraphNode>>() {
- public Iterator<GraphNode> transform(GraphNode node) {
- return node.neighbors();
+ private Transformer<GraphNode, Iterable<? extends GraphNode>> buildTransformer() {
+ return new Transformer<GraphNode, Iterable<? extends GraphNode>>() {
+ public Iterable<GraphNode> transform(GraphNode node) {
+ return node.getNeighbors();
}
};
}
@@ -121,8 +120,8 @@ public class GraphIterableTests
this.neighbors = ListTools.list(neighbors);
}
- public Iterator<GraphNode> neighbors() {
- return this.neighbors.iterator();
+ public Iterable<GraphNode> getNeighbors() {
+ return this.neighbors;
}
public int neighborsSize() {
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/iterable/TreeIterableTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/iterable/TreeIterableTests.java
index e4708a2b2e..e9a875a0a3 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/iterable/TreeIterableTests.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/iterable/TreeIterableTests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2011 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2013 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0, which accompanies this distribution
* and is available at http://www.eclipse.org/legal/epl-v10.html.
@@ -11,10 +11,8 @@ package org.eclipse.jpt.common.utility.tests.internal.iterable;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Iterator;
-
import junit.framework.TestCase;
-
+import org.eclipse.jpt.common.utility.internal.ObjectTools;
import org.eclipse.jpt.common.utility.internal.iterable.IterableTools;
import org.eclipse.jpt.common.utility.tests.internal.TestTools;
import org.eclipse.jpt.common.utility.transformer.Transformer;
@@ -35,7 +33,7 @@ public class TreeIterableTests extends TestCase {
}
public void testIterator1() {
- for (TreeNode tn : IterableTools.treeIterable(this.buildTree(), this.buildTransformer())) {
+ for (TreeNode tn : ObjectTools.tree(this.buildTree(), this.buildTransformer())) {
assertTrue(this.nodes.contains(tn));
}
}
@@ -50,10 +48,10 @@ public class TreeIterableTests extends TestCase {
assertNotNull(IterableTools.treeIterable(this.buildTree(), this.buildTransformer()).toString());
}
- private Transformer<TreeNode, Iterator<? extends TreeNode>> buildTransformer() {
- return new Transformer<TreeNode, Iterator<? extends TreeNode>>() {
- public Iterator<? extends TreeNode> transform(TreeNode next) {
- return next.children();
+ private Transformer<TreeNode, Iterable<? extends TreeNode>> buildTransformer() {
+ return new Transformer<TreeNode, Iterable<? extends TreeNode>>() {
+ public Iterable<? extends TreeNode> transform(TreeNode next) {
+ return next.getChildren();
}
};
}
@@ -102,8 +100,8 @@ public class TreeIterableTests extends TestCase {
this.children.add(child);
}
- public Iterator<TreeNode> children() {
- return this.children.iterator();
+ public Iterable<TreeNode> getChildren() {
+ return this.children;
}
public int childrenSize() {

Back to the top