Improvements to flows list command.

 * Added -s option which gives more succinct output.
 * Display each flow on one line for easy grepping.
 * Added ability to filter output by table ID.
 * Flows are now sorted by descending priority within a table.
 * Removed the use of toStringHelper in instructions and criterion to produce
   less verbose output.

Change-Id: I1c874c776491386488ea5a4d23627b20f1e5728b
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpHaCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpHaCriterion.java
index 71269dd..4e1731a 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpHaCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpHaCriterion.java
@@ -15,12 +15,11 @@
  */
 package org.onosproject.net.flow.criteria;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
+import org.onlab.packet.MacAddress;
 
 import java.util.Objects;
 
-import org.onlab.packet.MacAddress;
+import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
  * Implementation of arp_eth_src address or arp_eth_dst address criterion.
@@ -59,8 +58,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("mac", mac).toString();
+        return type().toString() + SEPARATOR + mac;
     }
 
     @Override
@@ -80,4 +78,4 @@
         }
         return false;
     }
-}
\ No newline at end of file
+}
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpOpCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpOpCriterion.java
index 8c5398c..c31281d 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpOpCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpOpCriterion.java
@@ -15,8 +15,6 @@
  */
 package org.onosproject.net.flow.criteria;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 import java.util.Objects;
 
 /**
@@ -54,8 +52,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("arpOp", arpOp).toString();
+        return type().toString() + SEPARATOR + arpOp;
     }
 
     @Override
@@ -75,4 +72,4 @@
         }
         return false;
     }
-}
\ No newline at end of file
+}
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpPaCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpPaCriterion.java
index ba5a03d..f14c7e1 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpPaCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpPaCriterion.java
@@ -15,12 +15,10 @@
  */
 package org.onosproject.net.flow.criteria;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
+import org.onlab.packet.Ip4Address;
 
 import java.util.Objects;
 
-import org.onlab.packet.Ip4Address;
-
 /**
  * Implementation of arp spa or tpa address criterion.
  */
@@ -56,8 +54,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("ip", ip).toString();
+        return type().toString() + SEPARATOR + ip;
     }
 
     @Override
@@ -77,4 +74,4 @@
         }
         return false;
     }
