[AETHER-599] Implement FabricPipelineTraceable

Core changes supporting fabric traceable implementation.
Includes minor fixes to the OFDPA traceable unit tests

Change-Id: I2f0d1172022a8fc725df9e96526092c59ddc0e0b
diff --git a/core/api/src/main/java/org/onosproject/net/PipelineTraceableHitChain.java b/core/api/src/main/java/org/onosproject/net/PipelineTraceableHitChain.java
index 4eb26b5..6e5f566 100644
--- a/core/api/src/main/java/org/onosproject/net/PipelineTraceableHitChain.java
+++ b/core/api/src/main/java/org/onosproject/net/PipelineTraceableHitChain.java
@@ -17,7 +17,6 @@
 package org.onosproject.net;
 
 import com.google.common.collect.Lists;
-import org.onosproject.net.flow.TrafficSelector;
 
 import java.util.List;
 import java.util.Objects;
@@ -25,11 +24,11 @@
 /**
  * Class to represent the pipeline hit chain and the result of the pipeline processing.
  */
-public class PipelineTraceableHitChain {
+public final class PipelineTraceableHitChain {
 
     private ConnectPoint outputPort;
     private List<DataPlaneEntity> hitChain;
-    private TrafficSelector egressPacket;
+    private PipelineTraceablePacket egressPacket;
     // By default packets are dropped
     private boolean dropped = true;
 
@@ -42,10 +41,10 @@
      *
      * @param output   the output connect point
      * @param hits     the hits in the pipeline (flows, groups and other abstractions)
-     * @param packet   the selector representing the final packet
+     * @param packet   the traceable packet representing the final packet
      */
     public PipelineTraceableHitChain(ConnectPoint output, List<DataPlaneEntity> hits,
-                                     TrafficSelector packet) {
+                                     PipelineTraceablePacket packet) {
         this.outputPort = output;
         this.hitChain = hits;
         this.egressPacket = packet;
@@ -65,7 +64,7 @@
      *
      * @return the connect point
      */
-    public ConnectPoint getOutputPort() {
+    public ConnectPoint outputPort() {
         return outputPort;
     }
 
@@ -83,7 +82,7 @@
      *
      * @return flows and groups that matched.
      */
-    public List<DataPlaneEntity> getHitChain() {
+    public List<DataPlaneEntity> hitChain() {
         return hitChain;
     }
 
@@ -113,9 +112,9 @@
     /**
      * Returns the egress packet after traversing the pipeline.
      *
-     * @return the selector representing the packet infos
+     * @return the traceable packet representing the packet infos
      */
-    public TrafficSelector getEgressPacket() {
+    public PipelineTraceablePacket egressPacket() {
         return egressPacket;
     }
 
@@ -124,7 +123,7 @@
      *
      * @param egressPacket the egress packet
      */
-    public void setEgressPacket(TrafficSelector egressPacket) {
+    public void setEgressPacket(PipelineTraceablePacket egressPacket) {
         this.egressPacket = egressPacket;
     }
 
@@ -164,7 +163,7 @@
         if (obj instanceof PipelineTraceableHitChain) {
             PipelineTraceableHitChain that = (PipelineTraceableHitChain) obj;
             return Objects.equals(this.outputPort, that.outputPort) &&
-                    Objects.equals(this.hitChain, that.getHitChain()) &&
+                    Objects.equals(this.hitChain, that.hitChain) &&
                     Objects.equals(this.egressPacket, that.egressPacket) &&
                     Objects.equals(this.dropped, that.dropped);
         }