diff --git a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java
index 1a088ff..ff92b77 100644
--- a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java
+++ b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OFChannelHandler.java
@@ -445,7 +445,7 @@
 
 
                 log.debug("Switch {} bound to class {}, description {}",
-                        new Object[] {h.sw, h.sw.getClass(), drep });
+                        h.sw, h.sw.getClass(), drep);
                 //Put switch in EQUAL mode until we hear back from the global registry
                 //log.debug("Setting new switch {} to EQUAL and sending Role request",
                 //        h.sw.getStringId());
@@ -730,10 +730,9 @@
          */
         protected void logError(OFChannelHandler h, OFErrorMsg error) {
             log.error("{} from switch {} in state {}",
-                    new Object[] {
                     error,
                     h.getSwitchInfoString(),
-                    this.toString()});
+                    this.toString());
         }
 
         /**
diff --git a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
index d042994..fdcd2f0 100644
--- a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
+++ b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
@@ -498,10 +498,10 @@
                     activeEqualSwitches.get(dpid) != null) {
                 log.error("Trying to activate switch but it is already "
                         + "activated: dpid {}. Found in activeMaster: {} "
-                        + "Found in activeEqual: {}. Aborting ..", new Object[]{
-                                dpid,
-                                (activeMasterSwitches.get(dpid) == null) ? 'N' : 'Y',
-                                        (activeEqualSwitches.get(dpid) == null) ? 'N' : 'Y'});
+                        + "Found in activeEqual: {}. Aborting ..",
+                          dpid,
+                          (activeMasterSwitches.get(dpid) == null) ? 'N' : 'Y',
+                          (activeEqualSwitches.get(dpid) == null) ? 'N' : 'Y');
                 return false;
             }
             return true;
diff --git a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java
index e7e5ffe..bd4875c 100644
--- a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java
+++ b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java
@@ -213,8 +213,9 @@
             log.debug("Received unexpected RoleReply {} from "
                     + "Switch: {}. "
                     + "This controller has no current role for this sw. "
-                    + "Ignoring ...", new Object[] {rri,
-                            sw == null ? "(null)" : sw.getStringId(), });
+                    + "Ignoring ...",
+                      rri,
+                      sw == null ? "(null)" : sw.getStringId());
             return RoleRecvStatus.OTHER_EXPECTATION;
         }
 
@@ -232,7 +233,7 @@
         if (expectedRole == receivedRole) {
             log.debug("Received role reply message from {} that matched "
                     + "expected role-reply {} with expectations {}",
-                    new Object[] {sw.getStringId(), receivedRole, expectation});
+                    sw.getStringId(), receivedRole, expectation);
 
             // Done with this RoleReply; Invalidate
             pendingReplies.invalidate(xid);
@@ -283,10 +284,10 @@
             log.error("Received a error msg {} from sw {} for "
                     + "pending role request {}. Switch driver indicates "
                     + "role-messaging is supported. Possible issues in "
-                    + "switch driver configuration?", new Object[] {
-                            ((OFBadRequestErrorMsg) error).toString(),
-                            sw.getStringId(), errorRole
-                    });
+                    + "switch driver configuration?",
+                    ((OFBadRequestErrorMsg) error).toString(),
+                    sw.getStringId(),
+                    errorRole);
             return RoleRecvStatus.UNSUPPORTED;
         }
 
