[ONOS-5675][ONOS-5676] RESTCONF JIRA fixes

This submission contains the fixes for the following 3 problems:

1. [ONOS-5675] RESTCONF clients may stop receiving notifications when multiple client
               sessions are opened simultaneously
2. [ONOS-5676] RESTCONF client hangs on event notification subscription
3. bug fix for empty-leaf node

Change-Id: Icf6848d18e0599842d4889d5aa5443c58f23aeeb
diff --git a/protocols/restconf/server/utils/src/main/java/org/onosproject/protocol/restconf/server/utils/parser/json/DefaultJsonBuilder.java b/protocols/restconf/server/utils/src/main/java/org/onosproject/protocol/restconf/server/utils/parser/json/DefaultJsonBuilder.java
index b5f2911..654fff9 100644
--- a/protocols/restconf/server/utils/src/main/java/org/onosproject/protocol/restconf/server/utils/parser/json/DefaultJsonBuilder.java
+++ b/protocols/restconf/server/utils/src/main/java/org/onosproject/protocol/restconf/server/utils/parser/json/DefaultJsonBuilder.java
@@ -90,9 +90,20 @@
             return;
         }
         appendField(fieldName);
+
+        // If the value is null, then it's a empty leaf-node
+        if (value == null) {
+            treeString.append(QUOTE)
+                    .append(QUOTE + COMMA);
+            return;
+        }
+
+        // If the value is empty, then it's a non-leaf node
         if (value.isEmpty()) {
             return;
         }
+
+        // It's a non-empty leaf node
         treeString.append(QUOTE)
                 .append(value)
                 .append(QUOTE + COMMA);
@@ -163,8 +174,8 @@
     private void appendField(String fieldName) {
         if (!isNullOrEmpty(fieldName)) {
             treeString.append(QUOTE)
-            .append(fieldName)
-            .append(QUOTE + COLON);
+                    .append(fieldName)
+                    .append(QUOTE + COLON);
         }
     }
 
diff --git a/protocols/restconf/server/utils/src/main/java/org/onosproject/protocol/restconf/server/utils/parser/json/JsonToYdtListener.java b/protocols/restconf/server/utils/src/main/java/org/onosproject/protocol/restconf/server/utils/parser/json/JsonToYdtListener.java
index 546bed7..cf4e690 100755
--- a/protocols/restconf/server/utils/src/main/java/org/onosproject/protocol/restconf/server/utils/parser/json/JsonToYdtListener.java
+++ b/protocols/restconf/server/utils/src/main/java/org/onosproject/protocol/restconf/server/utils/parser/json/JsonToYdtListener.java
@@ -48,6 +48,7 @@
     private static final int INPUT_FIELD_LENGTH = 2;
     private static final String E_UNSUP_TYPE = "Unsupported node type %s " +
             "field name is %s fieldName";
+    private static final String EMPTY_STRING = "null";
 
     private Logger log = getLogger(getClass());
 
@@ -140,7 +141,8 @@
     }
 
     private void processLeafNode(NormalizedYangNode node, String value) {
-        ydtBuilder.addLeaf(node.getName(), node.getNamespace(), value);
+        String leafValue = value.equalsIgnoreCase(EMPTY_STRING) ? null : value;
+        ydtBuilder.addLeaf(node.getName(), node.getNamespace(), leafValue);
     }
 
     private void processArrayNode(NormalizedYangNode normalizedNode,