Move Path to intent package.
It's a bit confusing to have Path object, which is not part of Topology
under topology package.
Moving Path to intent package, since it started as a data structure for Path Intents
Stop inheriting Collection class.
Change-Id: Iaaa07e5f102bb12ad814db0be47bcfac536781e8
diff --git a/src/main/java/net/onrc/onos/core/intent/Path.java b/src/main/java/net/onrc/onos/core/intent/Path.java
new file mode 100644
index 0000000..e819290
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/intent/Path.java
@@ -0,0 +1,164 @@
+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.LinkEvent;
+
+/**
+ * Base class for Path representation.
+ *
+ * @author Toshio Koide (t-koide@onlab.us)
+ */
+public class Path implements List<LinkEvent> {
+
+ private List<LinkEvent> links;
+
+ /**
+ * Default constructor to create an empty path.
+ */
+ public Path() {
+ links = new LinkedList<LinkEvent>();
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ Iterator<LinkEvent> 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<LinkEvent> 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(LinkEvent e) {
+ return links.add(e);
+ }
+
+ @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 LinkEvent> c) {
+ return links.addAll(c);
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends LinkEvent> 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 LinkEvent get(int index) {
+ return links.get(index);
+ }
+
+ @Override
+ public LinkEvent set(int index, LinkEvent element) {
+ return links.set(index, element);
+ }
+
+ @Override
+ public void add(int index, LinkEvent element) {
+ links.add(index, element);
+ }
+
+ @Override
+ public LinkEvent 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<LinkEvent> listIterator() {
+ return links.listIterator();
+ }
+
+ @Override
+ public ListIterator<LinkEvent> listIterator(int index) {
+ return links.listIterator(index);
+ }
+
+ @Override
+ public List<LinkEvent> subList(int fromIndex, int toIndex) {
+ return links.subList(fromIndex, toIndex);
+ }
+}