Switch to MD-SAL APIs
[openflowplugin.git] / test-provider / src / main / java / org / opendaylight / openflowplugin / test / OpenflowpluginGroupTestCommandProvider.java
index 00c9e345c5be22538a91d7f95a3652d4e885840c..2c47a55b8aad9e3294cf98ac270202b7bc62d182 100644 (file)
@@ -1,5 +1,5 @@
-/**
- * Copyright IBM Corporation, 2013.  All rights reserved.
+/*
+ * Copyright (c) 2013, 2015 IBM Corporation and others.  All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
@@ -7,33 +7,22 @@
  */
 package org.opendaylight.openflowplugin.test;
 
+import com.google.common.base.Preconditions;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.MoreExecutors;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-
 import org.eclipse.osgi.framework.console.CommandInterpreter;
 import org.eclipse.osgi.framework.console.CommandProvider;
-import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
-import org.opendaylight.controller.md.sal.common.api.data.DataModification;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.controller.sal.binding.api.data.DataBrokerService;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.VlanCfi;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.ControllerActionCaseBuilder;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DropActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.FloodActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.FloodAllActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.HwPathActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.LoopbackActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
@@ -41,34 +30,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlDstActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlSrcActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlTypeActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNextHopActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTosActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpDstActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpSrcActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanCfiActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanIdActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanPcpActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SwPathActionCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.controller.action._case.ControllerActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.drop.action._case.DropAction;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.drop.action._case.DropActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.flood.action._case.FloodActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.flood.all.action._case.FloodAllActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.hw.path.action._case.HwPathActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.loopback.action._case.LoopbackActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
@@ -76,32 +45,17 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.dst.action._case.SetDlDstActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.src.action._case.SetDlSrcActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.type.action._case.SetDlTypeActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.next.hop.action._case.SetNextHopActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.tos.action._case.SetNwTosActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.dst.action._case.SetTpDstActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.src.action._case.SetTpSrcActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.cfi.action._case.SetVlanCfiActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.id.action._case.SetVlanIdActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.pcp.action._case.SetVlanPcpActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.sw.path.action._case.SwPathActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Groups;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
@@ -110,551 +64,509 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanPcp;
-import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.osgi.framework.BundleContext;
 
+@SuppressWarnings("checkstyle:MethodName")
 public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
+    private static final String ORIGINAL_GROUP_NAME = "Foo";
 
-    private DataBrokerService dataBrokerService;
-    private ProviderContext pc;
+    private final DataBroker dataBroker;
     private final BundleContext ctx;
     private Group testGroup;
-    private Group testGroup2;
     private Node testNode;
-    private final String originalGroupName = "Foo";
-    private final String updatedGroupName = "Bar";
 
