package net.onrc.onos.core.intent; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import net.onrc.onos.core.topology.LinkData; /** * Base class for Path representation, which implements the List interface. */ public class Path implements List<LinkData> { private final List<LinkData> links; /** * Default constructor to create an empty path. */ public Path() { links = new LinkedList<LinkData>(); } /** * Returns a string representation of the path. * * @return "[LinkData src->dst],..." */ @Override public String toString() { StringBuilder builder = new StringBuilder(); Iterator<LinkData> i = this.iterator(); while (i.hasNext()) { builder.append(i.next().toString()); if (i.hasNext()) { builder.append(", "); } } return builder.toString(); } @Override public int size() { return links.size(); } @Override public boolean isEmpty() { return links.isEmpty(); } @Override public boolean contains(Object o) { return links.contains(o); } @Override public Iterator<LinkData> iterator() { return links.iterator(); } @Override public Object[] toArray() { return links.toArray(); } @Override public <T> T[] toArray(T[] a) { return links.toArray(a); } @Override public boolean add(LinkData d) { return links.add(d); } @Override public boolean remove(Object o) { return links.remove(o); } @Override public boolean containsAll(Collection<?> c) { return links.containsAll(c); } @Override public boolean addAll(Collection<? extends LinkData> c) { return links.addAll(c); } @Override public boolean addAll(int index, Collection<? extends LinkData> c) { return links.addAll(index, c); } @Override public boolean removeAll(Collection<?> c) { return links.removeAll(c); } @Override public boolean retainAll(Collection<?> c) { return links.retainAll(c); } @Override public void clear() { links.clear(); } @Override public boolean equals(Object o) { return links.equals(o); } @Override public int hashCode() { return links.hashCode(); } @Override public LinkData get(int index) { return links.get(index); } @Override public LinkData set(int index, LinkData element) { return links.set(index, element); } @Override public void add(int index, LinkData element) { links.add(index, element); } @Override public LinkData remove(int index) { return links.remove(index); } @Override public int indexOf(Object o) { return links.indexOf(o); } @Override public int lastIndexOf(Object o) { return links.lastIndexOf(o); } @Override public ListIterator<LinkData> listIterator() { return links.listIterator(); } @Override public ListIterator<LinkData> listIterator(int index) { return links.listIterator(index); } @Override public List<LinkData> subList(int fromIndex, int toIndex) { return links.subList(fromIndex, toIndex); } }