/*
* Hibernate OGM, Domain model persistence for NoSQL datastores
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.ogm.datastore.impl;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
/**
* Wrap a Collection object into a Set assuming the Collection does not contain duplicates.
* The Set is read-only
*
* @author Emmanuel Bernard <emmanuel@hibernate.org>
*/
public final class SetFromCollection<E> implements Set<E> {
private Collection delegate;
public SetFromCollection(Collection delegate) {
this.delegate = delegate;
}
@Override
public int size() {
return delegate.size();
}
@Override
public boolean isEmpty() {
return delegate.isEmpty();
}
@Override
public boolean contains(Object o) {
return delegate.contains( o );
}
@Override
public Iterator<E> iterator() {
return delegate.iterator();
}
@Override
public Object[] toArray() {
return delegate.toArray();
}
@Override
public <T> T[] toArray(T[] a) {
return (T[]) delegate.toArray( a );
}
@Override
public boolean add(E e) {
throw new UnsupportedOperationException( "This Set implementation is read-only" );
}
@Override
public boolean remove(Object o) {
throw new UnsupportedOperationException( "This Set implementation is read-only" );
}
@Override
public boolean containsAll(Collection<?> c) {
return delegate.containsAll( c );
}
@Override
public boolean addAll(Collection<? extends E> c) {
throw new UnsupportedOperationException( "This Set implementation is read-only" );
}
@Override
public boolean retainAll(Collection<?> c) {
return delegate.retainAll( c );
}
@Override
public boolean removeAll(Collection<?> c) {
throw new UnsupportedOperationException( "This Set implementation is read-only" );
}
@Override
public void clear() {
throw new UnsupportedOperationException( "This Set implementation is read-only" );
}
}