YAB and YOB defect fix

Change-Id: Ifed54236cfa83b4754383467818581bec59191d9
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceLeafHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceLeafHandler.java
index c59725a..6d97841 100755
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceLeafHandler.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceLeafHandler.java
@@ -33,6 +33,7 @@
 import java.lang.reflect.ParameterizedType;
 import java.util.Set;
 
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.IDENTITYREF;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
 import static org.onosproject.yms.app.ydt.AppType.YOB;
 import static org.onosproject.yms.app.yob.YobConstants.ADD_TO;
@@ -74,6 +75,10 @@
                             YangSchemaRegistry schemaRegistry) {
         Class<?> parentBuilderClass = null;
         YangSchemaNode yangSchemaNode = leafListNode.getYangSchemaNode();
+        while (yangSchemaNode.getReferredSchema() != null) {
+            yangSchemaNode = yangSchemaNode.getReferredSchema();
+        }
+
         YdtExtendedContext parentYdtNode =
                 (YdtExtendedContext) leafListNode.getParent();
         YobWorkBench parentYobWorkBench =
@@ -90,17 +95,25 @@
                         .getDeclaredField(setterInParent);
                 ParameterizedType genericListType =
                         (ParameterizedType) leafName.getGenericType();
-                Class<?> genericListClass =
-                        (Class<?>) genericListType.getActualTypeArguments()[0];
-                Method setterMethod =
-                        parentBuilderClass.getDeclaredMethod(
-                                ADD_TO + getCapitalCase(setterInParent),
-                                genericListClass);
+                Class<?> genericListClass;
+                if (((YangLeafList) leafListNode.getYangSchemaNode())
+                        .getDataType().getDataType() == IDENTITYREF) {
+                    ParameterizedType type = (ParameterizedType)
+                            genericListType.getActualTypeArguments()[0];
+                    genericListClass = type.getClass().getClass();
+                } else {
+                    genericListClass = (Class<?>) genericListType.getActualTypeArguments()[0];
+                }
+
+                Method setterMethod = parentBuilderClass.getDeclaredMethod(
+                        ADD_TO + getCapitalCase(setterInParent), genericListClass);
+
                 JavaQualifiedTypeInfoContainer javaQualifiedType =
                         (JavaQualifiedTypeInfoContainer) yangSchemaNode;
                 YangType<?> yangType =
                         ((YangLeafList) javaQualifiedType).getDataType();
-                YobUtils.setDataFromStringValue(yangType, value, setterMethod,
+                YobUtils.setDataFromStringValue(yangType.getDataType(), value,
+                                                setterMethod,
                                                 builderObject, leafListNode);
             } catch (NoSuchMethodException | InvocationTargetException
                     | IllegalAccessException | NoSuchFieldException e) {