diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonReadContext.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonReadContext.java
index 9c9395e..f0faaec 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonReadContext.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/jsonrpc/JsonReadContext.java
@@ -31,7 +31,7 @@
      * entity.
      */
     public JsonReadContext() {
-        bufStack = new Stack<Byte>();
+        bufStack = new Stack<>();
         isStartMatch = false;
         lastReadBytes = 0;
     }
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Condition.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Condition.java
index a546aed..20deccc 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Condition.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Condition.java
@@ -40,7 +40,7 @@
 
         private final String function;
 
-        private Function(String function) {
+        Function(String function) {
             this.function = function;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Mutation.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Mutation.java
index 7815ee3..126cd84 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Mutation.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Mutation.java
@@ -41,7 +41,7 @@
 
         private final String mutator;
 
-        private Mutator(String mutator) {
+        Mutator(String mutator) {
             this.mutator = mutator;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Operation.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Operation.java
index a278d50..44a5e09 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Operation.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Operation.java
@@ -45,7 +45,7 @@
 
         private String op;
 
-        private Operations(String op) {
+        Operations(String op) {
             this.op = op;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnTypeFactory.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnTypeFactory.java
index 35423df..c6942d7 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnTypeFactory.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnTypeFactory.java
@@ -40,7 +40,7 @@
 
         private final String type;
 
-        private Type(String type) {
+        Type(String type) {
             this.type = type;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/UuidBaseType.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/UuidBaseType.java
index 9cf7dd0..4c2f18b 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/UuidBaseType.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/UuidBaseType.java
@@ -33,7 +33,7 @@
 
         private String refType;
 
-        private RefType(String refType) {
+        RefType(String refType) {
             this.refType = refType;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Bridge.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Bridge.java
index dcf49ed..f31cf38 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Bridge.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Bridge.java
@@ -45,7 +45,7 @@
 
         private final String columnName;
 
-        private BridgeColumn(String columnName) {
+        BridgeColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Controller.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Controller.java
index f93cb7d..4c019cd 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Controller.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Controller.java
@@ -46,7 +46,7 @@
 
         private final String columnName;
 
-        private ControllerColumn(String columnName) {
+        ControllerColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowSampleCollectorSet.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowSampleCollectorSet.java
index a169808..c5dde81 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowSampleCollectorSet.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowSampleCollectorSet.java
@@ -36,7 +36,7 @@
 
         private final String columnName;
 
-        private FlowSampleCollectorSetColumn(String columnName) {
+        FlowSampleCollectorSetColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowTable.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowTable.java
index cdcbf7a..71c89d3 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowTable.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowTable.java
@@ -37,7 +37,7 @@
 
         private final String columnName;
 
-        private FlowTableColumn(String columnName) {
+        FlowTableColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Interface.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Interface.java
index b05657b..30f0104 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Interface.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Interface.java
@@ -50,7 +50,7 @@
 
         private final String columnName;
 
-        private InterfaceColumn(String columnName) {
+        InterfaceColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ipfix.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ipfix.java
index 7b01376..48d23c7 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ipfix.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ipfix.java
@@ -38,7 +38,7 @@
 
         private final String columnName;
 
-        private IpfixColumn(String columnName) {
+        IpfixColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Manager.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Manager.java
index a6e30c5..7c4ad0d 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Manager.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Manager.java
@@ -38,7 +38,7 @@
 
         private final String columnName;
 
-        private ManagerColumn(String columnName) {
+        ManagerColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Mirror.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Mirror.java
index 48631d4..f2f6210 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Mirror.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Mirror.java
@@ -39,7 +39,7 @@
 
         private final String columnName;
 
-        private MirrorColumn(String columnName) {
+        MirrorColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Netflow.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Netflow.java
index cbb6056..bdb4bac 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Netflow.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Netflow.java
@@ -37,7 +37,7 @@
 
         private final String columnName;
 
-        private NetflowColumn(String columnName) {
+        NetflowColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OpenVSwitch.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OpenVSwitch.java
index 692a6c5..3ddc1b9 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OpenVSwitch.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OpenVSwitch.java
@@ -44,7 +44,7 @@
 
         private final String columnName;
 
-        private OpenVSwitchColumn(String columnName) {
+        OpenVSwitchColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OvsdbTable.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OvsdbTable.java
index a6ebed2..0594dd2 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OvsdbTable.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/OvsdbTable.java
@@ -27,7 +27,7 @@
 
     private final String tableName;
 
-    private OvsdbTable(String tableName) {
+    OvsdbTable(String tableName) {
         this.tableName = tableName;
     }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Port.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Port.java
index 1db8137..3be5f55 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Port.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Port.java
@@ -43,7 +43,7 @@
 
         private final String columnName;
 
-        private PortColumn(String columnName) {
+        PortColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Qos.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Qos.java
index dc3e67d..f7caecd 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Qos.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Qos.java
@@ -37,7 +37,7 @@
 
         private final String columnName;
 
-        private QosColumn(String columnName) {
+        QosColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Queue.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Queue.java
index 84841a3..de8ced9 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Queue.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Queue.java
@@ -36,7 +36,7 @@
 
         private final String columnName;
 
-        private QueueColumn(String columnName) {
+        QueueColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Sflow.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Sflow.java
index ac70ea3..ad8e5cc 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Sflow.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Sflow.java
@@ -37,7 +37,7 @@
 
         private final String columnName;
 
-        private SflowColumn(String columnName) {
+        SflowColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ssl.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ssl.java
index 7667110..bb0a7b0 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ssl.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ssl.java
@@ -36,7 +36,7 @@
 
         private final String columnName;
 
-        private SslColumn(String columnName) {
+        SslColumn(String columnName) {
             this.columnName = columnName;
         }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/VersionNum.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/VersionNum.java
index 33327d8..7e7825e 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/VersionNum.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/VersionNum.java
@@ -36,7 +36,7 @@
 
     private final String versionNum;
 
-    private VersionNum(String versionNum) {
+    VersionNum(String versionNum) {
         this.versionNum = versionNum;
     }
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java
index 3383ba9..858a1fc 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java
@@ -218,7 +218,7 @@
     public static List<OperationResult> jsonNodeToOperationResult(List<JsonNode> input,
                                                                   List<Operation> operations) {
         ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper(false);
-        List<OperationResult> operationResults = new ArrayList<OperationResult>();
+        List<OperationResult> operationResults = new ArrayList<>();
         for (int i = 0; i < input.size(); i++) {
             JsonNode jsonNode = input.get(i);
 
diff --git a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcReaderUtil.java b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcReaderUtil.java
index 5f677cf..b7662ef 100644
--- a/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcReaderUtil.java
+++ b/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcReaderUtil.java
@@ -115,7 +115,6 @@
     /**
      * Filter the invalid characters before decoding.
      * @param in input of bytes
-     * @param lastReadBytes the bytes for last decoding incomplete record
      */
     private static void fliterCharaters(ByteBuf in) {
         while (in.isReadable()) {
@@ -130,14 +129,11 @@
 
     /**
      * Check whether the peek of the stack element is double quote.
-     * @param jrContext context for the last decoding process
+     * @param bufStack context for the last decoding process
      * @return boolean
      */
     private static boolean isDoubleQuote(Stack<Byte> bufStack) {
-        if (!bufStack.isEmpty() && bufStack.peek() == '"') {
-            return true;
-        }
-        return false;
+        return !bufStack.isEmpty() && bufStack.peek() == '"';
     }
 
     /**
