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/apps/forwarding/Forwarding.java b/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
index 4e0fd47..e9a29c0 100644
--- a/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
+++ b/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
@@ -318,7 +318,7 @@
}
Boolean isflowEntryForThisSwitch = false;
- net.onrc.onos.core.topology.Path path = pathIntent.getPath();
+ net.onrc.onos.core.intent.Path path = pathIntent.getPath();
for (Iterator<LinkEvent> i = path.iterator(); i.hasNext();) {
LinkEvent le = (LinkEvent) i.next();
@@ -419,7 +419,7 @@
// packets in the meantime and probably don't want to send very old packets.
List<PacketToPush> packets = null;
- net.onrc.onos.core.topology.Path graphPath = installedPath.getPath();
+ net.onrc.onos.core.intent.Path graphPath = installedPath.getPath();
short outPort;
if (graphPath.isEmpty()) {
diff --git a/src/main/java/net/onrc/onos/core/datagrid/web/GetNGFlowsSummaryResource.java b/src/main/java/net/onrc/onos/core/datagrid/web/GetNGFlowsSummaryResource.java
index 37a2346..e487f86 100644
--- a/src/main/java/net/onrc/onos/core/datagrid/web/GetNGFlowsSummaryResource.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/web/GetNGFlowsSummaryResource.java
@@ -7,11 +7,11 @@
import net.onrc.onos.core.intent.Intent;
import net.onrc.onos.core.intent.Intent.IntentState;
import net.onrc.onos.core.intent.IntentMap;
+import net.onrc.onos.core.intent.Path;
import net.onrc.onos.core.intent.PathIntent;
import net.onrc.onos.core.intent.ShortestPathIntent;
import net.onrc.onos.core.intent.runtime.IPathCalcRuntimeService;
import net.onrc.onos.core.topology.LinkEvent;
-import net.onrc.onos.core.topology.Path;
import net.onrc.onos.core.util.CallerId;
import net.onrc.onos.core.util.Dpid;
import net.onrc.onos.core.util.FlowEntry;
diff --git a/src/main/java/net/onrc/onos/core/intent/ConstrainedBFSTree.java b/src/main/java/net/onrc/onos/core/intent/ConstrainedBFSTree.java
index 8704988..6cee929 100644
--- a/src/main/java/net/onrc/onos/core/intent/ConstrainedBFSTree.java
+++ b/src/main/java/net/onrc/onos/core/intent/ConstrainedBFSTree.java
@@ -6,7 +6,6 @@
import net.onrc.onos.core.topology.Link;
import net.onrc.onos.core.topology.LinkEvent;
-import net.onrc.onos.core.topology.Path;
import net.onrc.onos.core.topology.Switch;
/**
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);
+ }
+}
diff --git a/src/main/java/net/onrc/onos/core/intent/PathIntent.java b/src/main/java/net/onrc/onos/core/intent/PathIntent.java
index 154a61a..2e1f6a6 100644
--- a/src/main/java/net/onrc/onos/core/intent/PathIntent.java
+++ b/src/main/java/net/onrc/onos/core/intent/PathIntent.java
@@ -1,6 +1,5 @@
package net.onrc.onos.core.intent;
-import net.onrc.onos.core.topology.Path;
/**
* @author Toshio Koide (t-koide@onlab.us)
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java b/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java
index e4966f6..4939f90 100644
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java
@@ -13,11 +13,11 @@
import net.onrc.onos.core.intent.IntentOperation;
import net.onrc.onos.core.intent.IntentOperation.Operator;
import net.onrc.onos.core.intent.IntentOperationList;
+import net.onrc.onos.core.intent.Path;
import net.onrc.onos.core.intent.PathIntent;
import net.onrc.onos.core.intent.PathIntentMap;
import net.onrc.onos.core.intent.ShortestPathIntent;
import net.onrc.onos.core.topology.NetworkGraph;
-import net.onrc.onos.core.topology.Path;
import net.onrc.onos.core.topology.Switch;
import org.slf4j.Logger;
diff --git a/src/main/java/net/onrc/onos/core/topology/Path.java b/src/main/java/net/onrc/onos/core/topology/Path.java
deleted file mode 100644
index a00c425..0000000
--- a/src/main/java/net/onrc/onos/core/topology/Path.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package net.onrc.onos.core.topology;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-
-/**
- * Base class for Path representation.
- *
- * @author Toshio Koide (t-koide@onlab.us)
- */
-public class Path extends LinkedList<LinkEvent> {
- private static final long serialVersionUID = 7127274096495173415L;
-
- @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();
- }
-}
diff --git a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphShortestPathResource.java b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphShortestPathResource.java
index 2fa195b..d513804 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphShortestPathResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphShortestPathResource.java
@@ -5,11 +5,11 @@
import java.util.List;
import net.onrc.onos.core.intent.ConstrainedBFSTree;
+import net.onrc.onos.core.intent.Path;
import net.onrc.onos.core.topology.INetworkGraphService;
import net.onrc.onos.core.topology.Link;
import net.onrc.onos.core.topology.LinkEvent;
import net.onrc.onos.core.topology.NetworkGraph;
-import net.onrc.onos.core.topology.Path;
import net.onrc.onos.core.topology.Switch;
import net.onrc.onos.core.topology.serializers.LinkSerializer;
import net.onrc.onos.core.util.Dpid;
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java b/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
index a1c4728..3d7f4aa 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
@@ -15,6 +15,7 @@
import net.onrc.onos.core.intent.Intent;
import net.onrc.onos.core.intent.IntentOperation;
import net.onrc.onos.core.intent.IntentOperationList;
+import net.onrc.onos.core.intent.Path;
import net.onrc.onos.core.intent.PathIntent;
import net.onrc.onos.core.intent.ShortestPathIntent;
import net.onrc.onos.core.intent.runtime.IntentStateList;
@@ -23,7 +24,6 @@
import net.onrc.onos.core.packetservice.SinglePacketOutNotification;
import net.onrc.onos.core.topology.DeviceEvent;
import net.onrc.onos.core.topology.LinkEvent;
-import net.onrc.onos.core.topology.Path;
import net.onrc.onos.core.topology.PortEvent;
import net.onrc.onos.core.topology.SwitchEvent;
import net.onrc.onos.core.topology.TopologyEvent;
@@ -52,6 +52,7 @@
import net.onrc.onos.core.util.Switch;
// import net.onrc.onos.core.util.SwitchPort;
+
import com.esotericsoftware.kryo.Kryo;
/**