Low level openflow drivers have been promoted to the driver subsystem.

All new device drivers should provide a handshaking behaviour as well
as well as a pipeline behaviour.

Change-Id: I883830b074e5d254a8cc6100e6c4fa0023594a36
diff --git a/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java b/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java
index 9a091f4..2b4cb22 100644
--- a/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java
+++ b/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java
@@ -15,10 +15,7 @@
  */
 package org.onosproject.driver.pipeline;
 
-import com.google.common.util.concurrent.SettableFuture;
-
 import org.onlab.osgi.ServiceDirectory;
-import org.onosproject.core.DefaultGroupId;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.behaviour.Pipeliner;
 import org.onosproject.net.behaviour.PipelinerContext;
@@ -84,27 +81,32 @@
             treatment = flowTreatment.build();
         }
 
-        FlowRule rule = new DefaultFlowRule(deviceId, selector,
-                                            treatment,
-                                            fwd.priority(), fwd.appId(),
-                                            new DefaultGroupId(fwd.id()),
-                                            fwd.timeout(), fwd.permanent());
+        FlowRule.Builder ruleBuilder = DefaultFlowRule.builder()
+                .forDevice(deviceId)
+                .withSelector(selector)
+                .withTreatment(fwd.treatment())
+                .fromApp(fwd.appId())
+                .withPriority(fwd.priority());
+
+        if (fwd.permanent()) {
+            ruleBuilder.makePermanent();
+        } else {
+            ruleBuilder.makeTemporary(fwd.timeout());
+        }
+
 
         switch (fwd.op()) {
 
             case ADD:
-                flowBuilder.add(rule);
+                flowBuilder.add(ruleBuilder.build());
                 break;
             case REMOVE:
-                flowBuilder.remove(rule);
+                flowBuilder.remove(ruleBuilder.build());
                 break;
             default:
                 log.warn("Unknown operation {}", fwd.op());
         }
 
-
-        SettableFuture<Boolean> future = SettableFuture.create();
-
         flowRuleService.apply(flowBuilder.build(new FlowRuleOperationsContext() {
             @Override
             public void onSuccess(FlowRuleOperations ops) {