package org.gridkit.jvmtool.event; import java.util.Iterator; import java.util.NoSuchElementException; public class SingleEventReader<T extends Event> implements EventReader<T> { private final T event; private boolean done; public SingleEventReader(T event) { this.event = event; } @Override public <M extends Event> EventReader<M> morph(EventMorpher<T, M> morpher) { return MorphingEventReader.morph(this, morpher); } @Override public Iterator<T> iterator() { return this; } @Override public boolean hasNext() { return !done; } @Override public T next() { if (!hasNext()) { throw new NoSuchElementException(); } done = true; return event; } @Override public void remove() { throw new UnsupportedOperationException(); } @Override public T peekNext() { if (!hasNext()) { throw new NoSuchElementException(); } return event; } @Override public void dispose() { // do nothing } }