isKeyLeaf is set only if config is true

Change-Id: I51c2deebcb74793352fccb1287bad14dc0dfc3bb
diff --git a/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/listeners/LeafListener.java b/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/listeners/LeafListener.java
index 5b19260..a42eccc 100644
--- a/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/listeners/LeafListener.java
+++ b/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/listeners/LeafListener.java
@@ -138,11 +138,9 @@
             leaf.setContainedIn(leavesHolder);
             if (tmpData instanceof YangList) {
                 YangList list = (YangList) tmpData;
-                if (list.isConfig()) {
-                    for (String key : list.getKeyList()) {
-                        if (key.equals(leaf.getName())) {
-                            leaf.setKeyLeaf(true);
-                        }
+                for (String key : list.getKeyList()) {
+                    if (key.equals(leaf.getName())) {
+                        leaf.setKeyLeaf(true);
                     }
                 }
             }
diff --git a/serializers/xml/src/test/java/org/onosproject/yang/serializers/xml/XmlSerializerTest.java b/serializers/xml/src/test/java/org/onosproject/yang/serializers/xml/XmlSerializerTest.java
index b3f7dda..541046b 100644
--- a/serializers/xml/src/test/java/org/onosproject/yang/serializers/xml/XmlSerializerTest.java
+++ b/serializers/xml/src/test/java/org/onosproject/yang/serializers/xml/XmlSerializerTest.java
@@ -60,6 +60,7 @@
     private static YangSerializer xmlSerializer;
 
     public static final String LNS = "yrt:list.anydata";
+    private static final String LIST_NS = "yrt:list";
 
     @BeforeClass
     public static void prepare() {
@@ -586,4 +587,48 @@
         InputStream inputStream = compositeStream.resourceData();
         assertThat(convertInputStreamToString(inputStream), is(parseXml(path)));
     }
+
+    /**
+     * Validates data node in which XML element is of type YANG List with config false.
+     */
+    @Test
+    public void testListWithConfigFalse() {
+        String path = "src/test/resources/testListWithConfigFalse.xml";
+        DefaultCompositeStream external =
+                new DefaultCompositeStream(null, parseInput(path));
+        CompositeData compositeData = xmlSerializer.decode(external, context);
+        DataNode rootNode = validateRootDataNode(compositeData.resourceData());
+        List<String> keyNames = new LinkedList<>();
+        keyNames.add("m1");
+        keyNames.add("m2");
+
+        List<String> keyNs = new LinkedList<>();
+        keyNs.add(LIST_NS);
+        keyNs.add(LIST_NS);
+
+        List<Object> values = new LinkedList<>();
+        values.add("m1_Value");
+        values.add("m2_Value");
+
+        DataNode c2Node = validateContainerDataNode(rootNode, "c2", LIST_NS);
+        DataNode listl1 = validateListDataNode(c2Node, "l2", LIST_NS,
+                                               keyNames, keyNs, values);
+        validateLeafDataNode(listl1, "m1", LIST_NS, "m1_Value");
+        validateLeafDataNode(listl1, "m2", LIST_NS, "m2_Value");
+
+        List<Object> values1 = new LinkedList<>();
+        values1.add("m1_Value1");
+        values1.add("m2_Value1");
+
+        DataNode listl2 = validateListDataNode(c2Node, "l2", LIST_NS,
+                                               keyNames, keyNs, values1);
+        validateLeafDataNode(listl2, "m1", LIST_NS, "m1_Value1");
+        validateLeafDataNode(listl2, "m2", LIST_NS, "m2_Value1");
+
+        // encode test
+        CompositeStream compositeStream = xmlSerializer.encode(
+                getNewCompositeData(compositeData), context);
+        InputStream inputStream = compositeStream.resourceData();
+        assertThat(convertInputStreamToString(inputStream), is(parseXml(path)));
+    }
 }
diff --git a/serializers/xml/src/test/resources/list.yang b/serializers/xml/src/test/resources/list.yang
index 2ff07dc..d15c992 100644
--- a/serializers/xml/src/test/resources/list.yang
+++ b/serializers/xml/src/test/resources/list.yang
@@ -38,4 +38,18 @@
     leaf-list leaf1 {
         type string;
     }
+
+    container c2 {
+       config false;
+       list l2 {
+          key "m1 m2";
+          leaf m1 {
+              type string;
+          }
+
+          leaf m2 {
+              type string;
+          }
+       }
+    }
 }
\ No newline at end of file
diff --git a/serializers/xml/src/test/resources/testListWithConfigFalse.xml b/serializers/xml/src/test/resources/testListWithConfigFalse.xml
new file mode 100644
index 0000000..ed724ef
--- /dev/null
+++ b/serializers/xml/src/test/resources/testListWithConfigFalse.xml
@@ -0,0 +1,10 @@
+<c2 xmlns="yrt:list" operation="replace">
+<l2>
+<m1>m1_Value</m1>
+<m2>m2_Value</m2>
+</l2>
+<l2>
+<m1>m1_Value1</m1>
+<m2>m2_Value1</m2>
+</l2>
+</c2>