-}
\ No newline at end of file
+}
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/Criterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/Criterion.java
index e6b4939..80c202d 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/Criterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/Criterion.java
@@ -21,6 +21,8 @@
  */
 public interface Criterion {
 
+    static final String SEPARATOR = ":";
+
     /**
      * Types of fields to which the selection criterion may apply.
      */
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/EthCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/EthCriterion.java
index 6020974..f4664c9 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/EthCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/EthCriterion.java
@@ -19,8 +19,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of MAC address criterion.
  */
@@ -56,8 +54,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("mac", mac).toString();
+        return type().toString() + SEPARATOR + mac;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/EthTypeCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/EthTypeCriterion.java
index b2666d4..a0f04f0 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/EthTypeCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/EthTypeCriterion.java
@@ -19,8 +19,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of Ethernet type criterion (16 bits unsigned integer).
  */
@@ -64,9 +62,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("ethType", ethType.toString())
-                .toString();
+        return type().toString() + SEPARATOR + ethType;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionCriterion.java
index 0f6cd13..e07c996 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionCriterion.java
@@ -20,8 +20,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Criterion for implementing selector extensions.
  */
@@ -66,10 +64,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("extensionSelector", extensionSelector.toString())
-                .add("deviceId", deviceId)
-                .toString();
+        return type().toString() + SEPARATOR + deviceId + "/" + extensionSelector;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPCriterion.java
index 018afe8..6e51446 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPCriterion.java
@@ -19,8 +19,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of IP address criterion.
  */
@@ -56,8 +54,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("ip", ip).toString();
+        return type().toString() + SEPARATOR + ip;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPDscpCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPDscpCriterion.java
index 8634aa6..f2825cb 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPDscpCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPDscpCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of IP DSCP (Differentiated Services Code Point)
  * criterion (6 bits).
@@ -52,8 +50,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("ipDscp", Long.toHexString(ipDscp)).toString();
+        return type().toString() + SEPARATOR + Long.toHexString(ipDscp);
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPEcnCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPEcnCriterion.java
index 48b3fbf..7132043 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPEcnCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPEcnCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of IP ECN (Explicit Congestion Notification) criterion
  * (2 bits).
@@ -52,8 +50,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("ipEcn", Long.toHexString(ipEcn)).toString();
+        return type().toString() + SEPARATOR + Long.toHexString(ipEcn);
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPProtocolCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPProtocolCriterion.java
index 6879f80..1e71d20 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPProtocolCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPProtocolCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of Internet Protocol Number criterion (8 bits unsigned)
  * integer.
@@ -53,8 +51,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("protocol", proto).toString();
+        return type().toString() + SEPARATOR + proto;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6ExthdrFlagsCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6ExthdrFlagsCriterion.java
index 2463bf6..ee73c52 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6ExthdrFlagsCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6ExthdrFlagsCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of IPv6 Extension Header pseudo-field criterion
  * (16 bits). Those are defined in Criterion.IPv6ExthdrFlags.
@@ -54,8 +52,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("exthdrFlags", Long.toHexString(exthdrFlags)).toString();
+        return type().toString() + SEPARATOR + Long.toHexString(exthdrFlags);
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6FlowLabelCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6FlowLabelCriterion.java
index 6e1021d..149d675 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6FlowLabelCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6FlowLabelCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of IPv6 Flow Label (RFC 6437) criterion (20 bits unsigned
  * integer).
@@ -52,8 +50,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("flowLabel", Long.toHexString(flowLabel)).toString();
+        return type().toString() + SEPARATOR + Long.toHexString(flowLabel);
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDLinkLayerAddressCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDLinkLayerAddressCriterion.java
index 9f310d4..ddc0eee 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDLinkLayerAddressCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDLinkLayerAddressCriterion.java
@@ -19,8 +19,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of IPv6 Neighbor Discovery link-layer address criterion.
  */
@@ -56,8 +54,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("mac", mac).toString();
+        return type().toString() + SEPARATOR + mac;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDTargetAddressCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDTargetAddressCriterion.java
index ffef044..baeb7c1 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDTargetAddressCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDTargetAddressCriterion.java
@@ -19,8 +19,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of IPv6 Neighbor Discovery target address criterion.
  */
@@ -52,8 +50,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("targetAddress", targetAddress).toString();
+        return type().toString() + SEPARATOR + targetAddress;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpCodeCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpCodeCriterion.java
index 516f61b..de44211 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpCodeCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpCodeCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of ICMP code criterion (8 bits unsigned integer).
  */
@@ -51,8 +49,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("icmpCode", icmpCode).toString();
+        return type().toString() + SEPARATOR + icmpCode;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpTypeCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpTypeCriterion.java
index 6325142..c173a68 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpTypeCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpTypeCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of ICMP type criterion (8 bits unsigned integer).
  */
@@ -51,8 +49,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("icmpType", icmpType).toString();
+        return type().toString() + SEPARATOR + icmpType;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6CodeCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6CodeCriterion.java
index a41b6fe..4eaeb6d 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6CodeCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6CodeCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of ICMPv6 code criterion (8 bits unsigned integer).
  */
@@ -51,8 +49,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("icmpv6Code", icmpv6Code).toString();
+        return type().toString() + SEPARATOR + icmpv6Code;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6TypeCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6TypeCriterion.java
index 7410ba1..b4e45ba 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6TypeCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6TypeCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of ICMPv6 type criterion (8 bits unsigned integer).
  */
@@ -51,8 +49,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("icmpv6Type", icmpv6Type).toString();
+        return type().toString() + SEPARATOR + icmpv6Type;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/IndexedLambdaCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/IndexedLambdaCriterion.java
index 17ea2d0..3311544 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/IndexedLambdaCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/IndexedLambdaCriterion.java
@@ -15,7 +15,6 @@
  */
 package org.onosproject.net.flow.criteria;
 
-import com.google.common.base.MoreObjects;
 import org.onosproject.net.IndexedLambda;
 
 import java.util.Objects;
@@ -76,8 +75,6 @@
 
     @Override
     public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("lambda", lambda)
-                .toString();
+        return type().toString() + SEPARATOR + lambda;
     }
 }
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/LambdaCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/LambdaCriterion.java
index 656800b..55af0fe 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/LambdaCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/LambdaCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of lambda (wavelength) criterion (16 bits unsigned
  * integer).
@@ -56,8 +54,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("lambda", lambda).toString();
+        return type().toString() + SEPARATOR + lambda;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/MetadataCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/MetadataCriterion.java
index 8177b48..4d6c2cb 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/MetadataCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/MetadataCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of Metadata criterion.
  */
