Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables')
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ArrayIterable.java77
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ArrayListIterable.java59
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ChainIterable.java96
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CloneIterable.java66
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CloneListIterable.java92
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CompositeIterable.java98
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CompositeListIterable.java135
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/EmptyIterable.java65
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/EmptyListIterable.java65
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/FilteringIterable.java95
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/GraphIterable.java156
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LateralIterableWrapper.java47
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LateralListIterableWrapper.java53
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ListIterable.java27
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ListListIterable.java35
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LiveCloneIterable.java85
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LiveCloneListIterable.java85
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/PeekableIterable.java56
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/QueueIterable.java51
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ReadOnlyCompositeListIterable.java100
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ReadOnlyIterable.java50
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ReadOnlyListIterable.java50
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SingleElementIterable.java55
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SingleElementListIterable.java58
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SnapshotCloneIterable.java124
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SnapshotCloneListIterable.java102
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/StackIterable.java51
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SubIterableWrapper.java50
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SubListIterableWrapper.java54
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SuperIterableWrapper.java45
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SuperListIterableWrapper.java54
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/TransformationIterable.java91
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/TransformationListIterable.java111
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/TreeIterable.java137
34 files changed, 0 insertions, 2575 deletions
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ArrayIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ArrayIterable.java
deleted file mode 100644
index 5f67e72a49..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ArrayIterable.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.Arrays;
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.ArrayIterator;
-
-/**
- * An <code>ArrayIterable</code> provides an {@link Iterable}
- * for an array of objects of type <code>E</code>.
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see ArrayIterator
- * @see ArrayListIterable
- */
-public class ArrayIterable<E>
- implements Iterable<E>
-{
- final E[] array;
- final int start;
- final int length;
-
- /**
- * Construct an iterable for the specified array.
- */
- public ArrayIterable(E... array) {
- this(array, 0, array.length);
- }
-
- /**
- * Construct an iterable for the specified array,
- * starting at the specified start index and continuing for
- * the rest of the array.
- */
- public ArrayIterable(E[] array, int start) {
- this(array, start, array.length - start);
- }
-
- /**
- * Construct an iterable for the specified array,
- * starting at the specified start index and continuing for
- * the specified length.
- */
- public ArrayIterable(E[] array, int start, int length) {
- super();
- if ((start < 0) || (start > array.length)) {
- throw new IllegalArgumentException("start: " + start); //$NON-NLS-1$
- }
- if ((length < 0) || (length > array.length - start)) {
- throw new IllegalArgumentException("length: " + length); //$NON-NLS-1$
- }
- this.array = array;
- this.start = start;
- this.length = length;
- }
-
- public Iterator<E> iterator() {
- return new ArrayIterator<E>(this.array, this.start, this.length);
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, Arrays.toString(this.array));
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ArrayListIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ArrayListIterable.java
deleted file mode 100644
index 78ceb0e23d..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ArrayListIterable.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.ListIterator;
-
-import org.eclipse.jpt.common.utility.internal.iterators.ArrayListIterator;
-
-/**
- * An <code>ArrayListIterable</code> provides a {@link ListIterable}
- * for an array of objects of type <code>E</code>.
- *
- * @param <E> the type of elements returned by the list iterable's list iterator
- *
- * @see ArrayIterable
- * @see ArrayListIterator
- */
-public class ArrayListIterable<E>
- extends ArrayIterable<E>
- implements ListIterable<E>
-{
- /**
- * Construct a list iterable for the specified array.
- */
- public ArrayListIterable(E... array) {
- this(array, 0, array.length);
- }
-
- /**
- * Construct a list iterable for the specified array,
- * starting at the specified start index and continuing for
- * the rest of the array.
- */
- public ArrayListIterable(E[] array, int start) {
- this(array, start, array.length - start);
- }
-
- /**
- * Construct a list iterable for the specified array,
- * starting at the specified start index and continuing for
- * the specified length.
- */
- public ArrayListIterable(E[] array, int start, int length) {
- super(array, start, length);
- }
-
- @Override
- public ListIterator<E> iterator() {
- return new ArrayListIterator<E>(this.array, this.start, this.length);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ChainIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ChainIterable.java
deleted file mode 100644
index 12dcc76816..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ChainIterable.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.ChainIterator;
-
-/**
- * A <code>ChainIterable</code> provides a pluggable {@link Iterable}
- * that loops over a chain of arbitrarily linked objects. The chain
- * should be null-terminated (i.e. a call to the {@link #nextLink(Object)}
- * method should return <code>null</code> when it is passed the last
- * link of the chain).
- * To use, supply a starting link and supply a {@link ChainIterator.Linker} or
- * subclass <code>ChainIterable</code> and override the
- * {@link #nextLink(Object)} method.
- * The starting link will be the first object returned by the iterable's iterator.
- * If the starting link is <code>null</code>, the iterable will be empty.
- * Note this iterable does not support <code>null</code> elements.
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see ChainIterator
- */
-public class ChainIterable<E>
- implements Iterable<E>
-{
- private final E startLink;
- private final ChainIterator.Linker<E> linker;
-
-
- /**
- * Construct an iterable with the specified starting link
- * and a default linker that calls back to the iterable.
- * Use this constructor if you want to override the
- * {@link #nextLink(Object)} method instead of building
- * a {@link ChainIterator.Linker}.
- */
- public ChainIterable(E startLink) {
- super();
- this.startLink = startLink;
- this.linker = this.buildDefaultLinker();
- }
-
- /**
- * Construct an iterator with the specified starting link
- * and linker.
- */
- public ChainIterable(E startLink, ChainIterator.Linker<E> linker) {
- super();
- this.startLink = startLink;
- this.linker = linker;
- }
-
- protected ChainIterator.Linker<E> buildDefaultLinker() {
- return new DefaultLinker();
- }
-
- public Iterator<E> iterator() {
- return new ChainIterator<E>(this.startLink, this.linker);
- }
-
- /**
- * Return the next link in the chain; null if there are no more links.
- * <p>
- * This method can be overridden by a subclass as an alternative to
- * building a {@link ChainIterator.Linker}.
- */
- protected E nextLink(@SuppressWarnings("unused") E currentLink) {
- throw new RuntimeException("This method was not overridden."); //$NON-NLS-1$
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.startLink);
- }
-
-
- //********** default linker **********
-
- protected class DefaultLinker implements ChainIterator.Linker<E> {
- public E nextLink(E currentLink) {
- return ChainIterable.this.nextLink(currentLink);
- }
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CloneIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CloneIterable.java
deleted file mode 100644
index 22a21a4979..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CloneIterable.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import org.eclipse.jpt.common.utility.internal.iterators.CloneIterator;
-
-/**
- * Pull together remover state and behavior for subclasses.
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see SnapshotCloneIterable
- * @see LiveCloneIterable
- */
-public abstract class CloneIterable<E>
- implements Iterable<E>
-{
- final CloneIterator.Remover<E> remover;
-
-
- // ********** constructors **********
-
- protected CloneIterable() {
- super();
- this.remover = this.buildDefaultRemover();
- }
-
- protected CloneIterable(CloneIterator.Remover<E> remover) {
- super();
- this.remover = remover;
- }
-
- protected CloneIterator.Remover<E> buildDefaultRemover() {
- return new DefaultRemover();
- }
-
-
- // ********** default removal **********
-
- /**
- * Remove the specified element from the original collection.
- * <p>
- * This method can be overridden by a subclass as an
- * alternative to building a {@link CloneIterator.Remover}.
- */
- protected void remove(@SuppressWarnings("unused") E element) {
- throw new RuntimeException("This method was not overridden."); //$NON-NLS-1$
- }
-
-
- //********** default mutator **********
-
- protected class DefaultRemover implements CloneIterator.Remover<E> {
- public void remove(E element) {
- CloneIterable.this.remove(element);
- }
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CloneListIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CloneListIterable.java
deleted file mode 100644
index b98c42303a..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CloneListIterable.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import org.eclipse.jpt.common.utility.internal.iterators.CloneListIterator;
-
-/**
- * Pull together mutator state and behavior for subclasses.
- *
- * @param <E> the type of elements returned by the list iterable's list iterator
- *
- * @see SnapshotCloneListIterable
- * @see LiveCloneListIterable
- */
-public abstract class CloneListIterable<E>
- implements ListIterable<E>
-{
- final CloneListIterator.Mutator<E> mutator;
-
-
- // ********** constructors **********
-
- protected CloneListIterable() {
- super();
- this.mutator = this.buildDefaultMutator();
- }
-
- protected CloneListIterable(CloneListIterator.Mutator<E> mutator) {
- super();
- this.mutator = mutator;
- }
-
- protected CloneListIterator.Mutator<E> buildDefaultMutator() {
- return new DefaultMutator();
- }
-
-
- // ********** default mutations **********
-
- /**
- * At the specified index, add the specified element to the original list.
- * <p>
- * This method can be overridden by a subclass as an
- * alternative to building a {@link CloneListIterator.Mutator}.
- */
- protected void add(@SuppressWarnings("unused") int index, @SuppressWarnings("unused") E element) {
- throw new RuntimeException("This method was not overridden."); //$NON-NLS-1$
- }
-
- /**
- * Remove the element at the specified index from the original list.
- * <p>
- * This method can be overridden by a subclass as an
- * alternative to building a {@link CloneListIterator.Mutator}.
- */
- protected void remove(@SuppressWarnings("unused") int index) {
- throw new RuntimeException("This method was not overridden."); //$NON-NLS-1$
- }
-
- /**
- * At the specified index, set the specified element in the original list.
- * <p>
- * This method can be overridden by a subclass as an
- * alternative to building a {@link CloneListIterator.Mutator}.
- */
- protected void set(@SuppressWarnings("unused") int index, @SuppressWarnings("unused") E element) {
- throw new RuntimeException("This method was not overridden."); //$NON-NLS-1$
- }
-
-
- //********** default mutator **********
-
- protected class DefaultMutator implements CloneListIterator.Mutator<E> {
- public void add(int index, E element) {
- CloneListIterable.this.add(index, element);
- }
- public void remove(int index) {
- CloneListIterable.this.remove(index);
- }
- public void set(int index, E element) {
- CloneListIterable.this.set(index, element);
- }
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CompositeIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CompositeIterable.java
deleted file mode 100644
index 442737ede9..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CompositeIterable.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.CompositeIterator;
-import org.eclipse.jpt.common.utility.internal.iterators.TransformationIterator;
-
-/**
- * A <code>CompositeIterable</code> wraps an {@link Iterable}
- * of {@link Iterable}s and makes them appear to be a single
- * {@link Iterable}.
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see CompositeIterator
- * @see CompositeListIterable
- */
-public class CompositeIterable<E>
- implements Iterable<E>
-{
- private final Iterable<? extends Iterable<? extends E>> iterables;
-
-
- /**
- * Construct an iterable with the specified collection of iterables.
- */
- public CompositeIterable(Iterable<? extends Iterable<? extends E>> iterables) {
- super();
- this.iterables = iterables;
- }
-
- /**
- * Construct an iterable with the specified object prepended
- * to the specified iterable.
- */
- @SuppressWarnings("unchecked")
- public CompositeIterable(E object, Iterable<? extends E> iterable) {
- this(new SingleElementIterable<E>(object), iterable);
- }
-
- /**
- * Construct an iterable with the specified object appended
- * to the specified iterable.
- */
- @SuppressWarnings("unchecked")
- public CompositeIterable(Iterable<? extends E> iterable, E object) {
- this(iterable, new SingleElementIterable<E>(object));
- }
-
- /**
- * Construct an iterable with the specified iterables.
- */
- public CompositeIterable(Iterable<? extends E>... iterables) {
- this(new ArrayIterable<Iterable<? extends E>>(iterables));
- }
-
- /**
- * combined iterators
- */
- public Iterator<E> iterator() {
- return new CompositeIterator<E>(this.iterators());
- }
-
- /**
- * iterator of iterators
- */
- protected Iterator<? extends Iterator<? extends E>> iterators() {
- return new TransformationIterator<Iterable<? extends E>, Iterator<? extends E>>(this.iterables()) {
- @Override
- protected Iterator<? extends E> transform(Iterable<? extends E> next) {
- return next.iterator();
- }
- };
- }
-
- /**
- * iterator of iterables
- */
- protected Iterator<? extends Iterable<? extends E>> iterables() {
- return this.iterables.iterator();
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterables);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CompositeListIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CompositeListIterable.java
deleted file mode 100644
index 66f75626ef..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/CompositeListIterable.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 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.iterables;
-
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.CompositeListIterator;
-import org.eclipse.jpt.common.utility.internal.iterators.TransformationListIterator;
-
-/**
- * A <code>CompositeListIterable</code> wraps a {@link ListIterable}
- * of {@link ListIterable}s and makes them appear to be a single
- * {@link ListIterable}.
- *
- * @param <E> the type of elements returned by the list iterable's list iterator
- *
- * @see CompositeListIterator
- * @see CompositeIterable
- * @see ReadOnlyCompositeListIterable
- */
-public class CompositeListIterable<E>
- implements ListIterable<E>
-{
- private final ListIterable<? extends ListIterable<E>> iterables;
-
-
- /**
- * Construct a list iterable with the specified list of list iterables.
- */
- public CompositeListIterable(List<ListIterable<E>> iterables) {
- this(new ListListIterable<ListIterable<E>>(iterables));
- }
-
- /**
- * Construct a list iterable with the specified list of list iterables.
- */
- public CompositeListIterable(ListIterable<? extends ListIterable<E>> iterables) {
- super();
- this.iterables = iterables;
- }
-
- /**
- * Construct a list iterable with the specified object prepended
- * to the specified list.
- */
- public CompositeListIterable(E object, List<E> list) {
- this(object, new ListListIterable<E>(list));
- }
-
- /**
- * Construct a list iterable with the specified object prepended
- * to the specified list iterable.
- */
- @SuppressWarnings("unchecked")
- public CompositeListIterable(E object, ListIterable<E> iterable) {
- this(new SingleElementListIterable<E>(object), iterable);
- }
-
- /**
- * Construct a list iterable with the specified object appended
- * to the specified list.
- */
- public CompositeListIterable(List<E> list, E object) {
- this(new ListListIterable<E>(list), object);
- }
-
- /**
- * Construct a list iterable with the specified object appended
- * to the specified list iterable.
- */
- @SuppressWarnings("unchecked")
- public CompositeListIterable(ListIterable<E> iterable, E object) {
- this(iterable, new SingleElementListIterable<E>(object));
- }
-
- /**
- * Construct a list iterable with the specified list iterables.
- */
- public CompositeListIterable(ListIterable<E>... iterables) {
- this(new ArrayListIterable<ListIterable<E>>(iterables));
- }
-
- /**
- * Construct a list iterable with the specified lists.
- */
- public CompositeListIterable(List<E>... lists) {
- this(new TransformationListIterable<List<E>, ListIterable<E>>(new ArrayListIterable<List<E>>(lists)) {
- @Override
- protected ListIterable<E> transform(List<E> list) {
- return new ListListIterable<E>(list);
- }
- });
- }
-
- /**
- * combined list iterators
- */
- public ListIterator<E> iterator() {
- return new CompositeListIterator<E>(this.iterators());
- }
-
- /**
- * list iterator of list iterators
- */
- protected ListIterator<? extends ListIterator<E>> iterators() {
- return new TransformationListIterator<ListIterable<E>, ListIterator<E>>(this.iterables()) {
- @Override
- protected ListIterator<E> transform(ListIterable<E> next) {
- return next.iterator();
- }
- };
- }
-
- /**
- * list iterator of list iterables
- */
- protected ListIterator<? extends ListIterable<E>> iterables() {
- return this.iterables.iterator();
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterables);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/EmptyIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/EmptyIterable.java
deleted file mode 100644
index c3ed1c49dc..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/EmptyIterable.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 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.iterables;
-
-import java.io.Serializable;
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
-
-/**
- * An <code>EmptyIterable</code> is just that.
- * Maybe just a touch better-performing than {@link java.util.Collections#EMPTY_SET}
- * since we don't create a new {@link Iterator} every time {@link #iterator()} is called.
- * (Not sure why they do that....)
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see EmptyIterator
- * @see EmptyListIterable
- */
-public final class EmptyIterable<E>
- implements Iterable<E>, Serializable
-{
- // singleton
- @SuppressWarnings("rawtypes")
- private static final Iterable INSTANCE = new EmptyIterable();
-
- /**
- * Return the singleton.
- */
- @SuppressWarnings("unchecked")
- public static <T> Iterable<T> instance() {
- return INSTANCE;
- }
-
- /**
- * Ensure single instance.
- */
- private EmptyIterable() {
- super();
- }
-
- public Iterator<E> iterator() {
- return EmptyIterator.instance();
- }
-
- @Override
- public String toString() {
- return this.getClass().getSimpleName();
- }
-
- private static final long serialVersionUID = 1L;
- private Object readResolve() {
- // replace this object with the singleton
- return INSTANCE;
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/EmptyListIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/EmptyListIterable.java
deleted file mode 100644
index eb6613c071..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/EmptyListIterable.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 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.iterables;
-
-import java.io.Serializable;
-import java.util.ListIterator;
-
-import org.eclipse.jpt.common.utility.internal.iterators.EmptyListIterator;
-
-/**
- * An <code>EmptyListIterable</code> is just that.
- * Maybe just a touch better-performing than {@link java.util.Collections#EMPTY_LIST}
- * since we don't create a new {@link Iterator} every time {@link #iterator()} is called.
- * (Not sure why they do that....)
- *
- * @param <E> the type of elements returned by the list iterable's list iterator
- *
- * @see EmptyListIterator
- * @see EmptyIterable
- */
-public final class EmptyListIterable<E>
- implements ListIterable<E>, Serializable
-{
- // singleton
- @SuppressWarnings("rawtypes")
- private static final ListIterable INSTANCE = new EmptyListIterable();
-
- /**
- * Return the singleton.
- */
- @SuppressWarnings("unchecked")
- public static <T> ListIterable<T> instance() {
- return INSTANCE;
- }
-
- /**
- * Ensure single instance.
- */
- private EmptyListIterable() {
- super();
- }
-
- public ListIterator<E> iterator() {
- return EmptyListIterator.instance();
- }
-
- @Override
- public String toString() {
- return this.getClass().getSimpleName();
- }
-
- private static final long serialVersionUID = 1L;
- private Object readResolve() {
- // replace this object with the singleton
- return INSTANCE;
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/FilteringIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/FilteringIterable.java
deleted file mode 100644
index 897f0d908e..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/FilteringIterable.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 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.iterables;
-
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.Filter;
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.FilteringIterator;
-
-/**
- * A <code>FilteringIterable</code> wraps another {@link Iterable}
- * and uses a {@link Filter} to determine which elements in the
- * nested iterable are to be returned by the iterable's iterator.
- * <p>
- * As an alternative to building a {@link Filter}, a subclass
- * of <code>FilteringIterable</code> can override the
- * {@link #accept(Object)} method.
- *
- * @param <E> the type of elements to be filtered
- *
- * @see FilteringIterator
- */
-public class FilteringIterable<E>
- implements Iterable<E>
-{
- private final Iterable<? extends E> iterable;
- private final Filter<E> filter;
-
-
- /**
- * Construct an iterable with the specified nested
- * iterable and a default filter that calls back to the iterable.
- * Use this constructor if you want to override the
- * {@link #accept(Object)} method instead of building
- * a {@link Filter}.
- */
- public FilteringIterable(Iterable<? extends E> iterable) {
- super();
- this.iterable = iterable;
- this.filter = this.buildDefaultFilter();
- }
-
- /**
- * Construct an iterable with the specified nested
- * iterable and filter.
- */
- public FilteringIterable(Iterable<? extends E> iterable, Filter<E> filter) {
- super();
- this.iterable = iterable;
- this.filter = filter;
- }
-
- protected Filter<E> buildDefaultFilter() {
- return new DefaultFilter();
- }
-
- public Iterator<E> iterator() {
- return new FilteringIterator<E>(this.iterable.iterator(), this.filter);
- }
-
- /**
- * Return whether the iterable's iterator
- * should return the specified next element from a call to the
- * {@link Iterator#next()} method.
- * <p>
- * This method can be overridden by a subclass as an
- * alternative to building a {@link Filter}.
- */
- protected boolean accept(@SuppressWarnings("unused") E o) {
- throw new RuntimeException("This method was not overridden."); //$NON-NLS-1$
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterable);
- }
-
-
- //********** default filter **********
-
- protected class DefaultFilter implements Filter<E> {
- public boolean accept(E o) {
- return FilteringIterable.this.accept(o);
- }
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/GraphIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/GraphIterable.java
deleted file mode 100644
index 01912a47b5..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/GraphIterable.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.Arrays;
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.GraphIterator;
-
-/**
- * A <code>GraphIterable</code> is similar to a {@link TreeIterable}
- * except that it cannot be assumed that all nodes assume a strict tree
- * structure. For instance, in a tree, a node cannot be a descendent of
- * itself, but a graph may have a cyclical structure.
- *
- * A <code>GraphIterable</code> simplifies the traversal of a
- * graph of objects, where the objects' protocol(s) provides
- * a method for getting the next collection of nodes in the graph,
- * (or <em>neighbors</em>), but does not provide a method for
- * getting <em>all</em> of the nodes in the graph.
- * (e.g. a neighbor can return his neighbors, and those neighbors
- * can return their neighbors, which might also include the original
- * neighbor, but you only want to visit the original neighbor once.)
- * <p>
- * If a neighbor has already been visited (determined by using
- * {@link #equals(Object)}), that neighbor is not visited again,
- * nor are the neighbors of that object.
- * <p>
- * It is up to the user of this class to ensure a <em>complete</em> graph.
- * <p>
- * To use, supply:<ul>
- * <li> either the initial node of the graph or an {@link Iterable}
- * of the initial collection of graph nodes
- * <li> a {@link GraphIterator.MisterRogers} that tells who the neighbors are
- * of each node
- * (alternatively, subclass <code>GraphIterable</code>
- * and override the {@link #neighbors(Object)} method)
- * </ul>
- * The {@link Iterator#remove()} operation is not supported. This behavior, if
- * desired, must be implemented by the user of this class.
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see GraphIterator
- */
-public class GraphIterable<E>
- implements Iterable<E>
-{
- private final Iterable<? extends E> roots;
- private final GraphIterator.MisterRogers<E> misterRogers;
-
-
- /**
- * Construct an iterable containing the nodes of a graph with the specified root
- * and a default Mr. Rogers that calls back to the iterable.
- * Use this constructor if you want to override the
- * {@link #neighbors(Object)} method instead of building
- * a {@link GraphIterator.MisterRogers}.
- */
- public GraphIterable(E root) {
- this(new SingleElementIterable<E>(root));
- }
-
- /**
- * Construct an iterable containing the nodes of a graph
- * with the specified root and Mr. Rogers.
- */
- public GraphIterable(E root, GraphIterator.MisterRogers<E> misterRogers) {
- this(new SingleElementIterable<E>(root), misterRogers);
- }
-
- /**
- * Construct an iterable containing the nodes of a graph
- * with the specified collection of roots
- * and a default Mr. Rogers that calls back to the iterable.
- * Use this constructor if you want to override the
- * {@link #neighbors(Object)} method instead of building
- * a {@link GraphIterator.MisterRogers}.
- */
- public GraphIterable(E... roots) {
- this(Arrays.asList(roots));
- }
-
- /**
- * Construct an iterable containing the nodes of a graph
- * with the specified roots and Mr. Rogers.
- */
- public GraphIterable(E[] roots, GraphIterator.MisterRogers<E> misterRogers) {
- this(Arrays.asList(roots), misterRogers);
- }
-
- /**
- * Construct an iterable containing the nodes of a graph
- * with the specified collection of roots
- * and a default Mr. Rogers that calls back to the iterable.
- * Use this constructor if you want to override the
- * {@link #neighbors(Object)} method instead of building
- * a {@link GraphIterator.MisterRogers}.
- */
- public GraphIterable(Iterable<? extends E> roots) {
- super();
- this.roots = roots;
- this.misterRogers = this.buildDefaultMisterRogers();
- }
-
- /**
- * Construct an iterable containing the nodes of a graph
- * with the specified roots and Mr. Rogers.
- */
- public GraphIterable(Iterable<? extends E> roots, GraphIterator.MisterRogers<E> misterRogers) {
- super();
- this.roots = roots;
- this.misterRogers = misterRogers;
- }
-
- protected GraphIterator.MisterRogers<E> buildDefaultMisterRogers() {
- return new DefaultMisterRogers();
- }
-
- public Iterator<E> iterator() {
- return new GraphIterator<E>(this.roots, this.misterRogers);
- }
-
- /**
- * Return the immediate neighbors of the specified object.
- * <p>
- * This method can be overridden by a subclass as an
- * alternative to building a {@link GraphIterator.MisterRogers}.
- */
- protected Iterator<? extends E> neighbors(@SuppressWarnings("unused") E next) {
- throw new RuntimeException("This method was not overridden."); //$NON-NLS-1$
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.roots);
- }
-
-
- //********** default Mr. Rogers **********
-
- protected class DefaultMisterRogers implements GraphIterator.MisterRogers<E> {
- public Iterator<? extends E> neighbors(E node) {
- return GraphIterable.this.neighbors(node);
- }
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LateralIterableWrapper.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LateralIterableWrapper.java
deleted file mode 100644
index acb656d79e..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LateralIterableWrapper.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 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.iterables;
-
-import java.util.Iterator;
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.LateralIteratorWrapper;
-
-/**
- * Wrap an iterable of elements of type <code>E1</code>, converting it into an
- * iterable of elements of type <code>E2</code>. <em>Assume</em> the wrapped
- * iterable contains only elements of type <code>E2</code>. The result is a
- * {@link ClassCastException} if this assumption is false.
- *
- * @param <E1> input: the type of elements contained by the wrapped iterable
- * @param <E2> output: the type of elements returned by the iterable's iterators
- *
- * @see LateralIteratorWrapper
- * @see SubIterableWrapper
- */
-public class LateralIterableWrapper<E1, E2>
- implements Iterable<E2>
-{
- private final Iterable<E1> iterable;
-
-
- public LateralIterableWrapper(Iterable<E1> iterable) {
- super();
- this.iterable = iterable;
- }
-
- public Iterator<E2> iterator() {
- return new LateralIteratorWrapper<E1, E2>(this.iterable.iterator());
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterable);
- }
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LateralListIterableWrapper.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LateralListIterableWrapper.java
deleted file mode 100644
index 3847723a63..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LateralListIterableWrapper.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 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.iterables;
-
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.LateralListIteratorWrapper;
-
-/**
- * Wrap a list iterable of elements of type <code>E1</code>, converting it into
- * a list iterable of elements of type <code>E2</code>. <em>Assume</em> the
- * wrapped iterable contains only elements of type <code>E2</code>.
- * The result is a {@link ClassCastException} if this assumption is false.
- *
- * @param <E1> input: the type of elements contained by the wrapped list iterable
- * @param <E2> output: the type of elements returned by the iterable's list iterators
- *
- * @see LateralListIteratorWrapper
- * @see SubListIterableWrapper
- */
-public class LateralListIterableWrapper<E1, E2>
- implements ListIterable<E2>
-{
- private final ListIterable<E1> iterable;
-
-
- public LateralListIterableWrapper(List<E1> list) {
- this(new ListListIterable<E1>(list));
- }
-
- public LateralListIterableWrapper(ListIterable<E1> iterable) {
- super();
- this.iterable = iterable;
- }
-
- public ListIterator<E2> iterator() {
- return new LateralListIteratorWrapper<E1, E2>(this.iterable.iterator());
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterable);
- }
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ListIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ListIterable.java
deleted file mode 100644
index 91bab82950..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ListIterable.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.ListIterator;
-
-/**
- * A <code>ListIterable</code> simply extends {@link Iterable}
- * to return a {@link ListIterator} of type <code>E</code>.
- *
- * @param <E> the type of elements returned by the iterable's iterators
- */
-public interface ListIterable<E>
- extends Iterable<E>
-{
- /**
- * Return a list iterator over a set of elements of type E.
- */
- ListIterator<E> iterator();
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ListListIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ListListIterable.java
deleted file mode 100644
index ad5a5d7926..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ListListIterable.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.List;
-import java.util.ListIterator;
-
-/**
- * A <code>ListListIterable</code> adapts a {@link List}
- * to the {@link ListIterable} interface.
- *
- * @param <E> the type of elements returned by the iterable's iterators
- */
-public class ListListIterable<E>
- implements ListIterable<E>
-{
- private final List<E> list;
-
- public ListListIterable(List<E> list) {
- super();
- this.list = list;
- }
-
- public ListIterator<E> iterator() {
- return this.list.listIterator();
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LiveCloneIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LiveCloneIterable.java
deleted file mode 100644
index e8aaccff06..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LiveCloneIterable.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.CloneIterator;
-
-/**
- * A <code>LiveCloneIterable</code> returns an iterator on a current copy of a
- * collection, allowing for concurrent access to the original collection. A
- * copy of the collection is created every time {@link #iterator()} is
- * called. As a result, the contents of the collection can be different with
- * each call to {@link #iterator()} (i.e. it is "live").
- * <p>
- * The original collection passed to the <code>LiveCloneIterable</code>'s
- * constructor should be thread-safe (e.g. {@link java.util.Vector});
- * otherwise you run the risk of a corrupted collection.
- * <p>
- * By default, the iterator returned by a <code>LiveCloneIterable</code> does not
- * support the {@link Iterator#remove()} operation; this is because it does not
- * have access to the original collection. But if the <code>LiveCloneIterable</code>
- * is supplied with an {@link CloneIterator.Remover} it will delegate the
- * {@link Iterator#remove()} operation to the <code>Remover</code>.
- * Alternatively, a subclass can override the iterable's {@link #remove(Object)}
- * method.
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see CloneIterator
- * @see SnapshotCloneIterable
- * @see LiveCloneListIterable
- */
-public class LiveCloneIterable<E>
- extends CloneIterable<E>
-{
- private final Collection<? extends E> collection;
-
-
- // ********** constructors **********
-
- /**
- * Construct a "live" iterable for the specified collection.
- * The {@link Iterator#remove()} operation will not be supported
- * by the iterator returned by {@link #iterator()}
- * unless a subclass overrides the iterable's {@link #remove(Object)}
- * method.
- */
- public LiveCloneIterable(Collection<? extends E> collection) {
- super();
- this.collection = collection;
- }
-
- /**
- * Construct a "live" iterable for the specified collection.
- * The specified remover will be used by any generated iterators to
- * remove objects from the original collection.
- */
- public LiveCloneIterable(Collection<? extends E> collection, CloneIterator.Remover<E> remover) {
- super(remover);
- this.collection = collection;
- }
-
-
- // ********** Iterable implementation **********
-
- public Iterator<E> iterator() {
- return new CloneIterator<E>(this.collection, this.remover);
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.collection);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LiveCloneListIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LiveCloneListIterable.java
deleted file mode 100644
index 9d26554db1..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/LiveCloneListIterable.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.CloneListIterator;
-
-/**
- * A <code>LiveCloneListIterable</code> returns a list iterator on a current
- * copy of a list, allowing for concurrent access to the original list. A
- * copy of the list is created every time {@link #iterator()} is
- * called. As a result, the contents of the list can be different with
- * each call to {@link #iterator()} (i.e. it is "live").
- * <p>
- * The original list passed to the <code>LiveCloneListIterable</code>'s
- * constructor should be thread-safe (e.g. {@link java.util.Vector});
- * otherwise you run the risk of a corrupted list.
- * <p>
- * By default, the list iterator returned by a <code>LiveCloneListIterable</code>
- * does not support the modify operations; this is because it does not
- * have access to the original list. But if the <code>LiveCloneListIterable</code>
- * is supplied with an {@link CloneListIterator.Mutator} it will delegate the
- * modify operations to the <code>Mutator</code>.
- * Alternatively, a subclass can override the list iterable's mutation
- * methods.
- *
- * @param <E> the type of elements returned by the list iterable's list iterator
- *
- * @see CloneListIterator
- * @see SnapshotCloneListIterable
- * @see LiveCloneIterable
- */
-public class LiveCloneListIterable<E>
- extends CloneListIterable<E>
-{
- private final List<? extends E> list;
-
-
- // ********** constructors **********
-
- /**
- * Construct a "live" list iterable for the specified list.
- * The {@link ListIterator} mutation operations will not be supported
- * by the list iterator returned by {@link #iterator()}
- * unless a subclass overrides the iterable's mutation
- * methods.
- */
- public LiveCloneListIterable(List<? extends E> list) {
- super();
- this.list = list;
- }
-
- /**
- * Construct a "live" list iterable for the specified list.
- * The specified mutator will be used by any generated list iterators to
- * modify the original list.
- */
- public LiveCloneListIterable(List<? extends E> list, CloneListIterator.Mutator<E> mutator) {
- super(mutator);
- this.list = list;
- }
-
-
- // ********** ListIterable implementation **********
-
- public ListIterator<E> iterator() {
- return new CloneListIterator<E>(this.list, this.mutator);
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.list);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/PeekableIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/PeekableIterable.java
deleted file mode 100644
index ad381ee41c..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/PeekableIterable.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.PeekableIterator;
-
-/**
- * A <code>PeekableIterable</code> wraps another {@link Iterable}
- * and returns an {@link PeekableIterator} that allows a
- * {@link PeekableIterator#peek() peek} at the next element to be
- * returned by {@link Iterator#next()}.
- * <p>
- * One, possibly undesirable, side-effect of using this iterator is that
- * the nested iterator's <code>next()</code> method will be invoked
- * <em>before</em> the peekable iterator's {@link Iterator#next()}
- * method is invoked. This is because the "next" element must be
- * pre-loaded for the {@link PeekableIterator#peek()} method.
- * This also prevents a peekable iterator from supporting the optional
- * {@link Iterator#remove()} method.
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see PeekableIterator
- */
-public class PeekableIterable<E>
- implements Iterable<E>
-{
- private final Iterable<? extends E> iterable;
-
- /**
- * Construct a peekable iterable that wraps the specified
- * iterable.
- */
- public PeekableIterable(Iterable<? extends E> iterable) {
- super();
- this.iterable = iterable;
- }
-
- public PeekableIterator<E> iterator() {
- return new PeekableIterator<E>(this.iterable);
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterable);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/QueueIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/QueueIterable.java
deleted file mode 100644
index 5b2aa6d0b4..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/QueueIterable.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.Queue;
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.QueueIterator;
-
-/**
- * A <code>QueueIterable</code> provides an {@link Iterable}
- * for a {@link Queue} of objects of type <code>E</code>. The queue's elements
- * are {@link Queue#dequeue() dequeue}d" as the iterable's iterator returns
- * them with calls to {@link Iterator#next()}.
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see Queue
- * @see QueueIterator
- */
-public class QueueIterable<E>
- implements Iterable<E>
-{
- private final Queue<E> queue;
-
- /**
- * Construct an iterable for the specified queue.
- */
- public QueueIterable(Queue<E> queue) {
- super();
- this.queue = queue;
- }
-
- public Iterator<E> iterator() {
- return new QueueIterator<E>(this.queue);
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.queue);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ReadOnlyCompositeListIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ReadOnlyCompositeListIterable.java
deleted file mode 100644
index ff2810fdda..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ReadOnlyCompositeListIterable.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.ListIterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.ReadOnlyCompositeListIterator;
-import org.eclipse.jpt.common.utility.internal.iterators.TransformationListIterator;
-
-/**
- * A <code>ReadOnlyCompositeListIterable</code> wraps a {@link ListIterable}
- * of {@link ListIterable}s and makes them appear to be a single
- * read-only {@link ListIterable}. A read-only composite list
- * iterable is more flexible than a normal composite list iterable when it
- * comes to the element types of the nested list iterables.
- *
- * @param <E> the type of elements returned by the list iterable's list iterator
- *
- * @see ReadOnlyCompositeListIterator
- * @see CompositeListIterable
- */
-public class ReadOnlyCompositeListIterable<E>
- implements ListIterable<E>
-{
- private final ListIterable<? extends ListIterable<? extends E>> iterables;
-
-
- /**
- * Construct a list iterable with the specified list of list iterables.
- */
- public ReadOnlyCompositeListIterable(ListIterable<? extends ListIterable<? extends E>> iterables) {
- super();
- this.iterables = iterables;
- }
-
- /**
- * Construct a list iterable with the specified object prepended
- * to the specified list iterable.
- */
- @SuppressWarnings("unchecked")
- public ReadOnlyCompositeListIterable(E object, ListIterable<? extends E> iterable) {
- this(new SingleElementListIterable<E>(object), iterable);
- }
-
- /**
- * Construct a list iterable with the specified object appended
- * to the specified list iterable.
- */
- @SuppressWarnings("unchecked")
- public ReadOnlyCompositeListIterable(ListIterable<? extends E> iterable, E object) {
- this(iterable, new SingleElementListIterable<E>(object));
- }
-
- /**
- * Construct a list iterable with the specified list iterables.
- */
- public ReadOnlyCompositeListIterable(ListIterable<? extends E>... iterables) {
- this(new ArrayListIterable<ListIterable<? extends E>>(iterables));
- }
-
- /**
- * combined list iterators
- */
- public ListIterator<E> iterator() {
- return new ReadOnlyCompositeListIterator<E>(this.iterators());
- }
-
- /**
- * list iterator of list iterators
- */
- protected ListIterator<? extends ListIterator<? extends E>> iterators() {
- return new TransformationListIterator<ListIterable<? extends E>, ListIterator<? extends E>>(this.iterables()) {
- @Override
- protected ListIterator<? extends E> transform(ListIterable<? extends E> next) {
- return next.iterator();
- }
- };
- }
-
- /**
- * list iterator of list iterables
- */
- protected ListIterator<? extends ListIterable<? extends E>> iterables() {
- return this.iterables.iterator();
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterables);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ReadOnlyIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ReadOnlyIterable.java
deleted file mode 100644
index 0483928be6..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ReadOnlyIterable.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.ReadOnlyIterator;
-
-/**
- * A <code>ReadOnlyIterable</code> wraps another {@link Iterable}
- * and returns a read-only {@link Iterator}.
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see ReadOnlyIterator
- * @see ReadOnlyListIterable
- */
-public class ReadOnlyIterable<E>
- implements Iterable<E>
-{
- private final Iterable<? extends E> iterable;
-
-
- /**
- * Construct an iterable the returns a read-only iterator on the elements
- * in the specified iterable.
- */
- public ReadOnlyIterable(Iterable<? extends E> iterable) {
- super();
- this.iterable = iterable;
- }
-
- public Iterator<E> iterator() {
- return new ReadOnlyIterator<E>(this.iterable);
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterable);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ReadOnlyListIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ReadOnlyListIterable.java
deleted file mode 100644
index 1efde41a59..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/ReadOnlyListIterable.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.ListIterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.ReadOnlyListIterator;
-
-/**
- * A <code>ReadOnlyListIterable</code> wraps another {@link ListIterable}
- * and returns a read-only {@link ListIterator}.
- *
- * @param <E> the type of elements returned by the list iterable's list iterator
- *
- * @see ReadOnlyListIterator
- * @see ReadOnlyIterable
- */
-public class ReadOnlyListIterable<E>
- implements ListIterable<E>
-{
- private final ListIterable<? extends E> listIterable;
-
-
- /**
- * Construct a list iterable the returns a read-only list iterator on the elements
- * in the specified list iterable.
- */
- public ReadOnlyListIterable(ListIterable<? extends E> iterable) {
- super();
- this.listIterable = iterable;
- }
-
- public ListIterator<E> iterator() {
- return new ReadOnlyListIterator<E>(this.listIterable);
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.listIterable);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SingleElementIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SingleElementIterable.java
deleted file mode 100644
index 34ea3a7e24..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SingleElementIterable.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.SingleElementIterator;
-
-/**
- * A <code>SingleElementIterable</code> returns an {@link Iterator}
- * that holds a single element
- * and returns it with the first call to {@link Iterator#next()}, at
- * which point it will return <code>false</code> to any subsequent
- * call to {@link Iterator#hasNext()}.
- * <p>
- * A <code>SingleElementIterable</code> is equivalent to the
- * {@link Iterable} returned by:
- * {@link java.util.Collections#singleton(Object)}.
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see SingleElementIterator
- * @see SingleElementListIterable
- */
-public class SingleElementIterable<E>
- implements Iterable<E>
-{
- private final E element;
-
- /**
- * Construct an iterable that contains only the specified element.
- */
- public SingleElementIterable(E element) {
- super();
- this.element = element;
- }
-
- public Iterator<E> iterator() {
- return new SingleElementIterator<E>(this.element);
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.element);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SingleElementListIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SingleElementListIterable.java
deleted file mode 100644
index c6e2100367..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SingleElementListIterable.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.ListIterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.SingleElementListIterator;
-
-/**
- * A <code>SingleElementListIterable</code> returns a {@link ListIterator}
- * that holds a single element
- * and returns it with the first call to {@link ListIterator#next()}, at
- * which point it will return <code>false</code> to any subsequent
- * call to {@link ListIterator#hasNext()}. Likewise, it will return <code>false</code>
- * to a call to {@link ListIterator#hasPrevious()} until a call to {@link ListIterator#next()},
- * at which point a call to {@link ListIterator#previous()} will return the
- * single element.
- * <p>
- * A <code>SingleElementListIterable</code> is equivalent to the
- * {@link Iterable} returned by:
- * {@link java.util.Collections#singletonList(Object)}.
- *
- * @param <E> the type of elements returned by the list iterable's list iterator
- *
- * @see SingleElementListIterator
- * @see SingleElementIterable
- */
-public class SingleElementListIterable<E>
- implements ListIterable<E>
-{
- private final E element;
-
- /**
- * Construct a list iterable that contains only the specified element.
- */
- public SingleElementListIterable(E element) {
- super();
- this.element = element;
- }
-
- public ListIterator<E> iterator() {
- return new SingleElementListIterator<E>(this.element);
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.element);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SnapshotCloneIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SnapshotCloneIterable.java
deleted file mode 100644
index 72beebec70..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SnapshotCloneIterable.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.ArrayTools;
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.CloneIterator;
-
-/**
- * A <code>SnapshotCloneIterable</code> returns an iterator on a "snapshot" of a
- * collection, allowing for concurrent access to the original collection. A
- * copy of the collection is created when the iterable is constructed.
- * As a result, the contents of the collection will be the same with
- * every call to {@link #iterator()}.
- * <p>
- * The original collection passed to the <code>SnapshotCloneIterable</code>'s
- * constructor should be thread-safe (e.g. {@link java.util.Vector});
- * otherwise you run the risk of a corrupted collection.
- * <p>
- * By default, the iterator returned by a <code>SnapshotCloneIterable</code> does not
- * support the {@link Iterator#remove()} operation; this is because it does not
- * have access to the original collection. But if the <code>SnapshotCloneIterable</code>
- * is supplied with a {@link CloneIterator.Remover} it will delegate the
- * {@link Iterator#remove()} operation to the <code>Remover</code>.
- * Alternatively, a subclass can override the iterable's {@link #remove(Object)}
- * method.
- * <p>
- * This iterable is useful for multiple passes over a collection that should not
- * be changed (e.g. by another thread) between passes.
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see CloneIterator
- * @see LiveCloneIterable
- * @see SnapshotCloneListIterable
- */
-public class SnapshotCloneIterable<E>
- extends CloneIterable<E>
-{
- private final Object[] array;
-
-
- // ********** constructors **********
-
- /**
- * Construct a "snapshot" iterable for the specified iterator.
- * The {@link Iterator#remove()} operation will not be supported
- * by the iterator returned by {@link #iterator()}
- * unless a subclass overrides the iterable's {@link #remove(Object)}
- * method.
- */
- public SnapshotCloneIterable(Iterator<? extends E> iterator) {
- super();
- this.array = ArrayTools.array(iterator);
- }
-
- /**
- * Construct a "snapshot" iterable for the specified iterator.
- * The specified remover will be used by any generated iterators to
- * remove objects from the original collection.
- */
- public SnapshotCloneIterable(Iterator<? extends E> iterator, CloneIterator.Remover<E> remover) {
- super(remover);
- this.array = ArrayTools.array(iterator);
- }
-
- /**
- * Construct a "snapshot" iterable for the specified collection.
- * The {@link Iterator#remove()} operation will not be supported
- * by the iterator returned by {@link #iterator()}
- * unless a subclass overrides the iterable's {@link #remove(Object)}
- * method.
- */
- public SnapshotCloneIterable(Collection<? extends E> collection) {
- super();
- this.array = collection.toArray();
- }
-
- /**
- * Construct a "snapshot" iterable for the specified collection.
- * The specified remover will be used by any generated iterators to
- * remove objects from the original collection.
- */
- public SnapshotCloneIterable(Collection<? extends E> collection, CloneIterator.Remover<E> remover) {
- super(remover);
- this.array = collection.toArray();
- }
-
-
- // ********** Iterable implementation **********
-
- public Iterator<E> iterator() {
- return new LocalCloneIterator<E>(this.remover, this.array);
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, Arrays.toString(this.array));
- }
-
-
- // ********** clone iterator **********
-
- /**
- * provide access to "internal" constructor
- */
- protected static class LocalCloneIterator<E> extends CloneIterator<E> {
- protected LocalCloneIterator(Remover<E> remover, Object[] array) {
- super(remover, array);
- }
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SnapshotCloneListIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SnapshotCloneListIterable.java
deleted file mode 100644
index f242ab70f5..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SnapshotCloneListIterable.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.CloneListIterator;
-
-/**
- * A <code>SnapshotCloneListIterable</code> returns a list iterator on a
- * "snapshot" of a list, allowing for concurrent access to the original list.
- * A copy of the list is created when the list iterable is constructed.
- * As a result, the contents of the list will be the same with
- * every call to {@link #iterator()}, even if the original list is modified via
- * the list iterator's mutation methods.
- * <p>
- * The original list passed to the <code>SnapshotCloneListIterable</code>'s
- * constructor should be thread-safe (e.g. {@link java.util.Vector});
- * otherwise you run the risk of a corrupted list.
- * <p>
- * By default, the list iterator returned by a <code>SnapshotCloneListIterable</code> does not
- * support the {@link ListIterator} mutation operations; this is because it does not
- * have access to the original list. But if the <code>SnapshotCloneListIterable</code>
- * is supplied with a {@link CloneListIterator.Mutator} it will delegate the
- * {@link ListIterator} mutation operations to the <code>Mutator</code>.
- * Alternatively, a subclass can override the list iterable's mutation
- * methods.
- * <p>
- * This list iterable is useful for multiple passes over a list that should not
- * be changed (e.g. by another thread) between passes.
- *
- * @param <E> the type of elements returned by the list iterable's list iterator
- *
- * @see CloneListIterator
- * @see LiveCloneListIterable
- * @see SnapshotCloneIterable
- */
-public class SnapshotCloneListIterable<E>
- extends CloneListIterable<E>
-{
- private final Object[] array;
-
-
- // ********** constructors **********
-
- /**
- * Construct a "snapshot" list iterable for the specified list.
- * The {@link ListIterator} modify operations will not be supported
- * by the list iterator returned by {@link #iterator()}
- * unless a subclass overrides the list iterable's modify
- * method.
- */
- public SnapshotCloneListIterable(List<? extends E> list) {
- super();
- this.array = list.toArray();
- }
-
- /**
- * Construct a "snapshot" list iterable for the specified list.
- * The specified mutator will be used by any generated list iterators to
- * modify the original list.
- */
- public SnapshotCloneListIterable(List<? extends E> list, CloneListIterator.Mutator<E> mutator) {
- super(mutator);
- this.array = list.toArray();
- }
-
-
- // ********** ListIterable implementation **********
-
- public ListIterator<E> iterator() {
- return new LocalCloneListIterator<E>(this.mutator, this.array);
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, Arrays.toString(this.array));
- }
-
-
- // ********** clone iterator **********
-
- /**
- * provide access to "internal" constructor
- */
- protected static class LocalCloneListIterator<E> extends CloneListIterator<E> {
- protected LocalCloneListIterator(Mutator<E> mutator, Object[] array) {
- super(mutator, array);
- }
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/StackIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/StackIterable.java
deleted file mode 100644
index 211fe3f61a..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/StackIterable.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 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.iterables;
-
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.Stack;
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.StackIterator;
-
-/**
- * A <code>StackIterable</code> provides an {@link Iterable}
- * for a {@link Stack} of objects of type <code>E</code>. The stack's elements
- * are {@link Stack#pop() "popped"} as the iterable's iterator returns
- * them with calls to {@link Iterator#next()}.
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see Stack
- * @see StackIterator
- */
-public class StackIterable<E>
- implements Iterable<E>
-{
- private final Stack<E> stack;
-
- /**
- * Construct an iterable for the specified stack.
- */
- public StackIterable(Stack<E> stack) {
- super();
- this.stack = stack;
- }
-
- public Iterator<E> iterator() {
- return new StackIterator<E>(this.stack);
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.stack);
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SubIterableWrapper.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SubIterableWrapper.java
deleted file mode 100644
index 13f5cb058c..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SubIterableWrapper.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 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.iterables;
-
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.SubIteratorWrapper;
-
-/**
- * Wrap an iterable of elements of type <code>E1</code>, converting it into an
- * iterable of elements of type <code>E2</code>. <em>Assume</em> the wrapped
- * iterable contains only elements of type <code>E2</code>. The result is a
- * {@link ClassCastException} if this assumption is false.
- * <p>
- * This is like a {@link LateralIterableWrapper} but with more restrictive type
- * parameters.
- *
- * @param <E1> input: the type of elements contained by the wrapped iterable
- * @param <E2> output: the type of elements returned by the iterable's iterators
- *
- * @see SubIteratorWrapper
- */
-public class SubIterableWrapper<E1, E2 extends E1>
- implements Iterable<E2>
-{
- private final Iterable<E1> iterable;
-
-
- public SubIterableWrapper(Iterable<E1> iterable) {
- super();
- this.iterable = iterable;
- }
-
- public Iterator<E2> iterator() {
- return new SubIteratorWrapper<E1, E2>(this.iterable.iterator());
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterable);
- }
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SubListIterableWrapper.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SubListIterableWrapper.java
deleted file mode 100644
index d565d1bd1b..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SubListIterableWrapper.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 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.iterables;
-
-import java.util.List;
-import java.util.ListIterator;
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.SubListIteratorWrapper;
-
-/**
- * Wrap a list iterable of elements of type <code>E1</code>, converting it into
- * a list iterable of elements of type <code>E2</code>. <em>Assume</em> the
- * wrapped iterable contains only elements of type <code>E2</code>.
- * The result is a {@link ClassCastException} if this assumption is false.
- * <p>
- * This is like a {@link LateralListIterableWrapper} but with more restrictive type
- * parameters.
- *
- * @param <E1> input: the type of elements contained by the wrapped list iterable
- * @param <E2> output: the type of elements returned by the iterable's list iterators
- *
- * @see SubListIteratorWrapper
- */
-public class SubListIterableWrapper<E1, E2 extends E1>
- implements ListIterable<E2>
-{
- private final ListIterable<E1> iterable;
-
-
- public SubListIterableWrapper(List<E1> list) {
- this(new ListListIterable<E1>(list));
- }
-
- public SubListIterableWrapper(ListIterable<E1> iterable) {
- super();
- this.iterable = iterable;
- }
-
- public ListIterator<E2> iterator() {
- return new SubListIteratorWrapper<E1, E2>(this.iterable.iterator());
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterable);
- }
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SuperIterableWrapper.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SuperIterableWrapper.java
deleted file mode 100644
index 0b3e83ea32..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SuperIterableWrapper.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 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.iterables;
-
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-
-/**
- * Wrap an iterable of elements of any sub-type of <code>E</code>, converting it into an
- * iterable of elements of type <code>E</code>. This shouldn't be a problem since there
- * is no way to add invalid elements to the iterable.
- *
- * @param <E> the type of elements returned by the iterable's iterators
- */
-public class SuperIterableWrapper<E>
- implements Iterable<E>
-{
- private final Iterable<E> iterable;
-
-
- @SuppressWarnings("unchecked")
- public SuperIterableWrapper(Iterable<? extends E> iterable) {
- super();
- // this should be a safe cast - the iterator will only ever
- // return E (or a sub-type) from #next()
- this.iterable = (Iterable<E>) iterable;
- }
-
- public Iterator<E> iterator() {
- return this.iterable.iterator();
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterable);
- }
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SuperListIterableWrapper.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SuperListIterableWrapper.java
deleted file mode 100644
index 7abe433983..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/SuperListIterableWrapper.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 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.iterables;
-
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.SuperListIteratorWrapper;
-
-/**
- * Wrap a list iterable of elements of any sub-type of <code>E</code>,
- * converting it into a <em>non-writable</em> list iterable of elements
- * of type <code>E</code>.
- * This shouldn't be a problem since the resulting list iterable's list
- * iterator disables the methods that would put invalid elements in the list
- * iterator's backing list (i.e. {@link SuperListIteratorWrapper#set(Object)}
- * and {@link SuperListIteratorWrapper#add(Object)}).
- *
- * @param <E> the type of elements returned by the iterable's iterators
- *
- * @see SuperListIteratorWrapper
- */
-public class SuperListIterableWrapper<E>
- implements ListIterable<E>
-{
- private final ListIterable<? extends E> iterable;
-
-
- public <T extends E> SuperListIterableWrapper(List<T> list) {
- this(new ListListIterable<T>(list));
- }
-
- public SuperListIterableWrapper(ListIterable<? extends E> iterable) {
- super();
- this.iterable = iterable;
- }
-
- public ListIterator<E> iterator() {
- return new SuperListIteratorWrapper<E>(this.iterable.iterator());
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterable);
- }
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/TransformationIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/TransformationIterable.java
deleted file mode 100644
index 124c15d07d..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/TransformationIterable.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.Transformer;
-import org.eclipse.jpt.common.utility.internal.iterators.TransformationIterator;
-
-/**
- * A <code>TransformationIterable</code> wraps another {@link Iterable}
- * and transforms its elements for client consumption. To use, supply a
- * {@link Transformer} or subclass <code>TransformationIterable</code>
- * and override the {@link #transform(Object)} method.
- * Objects of type <code>E1</code> are transformed into objects of type <code>E2</code>;
- * i.e. the iterable's iterator returns objects of type <code>E2</code>.
- *
- * @param <E1> input: the type of elements to be transformed
- * @param <E2> output: the type of elements returned by the iterable's iterator
- *
- * @see TransformationIterator
- * @see TransformationListIterable
- */
-public class TransformationIterable<E1, E2>
- implements Iterable<E2>
-{
- private final Iterable<? extends E1> iterable;
- private final Transformer<E1, ? extends E2> transformer;
-
-
- /**
- * Construct an iterable with the specified nested iterable
- * and a default transformer that calls back to the iterable.
- * Use this constructor if you want to override the
- * {@link #transform(Object)} method instead of building
- * a {@link Transformer}.
- */
- public TransformationIterable(Iterable<? extends E1> iterable) {
- super();
- this.iterable = iterable;
- this.transformer = this.buildDefaultTransformer();
- }
-
- /**
- * Construct an iterable with the specified nested iterable
- * and transformer.
- */
- public TransformationIterable(Iterable<? extends E1> iterable, Transformer<E1, ? extends E2> transformer) {
- super();
- this.iterable = iterable;
- this.transformer = transformer;
- }
-
- protected Transformer<E1, ? extends E2> buildDefaultTransformer() {
- return new DefaultTransformer();
- }
-
- public Iterator<E2> iterator() {
- return new TransformationIterator<E1, E2>(this.iterable.iterator(), this.transformer);
- }
-
- /**
- * Transform the specified object and return the result.
- */
- protected E2 transform(@SuppressWarnings("unused") E1 o) {
- throw new RuntimeException("This method was not overridden."); //$NON-NLS-1$
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterable);
- }
-
-
- //********** default linker **********
-
- protected class DefaultTransformer implements Transformer<E1, E2> {
- public E2 transform(E1 o) {
- return TransformationIterable.this.transform(o);
- }
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/TransformationListIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/TransformationListIterable.java
deleted file mode 100644
index 0f2d058f57..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/TransformationListIterable.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.Transformer;
-import org.eclipse.jpt.common.utility.internal.iterators.TransformationListIterator;
-
-/**
- * A <code>TransformationListIterable</code> wraps another {@link ListIterable}
- * and transforms its elements for client consumption. To use, supply a
- * {@link Transformer} or subclass <code>TransformationListIterable</code>
- * and override the {@link #transform(Object)} method.
- * Objects of type <code>E1</code> are transformed into objects of type <code>E2</code>;
- * i.e. the list iterable's list iterator returns objects of type <code>E2</code>.
- *
- * @param <E1> input: the type of elements to be transformed
- * @param <E2> output: the type of elements returned by the iterable's iterator
- *
- * @see TransformationListIterator
- * @see TransformationIterable
- */
-public class TransformationListIterable<E1, E2>
- implements ListIterable<E2>
-{
- private final ListIterable<? extends E1> iterable;
- private final Transformer<E1, ? extends E2> transformer;
-
-
- /**
- * Construct a list iterable with the specified nested list
- * and a default transformer that calls back to the list iterable.
- * Use this constructor if you want to override the
- * {@link #transform(Object)} method instead of building
- * a {@link Transformer}.
- */
- public TransformationListIterable(List<E1> list) {
- this(new ListListIterable<E1>(list));
- }
-
- /**
- * Construct a list iterable with the specified nested list iterable
- * and a default transformer that calls back to the list iterable.
- * Use this constructor if you want to override the
- * {@link #transform(Object)} method instead of building
- * a {@link Transformer}.
- */
- public TransformationListIterable(ListIterable<? extends E1> iterable) {
- super();
- this.iterable = iterable;
- this.transformer = this.buildDefaultTransformer();
- }
-
- /**
- * Construct a list iterable with the specified nested list
- * and transformer.
- */
- public TransformationListIterable(List<E1> list, Transformer<E1, ? extends E2> transformer) {
- this(new ListListIterable<E1>(list), transformer);
- }
-
- /**
- * Construct a list iterable with the specified nested list iterable
- * and transformer.
- */
- public TransformationListIterable(ListIterable<? extends E1> iterable, Transformer<E1, ? extends E2> transformer) {
- super();
- this.iterable = iterable;
- this.transformer = transformer;
- }
-
- protected Transformer<E1, ? extends E2> buildDefaultTransformer() {
- return new DefaultTransformer();
- }
-
- public ListIterator<E2> iterator() {
- return new TransformationListIterator<E1, E2>(this.iterable.iterator(), this.transformer);
- }
-
- /**
- * Transform the specified object and return the result.
- */
- protected E2 transform(@SuppressWarnings("unused") E1 o) {
- throw new RuntimeException("This method was not overridden."); //$NON-NLS-1$
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.iterable);
- }
-
-
- //********** default linker **********
-
- protected class DefaultTransformer implements Transformer<E1, E2> {
- public E2 transform(E1 o) {
- return TransformationListIterable.this.transform(o);
- }
- }
-
-}
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/TreeIterable.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/TreeIterable.java
deleted file mode 100644
index 8e3e1ff336..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables/TreeIterable.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.iterables;
-
-import java.util.Arrays;
-import java.util.Iterator;
-
-import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.iterators.TreeIterator;
-
-/**
- * A <code>TreeIterable</code> simplifies the traversal of a
- * tree of objects, where the objects' protocol(s) provides
- * a method for getting the immediate children of the given
- * node but does not provide a method for getting all the
- * descendants (children, grandchildren, etc.) of the given node.
- * <p>
- * To use, supply:<ul>
- * <li> either the root element of the tree or, if the tree has
- * multiple roots, an {@link Iterable} of the set of roots
- * <li> a {@link TreeIterator.Midwife} that delivers the children of each child
- * (alternatively, subclass <code>TreeIterable</code>
- * and override the {@link #children(Object)} method)
- * </ul>
- *
- * @param <E> the type of elements returned by the iterable's iterator
- *
- * @see TreeIterator
- */
-public class TreeIterable<E>
- implements Iterable<E>
-{
- private final Iterable<? extends E> roots;
- private final TreeIterator.Midwife<E> midwife;
-
-
- /**
- * Construct an iterable containing the nodes of a tree with the specified root
- * and a default midwife that calls back to the iterable.
- * Use this constructor if you want to override the
- * {@link #children(Object)} method instead of building
- * a {@link TreeIterator.Midwife}.
- */
- public TreeIterable(E root) {
- this(new SingleElementIterable<E>(root));
- }
-
- /**
- * Construct an iterable containing the nodes of a tree with the specified root
- * and midwife.
- */
- public TreeIterable(E root, TreeIterator.Midwife<E> midwife) {
- this(new SingleElementIterable<E>(root), midwife);
- }
-
- /**
- * Construct an iterable containing the nodes of a tree with the specified roots
- * and a default midwife that calls back to the iterable.
- * Use this constructor if you want to override the
- * {@link #children(Object)} method instead of building
- * a {@link TreeIterator.Midwife}.
- */
- public TreeIterable(E... roots) {
- this(Arrays.asList(roots));
- }
-
- /**
- * Construct an iterable containing the nodes of a tree with the specified roots
- * and midwife.
- */
- public TreeIterable(E[] roots, TreeIterator.Midwife<E> midwife) {
- this(Arrays.asList(roots), midwife);
- }
-
- /**
- * Construct an iterable containing the nodes of a tree with the specified roots
- * and a default midwife that calls back to the iterable.
- * Use this constructor if you want to override the
- * {@link #children(Object)} method instead of building
- * a {@link TreeIterator.Midwife}.
- */
- public TreeIterable(Iterable<? extends E> roots) {
- super();
- this.roots = roots;
- this.midwife = this.buildDefaultMidwife();
- }
-
- /**
- * Construct an iterable containing the nodes of a tree with the specified roots
- * and midwife.
- */
- public TreeIterable(Iterable<? extends E> roots, TreeIterator.Midwife<E> midwife) {
- super();
- this.roots = roots;
- this.midwife = midwife;
- }
-
- protected TreeIterator.Midwife<E> buildDefaultMidwife() {
- return new DefaultMidwife();
- }
-
- public Iterator<E> iterator() {
- return new TreeIterator<E>(this.roots, this.midwife);
- }
-
- /**
- * Return the immediate children of the specified object.
- * <p>
- * This method can be overridden by a subclass as an
- * alternative to building a {@link TreeIterator.Midwife}.
- */
- protected Iterator<? extends E> children(@SuppressWarnings("unused") E next) {
- throw new RuntimeException("This method was not overridden."); //$NON-NLS-1$
- }
-
- @Override
- public String toString() {
- return StringTools.buildToStringFor(this, this.roots);
- }
-
-
- //********** default midwife **********
-
- protected class DefaultMidwife implements TreeIterator.Midwife<E> {
- public Iterator<? extends E> children(E node) {
- return TreeIterable.this.children(node);
- }
- }
-
-}

Back to the top