pretty builders

Change-Id: If03b60f97be1eba3803c6fcb328196a4a195c7e8
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java
index 9de68dc..2ce233f 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java
@@ -6,7 +6,12 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import org.onlab.onos.net.PortNumber;
 import org.onlab.onos.net.flow.instructions.Instruction;
+import org.onlab.onos.net.flow.instructions.Instructions;
+import org.onlab.packet.IpPrefix;
+import org.onlab.packet.MacAddress;
+import org.onlab.packet.VlanId;
 import org.slf4j.Logger;
 
 public final class DefaultTrafficTreatment implements TrafficTreatment {
@@ -42,9 +47,10 @@
         // TODO: should be a list of instructions based on modification objects
         List<Instruction> modifications = new LinkedList<>();
 
-
-        @Override
         public Builder add(Instruction instruction) {
+            if (drop) {
+                return this;
+            }
             switch (instruction.type()) {
             case DROP:
                 drop = true;
@@ -67,6 +73,46 @@
         }
 
         @Override
+        public void drop() {
+            add(Instructions.createDrop());
+        }
+
+        @Override
+        public Builder setOutput(PortNumber number) {
+            return add(Instructions.createOutput(number));
+        }
+
+        @Override
+        public Builder setEthSrc(MacAddress addr) {
+            return add(Instructions.modL2Src(addr));
+        }
+
+        @Override
+        public Builder setEthDst(MacAddress addr) {
+            return add(Instructions.modL2Dst(addr));
+        }
+
+        @Override
+        public Builder setVlanId(VlanId id) {
+            return add(Instructions.modVlanId(id));
+        }
+
+        @Override
+        public Builder setVlanPcp(Byte pcp) {
+            return add(Instructions.modVlanPcp(pcp));
+        }
+
+        @Override
+        public Builder setIpSrc(IpPrefix addr) {
+            return add(Instructions.modL3Src(addr));
+        }
+
+        @Override
+        public Builder setIpDst(IpPrefix addr) {
+            return add(Instructions.modL3Dst(addr));
+        }
+
+        @Override
         public TrafficTreatment build() {
 
             //If we are dropping should we just return an emptry list?