-    public OpenflowpluginGroupTestCommandProvider(BundleContext ctx) {
+    public OpenflowpluginGroupTestCommandProvider(DataBroker dataBroker, BundleContext ctx) {
+        this.dataBroker = dataBroker;
         this.ctx = ctx;
     }
 
-    public void onSessionInitiated(ProviderContext session) {
-        pc = session;
-        dataBrokerService = session.getSALService(DataBrokerService.class);
+    public void init() {
         ctx.registerService(CommandProvider.class.getName(), this, null);
         createTestNode();
     }
 
     private void createUserNode(String nodeRef) {
-        NodeRef nodeOne = createNodeRef(nodeRef);
         NodeBuilder builder = new NodeBuilder();
         builder.setId(new NodeId(nodeRef));
-        builder.setKey(new NodeKey(builder.getId()));
+        builder.withKey(new NodeKey(builder.getId()));
         testNode = builder.build();
     }
 
     private void createTestNode() {
-        NodeRef nodeOne = createNodeRef(OpenflowpluginTestActivator.NODE_ID);
         NodeBuilder builder = new NodeBuilder();
         builder.setId(new NodeId(OpenflowpluginTestActivator.NODE_ID));
-        builder.setKey(new NodeKey(builder.getId()));
+        builder.withKey(new NodeKey(builder.getId()));
         testNode = builder.build();
     }
 
     private InstanceIdentifier<Node> nodeToInstanceId(Node node) {
-        return InstanceIdentifier.builder(Nodes.class).child(Node.class, node.getKey()).toInstance();
+        return InstanceIdentifier.create(Nodes.class).child(Node.class, node.key());
     }
 
-    private GroupBuilder createTestGroup(String actiontype,String type,String mod) {
+    private GroupBuilder createTestGroup(String actionType, String groupType, String groupMod) {
         // Sample data , committing to DataStore
-       
-       String GroupType = type;
-       String ActionType = actiontype;
-       String Groupmod = mod;
-        DataModification modification = dataBrokerService.beginTransaction();
 
-        long id = 1;
-        GroupKey key = new GroupKey(new GroupId(id));
-        GroupBuilder group = new GroupBuilder();        
-        BucketBuilder bucket = new BucketBuilder();        
+        GroupBuilder group = new GroupBuilder();
+        BucketBuilder bucket = new BucketBuilder();
         bucket.setBucketId(new BucketId((long) 12));
-        bucket.setKey(new BucketKey(new BucketId((long) 12)));  
-        
-        if (GroupType == null) {
-            GroupType = "g1";
+        bucket.withKey(new BucketKey(new BucketId((long) 12)));
+
+        if (groupType == null) {
+            groupType = "g1";
         }
-        if(ActionType==null){
-               ActionType="a1";
+        if (actionType == null) {
+            actionType = "a1";
         }
 
-        switch (GroupType) {
-        case "g1":
-                group.setGroupType(GroupTypes.GroupSelect); 
-            break;
-        case "g2":
-           group.setGroupType(GroupTypes.GroupAll); 
-          break;
-        case "g3":
-            group.setGroupType(GroupTypes.GroupIndirect); 
-           break;
-        case "g4":
-            group.setGroupType(GroupTypes.GroupFf); 
-           break;
+        switch (groupType) {
+            case "g1":
+                group.setGroupType(GroupTypes.GroupSelect);
+                break;
+            case "g2":
+                group.setGroupType(GroupTypes.GroupAll);
+                break;
+            case "g3":
+                group.setGroupType(GroupTypes.GroupIndirect);
+                break;
+            case "g4":
+                group.setGroupType(GroupTypes.GroupFf);
+                break;
+            default:
+                break;
         }
-        
-        switch (ActionType){
-        case "a1":
-                bucket.setAction(createPopVlanAction()); 
-               break;
-        case "a2":
-               bucket.setAction(createPushVlanAction()); 
-               break;
-        case "a3":
-               bucket.setAction(createPushMplsAction());  
-               break;
-        case "a4":
-               bucket.setAction(createPopMplsAction());  
-               break;  
-        case "a5":
-               bucket.setAction(createPopPbbAction());  
-               break;  
-        case "a6":
-               bucket.setAction(createPushPbbAction());  
-               break;   
-        case "a7":
-               bucket.setAction(createPushPbbAction());  
-               break;         
-        case "a8":
-               bucket.setAction(createCopyTtlInAction());  
-               break;  
-        case "a9":
-               bucket.setAction(createCopyTtlOutAction());  
-               break;  
-        case "a10":
-               bucket.setAction(createDecMplsTtlAction());  
-               break;  
-        case "a11":
-               bucket.setAction(createDecNwTtlAction());  
-               break;         
-        case "a12":
-               bucket.setAction(createSetQueueAction());   
-               break;        
-        case "a13":
-               bucket.setAction(createSetNwTtlAction());   
-               break;         
-        case "a14":
-               bucket.setAction(createGroupAction());  
-               break;        
-        case "a15":
-               bucket.setAction(createSetMplsTtlAction());  
-               break;
-        case "a16":
-               bucket.setAction(createFloodOutputAction());
-               break;
-        case "a17":
-               bucket.setAction(createAllOutputAction());
-               break;
-        case "a18":
-               bucket.setAction(createNormalOutputAction());
-               break;
-        case "a19":
-               bucket.setAction(creatTableOutputAction());
-               break;
-        case "a20":
-               bucket.setAction(createControllerAction());
-               break;  
-        case "a21":
-               bucket.setAction(createLocalOutputAction());
-               break;  
-        case "a22":
-               bucket.setAction(createAnyOutputAction());
-               break;  
-        case "a23":
-               bucket.setAction(createInportOutputAction());
-               break; 
-        case "a24" :           
-               bucket.setAction(null);
-               break;
-        case "a25" :           
-               bucket.setAction(createNonAppyOutputAction());
-               break;
-        case "a26" :           
-                       bucket.setAction(createNonAppyPushMplsAction());
-                       break;
-        case "a27" :           
-                       bucket.setAction(createNonAppyPushPbbAction());
-                       break;
-        case "a28" :           
-                       bucket.setAction(createNonAppyPushVlanAction());
-                       break;
-               
+
+        switch (actionType) {
+            case "a1":
+                bucket.setAction(createPopVlanAction());
+                break;
+            case "a2":
+                bucket.setAction(createPushVlanAction());
+                break;
+            case "a3":
+                bucket.setAction(createPushMplsAction());
+                break;
+            case "a4":
+                bucket.setAction(createPopMplsAction());
+                break;
+            case "a5":
+                bucket.setAction(createPopPbbAction());
+                break;
+            case "a6":
+            case "a7":
+                bucket.setAction(createPushPbbAction());
+                break;
+            case "a8":
+                bucket.setAction(createCopyTtlInAction());
+                break;
+            case "a9":
+                bucket.setAction(createCopyTtlOutAction());
+                break;
+            case "a10":
+                bucket.setAction(createDecMplsTtlAction());
+                break;
+            case "a11":
+                bucket.setAction(createDecNwTtlAction());
+                break;
+            case "a12":
+                bucket.setAction(createSetQueueAction());
+                break;
+            case "a13":
+                bucket.setAction(createSetNwTtlAction());
+                break;
+            case "a14":
+                bucket.setAction(createGroupAction());
+                break;
+            case "a15":
+                bucket.setAction(createSetMplsTtlAction());
+                break;
+            case "a16":
+                bucket.setAction(createFloodOutputAction());
+                break;
+            case "a17":
+                bucket.setAction(createAllOutputAction());
+                break;
+            case "a18":
+                bucket.setAction(createNormalOutputAction());
+                break;
+            case "a19":
+                bucket.setAction(creatTableOutputAction());
+                break;
+            case "a20":
+                bucket.setAction(createControllerAction());
+                break;
+            case "a21":
+                bucket.setAction(createLocalOutputAction());
+                break;
+            case "a22":
+                bucket.setAction(createAnyOutputAction());
+                break;
+            case "a23":
+                bucket.setAction(createInportOutputAction());
+                break;
+            case "a24":
+                bucket.setAction(null);
+                break;
+            case "a25":
+                bucket.setAction(createNonAppyOutputAction());
+                break;
+            case "a26":
+                bucket.setAction(createNonAppyPushMplsAction());
+                break;
+            case "a27":
+                bucket.setAction(createNonAppyPushPbbAction());
+                break;
+            case "a28":
+                bucket.setAction(createNonAppyPushVlanAction());
+                break;
+            default:
+                break;
         }
-           
-        if(Groupmod=="add"){           
-        bucket.setWatchGroup((long) 14);
-        bucket.setWatchPort((long) 1234);
-        bucket.setWeight(50);
-        }else {
-                bucket.setWatchGroup((long) 13);
-             bucket.setWatchPort((long) 134);
-             bucket.setWeight(30);     
+
+        if ("add".equals(groupMod)) {
+            bucket.setWatchGroup((long) 14);
+            bucket.setWatchPort((long) 1234);
+            bucket.setWeight(50);
+        } else {
+            bucket.setWatchGroup((long) 13);
+            bucket.setWatchPort((long) 134);
+            bucket.setWeight(30);
         }
-        group.setKey(key);
-       // group.setInstall(false);
-        group.setGroupId(new GroupId(id));       
-        group.setGroupName(originalGroupName);
+
+        long id = 1;
+        GroupKey key = new GroupKey(new GroupId(id));
+        group.withKey(key);
+        // group.setInstall(false);
+        group.setGroupId(new GroupId(id));
+        group.setGroupName(ORIGINAL_GROUP_NAME);
         group.setBarrier(false);
         BucketsBuilder value = new BucketsBuilder();
-        List<Bucket> value1 = new ArrayList<Bucket>();
+        List<Bucket> value1 = new ArrayList<>();
         value1.add(bucket.build());
         value.setBucket(value1);
         group.setBuckets(value.build());
         testGroup = group.build();
         return group;
     }
-    
-  
 
-       private List<Action> createPopVlanAction(){     
-       PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
+
+    private List<Action> createPopVlanAction() {
+        PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
         ActionBuilder action = new ActionBuilder();
         action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
-        action.setKey(new ActionKey(0));
-        List<Action> actions = new ArrayList<Action>();
+        action.withKey(new ActionKey(0));
+        List<Action> actions = new ArrayList<>();
         actions.add(action.build());
-        return actions;        
+        return actions;
     }
-    
-    private List<Action> createPushVlanAction(){       
-       PushVlanActionBuilder vlan = new PushVlanActionBuilder();
-       vlan.setEthernetType(new Integer(0x8100));
+
+    private List<Action> createPushVlanAction() {
+        PushVlanActionBuilder vlan = new PushVlanActionBuilder();
+        vlan.setEthernetType(0x8100);
         ActionBuilder action = new ActionBuilder();
         action.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
-        List<Action> actions = new ArrayList<Action>();
+        List<Action> actions = new ArrayList<>();
         actions.add(action.build());
-        return actions;        
-    }
-    private List<Action> createPushMplsAction(){ 
-       PushMplsActionBuilder push = new PushMplsActionBuilder(); 
-       push.setEthernetType(new Integer(0x8847));
-           ActionBuilder action = new ActionBuilder();
-           action.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
-        List<Action> actions = new ArrayList<Action>();
+        return actions;
+    }
+
+    private List<Action> createPushMplsAction() {
+        PushMplsActionBuilder push = new PushMplsActionBuilder();
+        push.setEthernetType(0x8847);
+        ActionBuilder action = new ActionBuilder();
+        action.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
+        List<Action> actions = new ArrayList<>();
         actions.add(action.build());
-        return actions;        
-    }
-    private List<Action> createPopMplsAction(){ 
-       PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder(); 
-       popMplsActionBuilder.setEthernetType(0XB);
-           ActionBuilder action = new ActionBuilder();
-           action.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
-        List<Action> actions = new ArrayList<Action>();
+        return actions;
+    }
+
+    private List<Action> createPopMplsAction() {
+        PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
+        popMplsActionBuilder.setEthernetType(0XB);
+        ActionBuilder action = new ActionBuilder();
+        action.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
+        List<Action> actions = new ArrayList<>();
         actions.add(action.build());
-        return actions;        
-    }
-           
-    private List<Action> createPopPbbAction()
-       PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();       
-           ActionBuilder action = new ActionBuilder();
-           action.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
-        List<Action> actions = new ArrayList<Action>();
+        return actions;
+    }
+
+    private List<Action> createPopPbbAction() {
+        PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
+        ActionBuilder action = new ActionBuilder();
+        action.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
+        List<Action> actions = new ArrayList<>();
         actions.add(action.build());
-        return actions;        
-    }
-    private List<Action> createPushPbbAction(){ 
-       PushPbbActionBuilder pbb = new PushPbbActionBuilder();
-       pbb.setEthernetType(new Integer(0x88E7));
-           ActionBuilder action = new ActionBuilder();
-           action.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
-        List<Action> actions = new ArrayList<Action>();
+        return actions;
+    }
+
+    private List<Action> createPushPbbAction() {
+        PushPbbActionBuilder pbb = new PushPbbActionBuilder();
+        pbb.setEthernetType(0x88E7);
+        ActionBuilder action = new ActionBuilder();
+        action.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
+        List<Action> actions = new ArrayList<>();
         actions.add(action.build());
-        return actions;        
+        return actions;
     }
-    private List<Action> createSetMplsTtlAction(){ 
-       SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
+
+    private List<Action> createSetMplsTtlAction() {
+        SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
         setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
-           ActionBuilder action = new ActionBuilder();
-           action.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionBuilder.build()).build());
-        List<Action> actions = new ArrayList<Action>();
+        ActionBuilder action = new ActionBuilder();
+        action.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(
+                setMplsTtlActionBuilder.build()).build());
+        List<Action> actions = new ArrayList<>();
         actions.add(action.build());
-        return actions;        
+        return actions;
     }
-    private List<Action> createSetNwTtlAction(){ 
-       SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
+
+    private List<Action> createSetNwTtlAction() {
+        SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
         setNwTtlActionBuilder.setNwTtl((short) 1);
-           ActionBuilder action = new ActionBuilder();
-           action.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());          
-        List<Action> actions = new ArrayList<Action>();
+        ActionBuilder action = new ActionBuilder();
+        action.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
+        List<Action> actions = new ArrayList<>();
         actions.add(action.build());
-        return actions;        
+        return actions;
     }
-    private List<Action> createSetQueueAction(){ 
-       SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
+
+    private List<Action> createSetQueueAction() {
+        SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
         setQueueActionBuilder.setQueueId(1L);
-           ActionBuilder action = new ActionBuilder();
-           action.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
-        action.setKey(new ActionKey(0));
-        List<Action> actions = new ArrayList<Action>();
+        ActionBuilder action = new ActionBuilder();
+        action.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
+        action.withKey(new ActionKey(0));
+        List<Action> actions = new ArrayList<>();
         actions.add(action.build());
-        return actions;        
-    }
-    
-  
-    private List<Action> createCopyTtlInAction(){ 
-        CopyTtlInBuilder ttlin = new CopyTtlInBuilder();          
-           ActionBuilder action = new ActionBuilder();
-           action.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
-       List<Action> actions = new ArrayList<Action>();
-       actions.add(action.build());
-       return actions;         
-    }
-   private List<Action> createCopyTtlOutAction(){ 
-        CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
-           ActionBuilder action = new ActionBuilder();
-           action.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
-       List<Action> actions = new ArrayList<Action>();
-       actions.add(action.build());
-       return actions;         
-    }
-   private List<Action> createDecMplsTtlAction(){ 
-       DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
-           ActionBuilder action = new ActionBuilder();
-           action.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
-       List<Action> actions = new ArrayList<Action>();
-       actions.add(action.build());
-       return actions;         
-    }
-   private List<Action> createDecNwTtlAction(){ 
-         DecNwTtlBuilder nwttl = new DecNwTtlBuilder();
-           ActionBuilder action = new ActionBuilder();
-           action.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build());
-       List<Action> actions = new ArrayList<Action>();       
-      
-       ActionBuilder ab = new ActionBuilder();     
-       OutputActionBuilder output = new OutputActionBuilder();
-     //  output.setMaxLength(30);
-       Uri value = new Uri("2");
-       output.setOutputNodeConnector(value);
-       ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
-       ab.setKey(new ActionKey(0));
-       ab.setOrder(0);
-       actions.add(ab.build());
-       actions.add(action.build());
-       return actions;         
-    } 
-   
-   private List<Action> createFloodOutputAction(){
-     
-       List<Action> actions = new ArrayList<Action>();
-       ActionBuilder ab = new ActionBuilder();
-       OutputActionBuilder output = new OutputActionBuilder();
-       output.setMaxLength(30);
-       Uri value = new Uri(OutputPortValues.FLOOD.toString());
-       output.setOutputNodeConnector(value);
-       ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
-       ab.setKey(new ActionKey(0));
-       actions.add(ab.build());      
-       return actions;
-    }
-   
-   private List<Action> createAllOutputAction(){
-            
-       List<Action> actions = new ArrayList<Action>();
-       ActionBuilder ab = new ActionBuilder();
-       OutputActionBuilder output = new OutputActionBuilder();
-       output.setMaxLength(30);
-       Uri value = new Uri(OutputPortValues.ALL.toString());
-       output.setOutputNodeConnector(value);
-       ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
-       ab.setKey(new ActionKey(0));
-       actions.add(ab.build());      
-       return actions;
-    }
-   
-   private List<Action> createAnyOutputAction(){
-            
-       List<Action> actions = new ArrayList<Action>();
-       ActionBuilder ab = new ActionBuilder();
-       OutputActionBuilder output = new OutputActionBuilder();
-       output.setMaxLength(30);
-       Uri value = new Uri(OutputPortValues.ANY.toString());
-       output.setOutputNodeConnector(value);
-       ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
-       ab.setKey(new ActionKey(0));
-       actions.add(ab.build());      
-       return actions;
-    }
-   private List<Action> createNormalOutputAction(){
-            
-       List<Action> actions = new ArrayList<Action>();
-       ActionBuilder ab = new ActionBuilder();
-       OutputActionBuilder output = new OutputActionBuilder();
-       output.setMaxLength(30);
-       Uri value = new Uri(OutputPortValues.NORMAL.toString());
-       output.setOutputNodeConnector(value);
-       ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
-       ab.setKey(new ActionKey(0));
-       actions.add(ab.build());      
-       return actions;
-    }
-   private List<Action> createInportOutputAction(){
-            
-       List<Action> actions = new ArrayList<Action>();
-       ActionBuilder ab = new ActionBuilder();
-       OutputActionBuilder output = new OutputActionBuilder();
-       output.setMaxLength(30);
-       Uri value = new Uri(OutputPortValues.INPORT.toString());
-       output.setOutputNodeConnector(value);
-       ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
-       ab.setKey(new ActionKey(0));
-       actions.add(ab.build());      
-       return actions;
-    }
-   private List<Action> creatTableOutputAction(){
-            
-       List<Action> actions = new ArrayList<Action>();
-       ActionBuilder ab = new ActionBuilder();
-       OutputActionBuilder output = new OutputActionBuilder();
-       output.setMaxLength(30);
-       Uri value = new Uri(OutputPortValues.TABLE.toString());
-       output.setOutputNodeConnector(value);
-       ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
-       ab.setKey(new ActionKey(0));
-       actions.add(ab.build());      
-       return actions;
-    }
-   
-   private List<Action> createControllerAction(){
-            
-       List<Action> actions = new ArrayList<Action>();
-       ActionBuilder ab = new ActionBuilder();
-       OutputActionBuilder output = new OutputActionBuilder();
-       output.setMaxLength(30);
-       Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
-       output.setOutputNodeConnector(value);
-       ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
-       ab.setKey(new ActionKey(0));
-       actions.add(ab.build());      
-       return actions;
-    }
-   
-   private List<Action> createLocalOutputAction(){
-            
-       List<Action> actions = new ArrayList<Action>();
-       ActionBuilder ab = new ActionBuilder();
-       OutputActionBuilder output = new OutputActionBuilder();
-       output.setMaxLength(30);
-       Uri value = new Uri(OutputPortValues.LOCAL.toString());
-       output.setOutputNodeConnector(value);
-       ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
-       ab.setKey(new ActionKey(0));
-       actions.add(ab.build());      
-       return actions;
-    }
-   private List<Action> createGroupAction(){ 
-          
-          GroupActionBuilder groupActionB = new GroupActionBuilder();
-       groupActionB.setGroupId(1L);
-       groupActionB.setGroup("0");   
-          ActionBuilder action = new ActionBuilder();
-          action.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build());
-          action.setKey(new ActionKey(0));
-       List<Action> actions = new ArrayList<Action>();
-       actions.add(action.build());
-       return actions;         
-    }
-
- private static List<Action> createNonAppyOutputAction(){
-
-        List<Action> actionList = new ArrayList<Action>();
+        return actions;
+    }
+
+
+    private List<Action> createCopyTtlInAction() {
+        CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
+        ActionBuilder action = new ActionBuilder();
+        action.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
+        List<Action> actions = new ArrayList<>();
+        actions.add(action.build());
+        return actions;
+    }
+
+    private List<Action> createCopyTtlOutAction() {
+        CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
+        ActionBuilder action = new ActionBuilder();
+        action.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
+        List<Action> actions = new ArrayList<>();
+        actions.add(action.build());
+        return actions;
+    }
+
+    private List<Action> createDecMplsTtlAction() {
+        DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
+        ActionBuilder action = new ActionBuilder();
+        action.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
+        List<Action> actions = new ArrayList<>();
+        actions.add(action.build());
+        return actions;
+    }
+
+    private List<Action> createDecNwTtlAction() {
+        DecNwTtlBuilder nwttl = new DecNwTtlBuilder();
+        ActionBuilder action = new ActionBuilder();
+        action.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build());
+
+        ActionBuilder ab = new ActionBuilder();
+        OutputActionBuilder output = new OutputActionBuilder();
+        //  output.setMaxLength(30);
+        Uri value = new Uri("2");
+        output.setOutputNodeConnector(value);
+        ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
+        ab.withKey(new ActionKey(0));
+        ab.setOrder(0);
+
+        List<Action> actions = new ArrayList<>();
+        actions.add(ab.build());
+        actions.add(action.build());
+        return actions;
+    }
+
+    private List<Action> createFloodOutputAction() {
+        ActionBuilder ab = new ActionBuilder();
+        OutputActionBuilder output = new OutputActionBuilder();
+        output.setMaxLength(30);
+        Uri value = new Uri(OutputPortValues.FLOOD.toString());
+        output.setOutputNodeConnector(value);
+        ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
+        ab.withKey(new ActionKey(0));
+
+        List<Action> actions = new ArrayList<>();
+        actions.add(ab.build());
+        return actions;
+    }
+
+    private List<Action> createAllOutputAction() {
+        ActionBuilder ab = new ActionBuilder();
+        OutputActionBuilder output = new OutputActionBuilder();
+        output.setMaxLength(30);
+        Uri value = new Uri(OutputPortValues.ALL.toString());
+        output.setOutputNodeConnector(value);
+        ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
+        ab.withKey(new ActionKey(0));
+
+        List<Action> actions = new ArrayList<>();
+        actions.add(ab.build());
+        return actions;
+    }
+
+    private List<Action> createAnyOutputAction() {
+        ActionBuilder ab = new ActionBuilder();
+        OutputActionBuilder output = new OutputActionBuilder();
+        output.setMaxLength(30);
+        Uri value = new Uri(OutputPortValues.ANY.toString());
+        output.setOutputNodeConnector(value);
+        ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
+        ab.withKey(new ActionKey(0));
+
+        List<Action> actions = new ArrayList<>();
+        actions.add(ab.build());
+        return actions;
+    }
+
+    private List<Action> createNormalOutputAction() {
+        ActionBuilder ab = new ActionBuilder();
+        OutputActionBuilder output = new OutputActionBuilder();
+        output.setMaxLength(30);
+        Uri value = new Uri(OutputPortValues.NORMAL.toString());
+        output.setOutputNodeConnector(value);
+        ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
+        ab.withKey(new ActionKey(0));
+
+        List<Action> actions = new ArrayList<>();
+        actions.add(ab.build());
+        return actions;
+    }
+
+    private List<Action> createInportOutputAction() {
+        ActionBuilder ab = new ActionBuilder();
+        OutputActionBuilder output = new OutputActionBuilder();
+        output.setMaxLength(30);
+        Uri value = new Uri(OutputPortValues.INPORT.toString());
+        output.setOutputNodeConnector(value);
+        ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
+        ab.withKey(new ActionKey(0));
+
+        List<Action> actions = new ArrayList<>();
+        actions.add(ab.build());
+        return actions;
+    }
+
+    private List<Action> creatTableOutputAction() {
+        ActionBuilder ab = new ActionBuilder();
+        OutputActionBuilder output = new OutputActionBuilder();
+        output.setMaxLength(30);
+        Uri value = new Uri(OutputPortValues.TABLE.toString());
+        output.setOutputNodeConnector(value);
+        ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
+        ab.withKey(new ActionKey(0));
+
+        List<Action> actions = new ArrayList<>();
+        actions.add(ab.build());
+        return actions;
+    }
+
+    private List<Action> createControllerAction() {
+        ActionBuilder ab = new ActionBuilder();
+        OutputActionBuilder output = new OutputActionBuilder();
+        output.setMaxLength(30);
+        Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
+        output.setOutputNodeConnector(value);
+        ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
+        ab.withKey(new ActionKey(0));
+
+        List<Action> actions = new ArrayList<>();
+        actions.add(ab.build());
+        return actions;
+    }
+
+    private List<Action> createLocalOutputAction() {
+        ActionBuilder ab = new ActionBuilder();
+        OutputActionBuilder output = new OutputActionBuilder();
+        output.setMaxLength(30);
+        Uri value = new Uri(OutputPortValues.LOCAL.toString());
+        output.setOutputNodeConnector(value);
+        ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
+        ab.withKey(new ActionKey(0));
+
+        List<Action> actions = new ArrayList<>();
+        actions.add(ab.build());
+        return actions;
+    }
+
+    private List<Action> createGroupAction() {
+        GroupActionBuilder groupActionB = new GroupActionBuilder();
+        groupActionB.setGroupId(1L);
+        groupActionB.setGroup("0");
+        ActionBuilder action = new ActionBuilder();
+        action.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build());
+        action.withKey(new ActionKey(0));
+        List<Action> actions = new ArrayList<>();
+        actions.add(action.build());
+        return actions;
+    }
+
+    private static List<Action> createNonAppyOutputAction() {
         ActionBuilder ab = new ActionBuilder();
         OutputActionBuilder output = new OutputActionBuilder();
         Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
         output.setOutputNodeConnector(value);
         //output.setMaxLength(null);
-        output.setMaxLength(66000);        
+        output.setMaxLength(66000);
         ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
+
+        List<Action> actionList = new ArrayList<>();
         actionList.add(ab.build());
         return actionList;
     }
-    
-    private static List<Action> createNonAppyPushMplsAction(){
 
-        List<Action> actionList = new ArrayList<Action>();
+    private static List<Action> createNonAppyPushMplsAction() {
+
+        List<Action> actionList = new ArrayList<>();
         ActionBuilder ab = new ActionBuilder();
         PushMplsActionBuilder push = new PushMplsActionBuilder();
-        push.setEthernetType(new Integer(0x8849));
+        push.setEthernetType(0x8849);
         ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
         actionList.add(ab.build());
         return actionList;
-        
     }
-    private static List<Action> createNonAppyPushPbbAction(){
 
-        List<Action> actionList = new ArrayList<Action>();
+    private static List<Action> createNonAppyPushPbbAction() {
+
+        List<Action> actionList = new ArrayList<>();
         ActionBuilder ab = new ActionBuilder();
         PushPbbActionBuilder pbb = new PushPbbActionBuilder();
-        pbb.setEthernetType(new Integer(0x88E8));
+        pbb.setEthernetType(0x88E8);
         ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
-        actionList.add(ab.build()); 
+        actionList.add(ab.build());
         return actionList;
-        
+
     }
 
-    
-    private static List<Action> createNonAppyPushVlanAction(){
 
-        List<Action> actionList = new ArrayList<Action>();
+    private static List<Action> createNonAppyPushVlanAction() {
+
+        List<Action> actionList = new ArrayList<>();
         ActionBuilder ab = new ActionBuilder();
         PushVlanActionBuilder vlan = new PushVlanActionBuilder();
-        vlan.setEthernetType(new Integer(0x8101));
+        vlan.setEthernetType(0x8101);
         ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
         actionList.add(ab.build());
         return actionList;
-        
     }
-   
 
-    private GroupBuilder createTestRemoveGroup(){
-        // Sample data , committing to DataStore
-        DataModification modification = dataBrokerService.beginTransaction();
-
-        long id = 123;
-        GroupKey key = new GroupKey(new GroupId(id));
-        GroupBuilder group = new GroupBuilder();
-     /*   BucketBuilder bucket = new BucketBuilder();
-        bucket.setBucketId(new BucketId((long) 12));
-        bucket.setKey(new BucketKey(new BucketId((long) 12))); */
-        group.setKey(key);
-    //    group.setInstall(false);      
-
-        group.setGroupId(new GroupId(id));
-      /*  PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
-        ActionBuilder action = new ActionBuilder();
-        action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
-        List<Action> actions = new ArrayList<Action>();
-        actions.add(action.build()); */
-     /*   bucket.setAction(actions);
-        bucket.setWatchGroup((long) 14);
-        bucket.setWatchPort((long) 1234);
-        bucket.setWeight(15); */
-     //   group.setGroupType(GroupTypes.GroupSelect);
-     //   group.setGroupName(originalGroupName);
-     //   group.setBarrier(false);
-    //    BucketsBuilder value = new BucketsBuilder();
-    //    List<Bucket> value1 = new ArrayList<Bucket>();
-    //    value1.add(bucket.build());
-     //   value.setBucket(value1);
-      //  group.setBuckets(value.build());
-        testGroup2 = group.build();
-        return group;
-    }
-    
-   
-    
-    public void _removeGroup(CommandInterpreter ci){
+    public void _removeGroup(final CommandInterpreter ci) {
         String nref = ci.nextArgument();
 
         if (nref == null) {
@@ -664,30 +576,22 @@ public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
             ci.println("User node added" + nref);
             createUserNode(nref);
         }
-        GroupBuilder gbuilder = createTestGroup(ci.nextArgument(),ci.nextArgument(),"add");
-        DataModification<InstanceIdentifier<?>, DataObject> modification = dataBrokerService.beginTransaction();
-        InstanceIdentifier<Group> path1 = InstanceIdentifier.builder(Nodes.class).child(Node.class, testNode.getKey())
-                .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(gbuilder.getGroupId())).build();
-        // DataObject cls = (DataObject)
-        // modification.readConfigurationData(path1);
-        // modification.removeOperationalData(nodeToInstanceId(testNode));
-        modification.removeOperationalData(path1);
-        // modification.removeConfigurationData(nodeToInstanceId(testNode));
-        modification.removeConfigurationData(path1);
-        Future<RpcResult<TransactionStatus>> commitFuture = modification.commit();
-        try {
-            RpcResult<TransactionStatus> result = commitFuture.get();
-            TransactionStatus status = result.getResult();
-            ci.println("Status of Group Data Loaded Transaction: " + status);
-            ci.println("Status of Group Data Loaded Transaction: ");
-
-        } catch (InterruptedException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        } catch (ExecutionException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
+        GroupBuilder gbuilder = createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
+        ReadWriteTransaction modification = Preconditions.checkNotNull(dataBroker).newReadWriteTransaction();
+        InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.key())
+                .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(gbuilder.getGroupId()));
+        modification.delete(LogicalDatastoreType.CONFIGURATION, path1);
+        modification.commit().addCallback(new FutureCallback<Object>() {
+            @Override
+            public void onSuccess(Object notUsed) {
+                ci.println("Status of Group Data Loaded Transaction: success.");
+            }
+
+            @Override
+            public void onFailure(Throwable throwable) {
+                ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
+            }
+        }, MoreExecutors.directExecutor());
     }
 
     public void _addGroup(CommandInterpreter ci) {
@@ -700,33 +604,28 @@ public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
             ci.println("User node added" + nref);
             createUserNode(nref);
         }
-        createTestGroup(ci.nextArgument(),ci.nextArgument(),"add");
+        createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
         writeGroup(ci, testGroup);
     }
 
-    private void writeGroup(CommandInterpreter ci, Group group) {
-        DataModification modification = dataBrokerService.beginTransaction();
-        InstanceIdentifier<Group> path1 = InstanceIdentifier.builder(Nodes.class)
-                .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
-                .child(Group.class, new GroupKey(group.getGroupId()))
-                .build();
-        modification.putOperationalData(nodeToInstanceId(testNode), testNode);
-        modification.putOperationalData(path1, group);
-        modification.putConfigurationData(nodeToInstanceId(testNode), testNode);
-        modification.putConfigurationData(path1, group);
-        Future<RpcResult<TransactionStatus>> commitFuture = modification.commit();
-        try {
-            RpcResult<TransactionStatus> result = commitFuture.get();
-            TransactionStatus status = result.getResult();
-            ci.println("Status of Group Data Loaded Transaction: " + status);
-
-        } catch (InterruptedException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        } catch (ExecutionException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
+    private void writeGroup(final CommandInterpreter ci, Group group) {
+        ReadWriteTransaction modification = Preconditions.checkNotNull(dataBroker).newReadWriteTransaction();
+        InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class)
+                .child(Node.class, testNode.key()).augmentation(FlowCapableNode.class)
+                .child(Group.class, new GroupKey(group.getGroupId()));
+        modification.merge(LogicalDatastoreType.CONFIGURATION, nodeToInstanceId(testNode), testNode, true);
+        modification.merge(LogicalDatastoreType.CONFIGURATION, path1, group, true);
+        modification.commit().addCallback(new FutureCallback<Object>() {
+            @Override
+            public void onSuccess(Object notUsed) {
+                ci.println("Status of Group Data Loaded Transaction: success.");
+            }
+
+            @Override
+            public void onFailure(Throwable throwable) {
+                ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
+            }
+        }, MoreExecutors.directExecutor());
     }
 
     public void _modifyGroup(CommandInterpreter ci) {
@@ -739,16 +638,16 @@ public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
             ci.println("User node added" + nref);
             createUserNode(nref);
         }
-        GroupBuilder group = createTestGroup(ci.nextArgument(),ci.nextArgument(),"modify");           
+        GroupBuilder group = createTestGroup(ci.nextArgument(), ci.nextArgument(), "modify");
         writeGroup(ci, group.build());
-        
-   //     group.setGroupName(originalGroupName);
-     //   writeGroup(ci, group.build());
+
+        //     group.setGroupName(originalGroupName);
+        //   writeGroup(ci, group.build());
     }
 
     @Override
     public String getHelp() {
-        StringBuffer help = new StringBuffer();
+        StringBuilder help = new StringBuilder();
         help.append("---FRM MD-SAL Group test module---\n");
         help.append("\t addGroup <node id>        - node ref\n");
         help.append("\t modifyGroup <node id>        - node ref\n");
@@ -756,12 +655,4 @@ public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
 
         return help.toString();
     }
-
-    private static NodeRef createNodeRef(String string) {
-        NodeKey key = new NodeKey(new NodeId(string));
-        InstanceIdentifier<Node> path =
-                InstanceIdentifier.builder(Nodes.class).child(Node.class, key).toInstance();
-
-        return new NodeRef(path);
-    }
 }