diff options
Diffstat (limited to 'common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/iterables')
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); - } - } - -} |