package fr.openwide.core.wicket.more.model;
import java.util.Collection;
import java.util.Iterator;
import org.apache.wicket.model.IModel;
import fr.openwide.core.wicket.more.markup.repeater.collection.IItemModelAwareCollectionModel;
import fr.openwide.core.wicket.more.util.model.Models;
abstract class AbstractMapCollectionModel<T, C extends Collection<T>, M extends IModel<T>>
implements IItemModelAwareCollectionModel<T, C, M> {
private static final long serialVersionUID = 1L;
@Override
public abstract void detach();
@Override
public abstract C getObject();
@Override
public void setObject(C object) {
throw newReadOnlyException();
}
@Override
public long size() {
return 0;
}
protected abstract Iterable<M> internalIterable();
@Override
public Iterator<M> iterator() {
return Models.collectionModelIterator(internalIterable());
}
@Override
public Iterator<M> iterator(long offset, long limit) {
return Models.collectionModelIterator(internalIterable(), offset, limit);
}
@Override
public void add(T item) {
throw newReadOnlyException();
}
@Override
public void remove(T item) {
throw newReadOnlyException();
}
@Override
public void clear() {
throw newReadOnlyException();
}
protected UnsupportedOperationException newReadOnlyException() {
return new UnsupportedOperationException("Model " + getClass() + " is read-only");
}
}