/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.kml.sequence; import java.util.AbstractList; import java.util.Iterator; import java.util.NoSuchElementException; /** * TODO: implement at least partially listiterator * * @author Andrea Aime - GeoSolutions * * @param <T> */ public class SequenceList<T> extends AbstractList<T> { public class GeneratorIterator implements Iterator<T> { private Sequence<T> generator; private T item; public GeneratorIterator(Sequence<T> generator) { this.generator = generator; this.item = generator.next(); } @Override public boolean hasNext() { return item != null; } @Override public T next() { if (!hasNext()) { throw new NoSuchElementException(); } T next = this.item; this.item = generator.next(); return next; } @Override public void remove() { throw new UnsupportedOperationException(); } } SequenceFactory<T> generatorFactory; public SequenceList(SequenceFactory<T> generatorFactory) { this.generatorFactory = generatorFactory; } @Override public Iterator iterator() { return new GeneratorIterator(generatorFactory.newSequence()); } @Override public T get(int index) { throw new UnsupportedOperationException(); } @Override public int size() { return -1; } }