@@ -50,9 +48,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("metadata", Long.toHexString(metadata))
-                .toString();
+        return type().toString() + SEPARATOR + Long.toHexString(metadata);
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsBosCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsBosCriterion.java
index c8b6690..06adbb3 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsBosCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsBosCriterion.java
@@ -15,7 +15,6 @@
  */
 package org.onosproject.net.flow.criteria;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
 import java.util.Objects;
 
 /**
@@ -39,8 +38,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("bos", mplsBos).toString();
+        return type().toString() + SEPARATOR + mplsBos;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsCriterion.java
index 34d384f..6fb7aec 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsCriterion.java
@@ -19,8 +19,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of MPLS tag criterion (20 bits).
  */
@@ -43,8 +41,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("mpls", mplsLabel).toString();
+        return type().toString() + SEPARATOR + mplsLabel;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsTcCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsTcCriterion.java
index 8ad6235..7fbb6e1 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsTcCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsTcCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of MPLS TC criterion (3 bits).
  */
@@ -51,8 +49,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("tc", Long.toHexString(mplsTc)).toString();
+        return type().toString() + SEPARATOR + Long.toHexString(mplsTc);
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalCriterion.java
index 3a51a6b..d322995 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalCriterion.java
@@ -15,7 +15,6 @@
  */
 package org.onosproject.net.flow.criteria;
 
-import com.google.common.base.MoreObjects;
 import org.onosproject.net.OchSignal;
 
 import java.util.Objects;
@@ -74,8 +73,6 @@
 
     @Override
     public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("lambda", lambda)
-                .toString();
+        return type().toString() + SEPARATOR + lambda;
     }
 }
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalTypeCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalTypeCriterion.java
index cf838bf..9e5aca0 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalTypeCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalTypeCriterion.java
@@ -15,7 +15,6 @@
  */
 package org.onosproject.net.flow.criteria;
 
-import com.google.common.base.MoreObjects;
 import org.onosproject.net.OchSignalType;
 
 import java.util.Objects;
@@ -71,8 +70,6 @@
 
     @Override
     public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("signalType", signalType)
-                .toString();
+        return type().toString() + SEPARATOR + signalType;
     }
 }
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalIdCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalIdCriterion.java
index 2101854..b500497 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalIdCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalIdCriterion.java
@@ -15,12 +15,11 @@
  */
 package org.onosproject.net.flow.criteria;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
+import org.onosproject.net.OduSignalId;
 
 import java.util.Objects;
 
-import org.onosproject.net.OduSignalId;
+import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
  * Implementation of ODU (Optical channel Data Unit) signal ID signal criterion.
@@ -74,9 +73,7 @@
 
     @Override
     public String toString() {
-        return  toStringHelper(this)
-                .add("oduSignalId", oduSignalId)
-                .toString();
+        return  type().toString() + SEPARATOR + oduSignalId;
     }
 
 }
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalTypeCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalTypeCriterion.java
index f485433..2ab391f 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalTypeCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalTypeCriterion.java
@@ -15,12 +15,11 @@
  */
 package org.onosproject.net.flow.criteria;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
+import org.onosproject.net.OduSignalType;
 
 import java.util.Objects;
 
-import org.onosproject.net.OduSignalType;
+import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
  * Implementation of ODU (Optical channel Data Unit) signal Type criterion.
@@ -74,8 +73,6 @@
 
     @Override
     public String toString() {
-        return toStringHelper(this)
-                .add("signalType", signalType)
-                .toString();
+        return type().toString() + SEPARATOR + signalType;
     }
 }
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/PbbIsidCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/PbbIsidCriterion.java
index 979aa6b..856e192 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/PbbIsidCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/PbbIsidCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of PBB I-SID criterion (24 bits unsigned integer).
  */
@@ -51,8 +49,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("pbbIsid", Long.toHexString(pbbIsid)).toString();
+        return type().toString() + SEPARATOR + Long.toHexString(pbbIsid);
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/PortCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/PortCriterion.java
index f07cd50..4221451 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/PortCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/PortCriterion.java
@@ -19,8 +19,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of input port criterion.
  */
@@ -56,8 +54,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("port", port).toString();
+        return type().toString() + SEPARATOR + port;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/SctpPortCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/SctpPortCriterion.java
index 2d4cf15..3062c18 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/SctpPortCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/SctpPortCriterion.java
@@ -19,8 +19,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of SCTP port criterion (16 bits unsigned integer).
  */
@@ -56,8 +54,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("sctpPort", sctpPort).toString();
+        return type().toString() + SEPARATOR + sctpPort;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpFlagsCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpFlagsCriterion.java
index e0b5395..036edd0 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpFlagsCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpFlagsCriterion.java
@@ -17,8 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of TCP flags criterion (12 bits unsigned integer).
  */
