/* * Copyright (c) 2012 EMC Corporation * All Rights Reserved */ package com.emc.storageos.api.service.impl.resource; import java.util.*; /** * Used for chaining two iterators */ public class ChainedList<T> implements List<T> { private final Iterator<Iterator<T>> _iterators; private ChainedIterator _chained; private class ChainedIterator implements Iterator<T> { private Iterator<T> _currentIt = _iterators.next(); @Override public boolean hasNext() { if (_currentIt.hasNext()) { return true; } while (_iterators.hasNext()) { _currentIt = _iterators.next(); if (_currentIt.hasNext()) { return true; } } return false; } @Override public T next() { return _currentIt.next(); } @Override public void remove() { throw new UnsupportedOperationException(); } } public ChainedList(Iterator<T>... iterator) { _iterators = Arrays.asList(iterator).iterator(); _chained = new ChainedIterator(); } @Override public int size() { throw new UnsupportedOperationException(); } @Override public boolean isEmpty() { throw new UnsupportedOperationException(); } @Override public boolean contains(Object o) { throw new UnsupportedOperationException(); } @Override public Iterator<T> iterator() { return _chained; } @Override public Object[] toArray() { throw new UnsupportedOperationException(); } @Override public <T> T[] toArray(T[] a) { throw new UnsupportedOperationException(); } @Override public boolean add(T t) { throw new UnsupportedOperationException(); } @Override public boolean remove(Object o) { throw new UnsupportedOperationException(); } @Override public boolean containsAll(Collection<?> c) { throw new UnsupportedOperationException(); } @Override public boolean addAll(Collection<? extends T> c) { throw new UnsupportedOperationException(); } @Override public boolean addAll(int index, Collection<? extends T> c) { throw new UnsupportedOperationException(); } @Override public boolean removeAll(Collection<?> c) { throw new UnsupportedOperationException(); } @Override public boolean retainAll(Collection<?> c) { throw new UnsupportedOperationException(); } @Override public void clear() { throw new UnsupportedOperationException(); } @Override public T get(int index) { throw new UnsupportedOperationException(); } @Override public T set(int index, T element) { throw new UnsupportedOperationException(); } @Override public void add(int index, T element) { throw new UnsupportedOperationException(); } @Override public T remove(int index) { throw new UnsupportedOperationException(); } @Override public int indexOf(Object o) { throw new UnsupportedOperationException(); } @Override public int lastIndexOf(Object o) { throw new UnsupportedOperationException(); } @Override public ListIterator<T> listIterator() { throw new UnsupportedOperationException(); } @Override public ListIterator<T> listIterator(int index) { throw new UnsupportedOperationException(); } @Override public List<T> subList(int fromIndex, int toIndex) { throw new UnsupportedOperationException(); } }