// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.core.util;
import java.util.Collection;
import java.util.Iterator;
/**
* Wraps an existing collection and delegates all calls to it. This is not useful on its own but can
* be extended as necessary by classes that delegate most functionality to an underlying collection
* implementation but extend or modify it in some ways.
*
* @author Brett Henderson
*
* @param <E> The type of data stored within the collection.
*/
public class CollectionWrapper<E> implements Collection<E> {
private Collection<E> wrappedCollection;
/**
* Creates a new instance.
*
* @param wrappedCollection
* The collection to be wrapped. This collection will not be copied, it will be used
* directly.
*/
public CollectionWrapper(Collection<E> wrappedCollection) {
this.wrappedCollection = wrappedCollection;
}
/**
* {@inheritDoc}
*/
@Override
public boolean add(E e) {
return wrappedCollection.add(e);
}
/**
* {@inheritDoc}
*/
@Override
public boolean addAll(Collection<? extends E> c) {
return wrappedCollection.addAll(c);
}
/**
* {@inheritDoc}
*/
@Override
public void clear() {
wrappedCollection.clear();
}
/**
* {@inheritDoc}
*/
@Override
public boolean contains(Object o) {
return wrappedCollection.contains(o);
}
/**
* {@inheritDoc}
*/
@Override
public boolean containsAll(Collection<?> c) {
return wrappedCollection.containsAll(c);
}
/**
* {@inheritDoc}
*/
@Override
public boolean isEmpty() {
return wrappedCollection.isEmpty();
}
/**
* {@inheritDoc}
*/
@Override
public Iterator<E> iterator() {
return wrappedCollection.iterator();
}
/**
* {@inheritDoc}
*/
@Override
public boolean remove(Object o) {
return wrappedCollection.remove(o);
}
/**
* {@inheritDoc}
*/
@Override
public boolean removeAll(Collection<?> c) {
return wrappedCollection.removeAll(c);
}
/**
* {@inheritDoc}
*/
@Override
public boolean retainAll(Collection<?> c) {
return wrappedCollection.retainAll(c);
}
/**
* {@inheritDoc}
*/
@Override
public int size() {
return wrappedCollection.size();
}
/**
* {@inheritDoc}
*/
@Override
public Object[] toArray() {
return wrappedCollection.toArray();
}
/**
* {@inheritDoc}
*/
@Override
public <T> T[] toArray(T[] a) {
return wrappedCollection.toArray(a);
}
}