@@ -51,8 +49,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("flags", Long.toHexString(flags)).toString();
+        return type().toString() + SEPARATOR + Long.toHexString(flags);
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpPortCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpPortCriterion.java
index e682b23..cadee2b 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpPortCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpPortCriterion.java
@@ -19,8 +19,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of TCP port criterion (16 bits unsigned integer).
  */
@@ -56,8 +54,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("tcpPort", tcpPort).toString();
+        return type().toString() + SEPARATOR + tcpPort;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/TunnelIdCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/TunnelIdCriterion.java
index 3362c73..b591ad0 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/TunnelIdCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/TunnelIdCriterion.java
@@ -16,8 +16,6 @@
 package org.onosproject.net.flow.criteria;
 
 import java.util.Objects;
-
-import static com.google.common.base.MoreObjects.toStringHelper;
 /**
  * Implementation of Tunnel ID criterion.
  */
@@ -49,9 +47,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("tunnelId", Long.toHexString(tunnelId))
-                .toString();
+        return type().toString() + SEPARATOR + Long.toHexString(tunnelId);
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/UdpPortCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/UdpPortCriterion.java
index 8a29f47..67c00db 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/UdpPortCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/UdpPortCriterion.java
@@ -19,8 +19,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Implementation of UDP port criterion (16 bits unsigned integer).
  */
@@ -56,8 +54,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("udpPort", udpPort).toString();
+        return type().toString() + SEPARATOR + udpPort;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanIdCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanIdCriterion.java
index 757e8ce..09516cc 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanIdCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanIdCriterion.java
@@ -19,7 +19,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkArgument;
 
 /**
@@ -69,8 +68,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-                .add("vlanId", vlanId).toString();
+        return type().toString() + SEPARATOR + vlanId;
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanPcpCriterion.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanPcpCriterion.java
index 99607c8..8872527 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanPcpCriterion.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanPcpCriterion.java
@@ -17,7 +17,6 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkArgument;
 
 /**
@@ -68,8 +67,7 @@
 
     @Override
     public String toString() {
-        return toStringHelper(type().toString())
-            .add("priority", Long.toHexString(vlanPcp)).toString();
+        return type().toString() + SEPARATOR + Long.toHexString(vlanPcp);
     }
 
     @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
index 8ed882c8..cb6e200 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
@@ -54,6 +54,8 @@
  */
 public final class Instructions {
 
+    private static final String SEPARATOR = ":";
+
     // Ban construction
     private Instructions() {}
 
@@ -547,7 +549,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString()).toString();
+            return type().toString();
         }
 
         @Override
@@ -581,7 +583,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString()).toString();
+            return type().toString();
         }
 
         @Override
@@ -619,10 +621,10 @@
         public Type type() {
             return Type.OUTPUT;
         }
+
         @Override
         public String toString() {
-            return toStringHelper(type().toString())
-                    .add("port", port).toString();
+            return type().toString() + SEPARATOR + port.toString();
         }
 
         @Override
@@ -665,9 +667,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString())
-                    .addValue("group ID=0x" + Integer.toHexString(groupId.id()))
-                    .toString();
+            return type().toString() + SEPARATOR + Integer.toHexString(groupId.id());
         }
 
         @Override
@@ -770,8 +770,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString())
-                    .add("meter ID", meterId.id()).toString();
+            return type().toString() + SEPARATOR + meterId.id();
         }
 
         @Override
@@ -814,8 +813,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString())
-                    .add("tableId", this.tableId).toString();
+            return type().toString() + SEPARATOR + this.tableId;
         }
 
         @Override
@@ -864,10 +862,9 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString())
-                    .add("metadata", Long.toHexString(this.metadata))
-                    .add("metadata mask", Long.toHexString(this.metadataMask))
-                    .toString();
+            return type().toString() + SEPARATOR +
+                    Long.toHexString(this.metadata) + "/" +
+                    Long.toHexString(this.metadataMask);
         }
 
         @Override
@@ -917,10 +914,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString())
-                    .add("extension", extensionTreatment)
-                    .add("deviceId", deviceId)
-                    .toString();
+            return type().toString() + SEPARATOR + deviceId + "/" + extensionTreatment;
         }
 
         @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L0ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L0ModificationInstruction.java
index 4af3d16..e0088c1 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L0ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L0ModificationInstruction.java
@@ -15,15 +15,14 @@
  */
 package org.onosproject.net.flow.instructions;
 
-import com.google.common.base.MoreObjects;
 import org.onosproject.net.OchSignal;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 import java.util.Objects;
 
 public abstract class L0ModificationInstruction implements Instruction {
 
+    public static final String SEPARATOR = ":";
+
     /**
      * Represents the type of traffic treatment.
      */
@@ -69,8 +68,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("lambda", lambda).toString();
+            return subtype().toString() + SEPARATOR + lambda;
         }
 
         @Override
@@ -131,9 +129,7 @@
 
         @Override
         public String toString() {
-            return MoreObjects.toStringHelper(this)
-                    .add("lambda", lambda)
-                    .toString();
+            return subtype().toString() + SEPARATOR + lambda;
         }
     }
 }
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java
index b72dd7b..9a76520 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java
@@ -17,12 +17,12 @@
 
 import org.onosproject.net.OduSignalId;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 import java.util.Objects;
 
 public abstract class L1ModificationInstruction implements Instruction {
 
+    public static final String SEPARATOR = ":";
+
     /**
      * Represents the type of traffic treatment.
      */
@@ -79,9 +79,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(this)
-                    .add("oduSignalId", oduSignalId)
-                    .toString();
+            return subtype().toString() + SEPARATOR + oduSignalId;
         }
     }
 
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
index 0dbbb451..29b6f99 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
@@ -22,13 +22,13 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Abstraction of a single traffic treatment step.
  */
 public abstract class L2ModificationInstruction implements Instruction {
 
+    private static final String SEPARATOR = ":";
+
     /**
      * Represents the type of traffic treatment.
      */
@@ -94,9 +94,6 @@
         MPLS_BOS
     }
 
-    // TODO: Create factory class 'Instructions' that will have various factory
-    // to create specific instructions.
-
     public abstract L2SubType subtype();
 
     @Override
@@ -129,8 +126,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("mac", mac).toString();
+            return subtype().toString() + SEPARATOR + mac;
         }
 
         @Override
@@ -176,9 +172,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("ethernetType", ethernetType())
-                    .toString();
+            return subtype().toString() + SEPARATOR + ethernetType;
         }
 
         @Override
@@ -224,8 +218,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("id", vlanId).toString();
+            return subtype().toString() + SEPARATOR + vlanId;
         }
 
         @Override
@@ -269,8 +262,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("pcp", Long.toHexString(vlanPcp)).toString();
+            return subtype().toString() + SEPARATOR + Long.toHexString(vlanPcp);
         }
 
         @Override
@@ -308,8 +300,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .toString();
+            return subtype().toString();
         }
 
         @Override
@@ -365,8 +356,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("mpls", mplsLabel).toString();
+            return subtype().toString() + SEPARATOR + mplsLabel;
         }
 
         @Override
@@ -410,8 +400,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString()).add("bos", mplsBos)
-                    .toString();
+            return subtype().toString() + SEPARATOR + mplsBos;
         }
 
         @Override
@@ -448,8 +437,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .toString();
+            return subtype().toString();
         }
 
         @Override
@@ -492,9 +480,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("id", Long.toHexString(tunnelId))
-                    .toString();
+            return subtype().toString() + SEPARATOR + Long.toHexString(tunnelId);
         }
 
         @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java
index 0efe9a7..fec4338 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java
@@ -15,18 +15,18 @@
  */
 package org.onosproject.net.flow.instructions;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-import java.util.Objects;
-
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 
+import java.util.Objects;
+
 /**
  * Abstraction of a single traffic treatment step.
  */
 public abstract class L3ModificationInstruction implements Instruction {
 
+    private static final String SEPARATOR = ":";
+
     /**
      * Represents the type of traffic treatment.
      */
@@ -85,8 +85,6 @@
          * Arp operation modification.
          */
         ARP_OP
-
-        //TODO: remaining types
     }
 
     /**
@@ -125,8 +123,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("ip", ip).toString();
+            return subtype().toString() + SEPARATOR + ip;
         }
 
         @Override
@@ -173,8 +170,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("ip", ip).toString();
+            return subtype().toString() + SEPARATOR + ip;
         }
 
         @Override
@@ -221,8 +217,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("mac", mac).toString();
+            return subtype().toString() + SEPARATOR + mac;
         }
 
         @Override
@@ -269,8 +264,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("op", op).toString();
+            return subtype().toString() + SEPARATOR + op;
         }
 
         @Override
@@ -326,8 +320,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                .add("flowLabel", Long.toHexString(flowLabel)).toString();
+            return subtype().toString() + SEPARATOR + Long.toHexString(flowLabel);
         }
 
         @Override
@@ -367,8 +360,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .toString();
+            return subtype().toString();
         }
 
         @Override