YANG object builder support for choice, case and augment

Change-Id: I1750062be4443f1fe03a4d405164dbceec6be631
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 9ad458b..c59725a 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
@@ -22,6 +22,7 @@
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfoContainer;
 import org.onosproject.yms.app.ydt.YdtExtendedContext;
+import org.onosproject.yms.app.yob.exception.YobException;
 import org.onosproject.yms.app.ysr.YangSchemaRegistry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,7 +36,8 @@
 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;
-import static org.onosproject.yms.app.yob.YobConstants.FAIL_TO_INVOKE_METHOD;
+import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_INVOKE_METHOD;
+import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_INVOKE_METHOD;
 
 /**
  * Represents a multi instance leaf node handler in YANG object builder.
@@ -47,43 +49,50 @@
             LoggerFactory.getLogger(YobMultiInstanceLeafHandler.class);
 
     @Override
-    public void createYangBuilderObject(YdtExtendedContext curYdtNode,
-                                        YdtExtendedContext rootYdtNode,
-                                        YangSchemaRegistry registry) {
+    public void createBuilder(YdtExtendedContext curNode,
+                              YdtExtendedContext rootNode,
+                              YangSchemaRegistry registry) {
         // For multi instance leaf no need to create an object.
     }
 
     @Override
-    public void buildObjectFromBuilder(YdtExtendedContext ydtNode,
-                                       YdtExtendedContext ydtRootNode,
-                                       YangSchemaRegistry schemaRegistry) {
+    public void buildObject(YdtExtendedContext ydtNode,
+                            YdtExtendedContext ydtRootNode,
+                            YangSchemaRegistry schemaRegistry) {
         // For multi instance leaf no need to build object.
     }
 
+    /**
+     * Set the leaf list values in the YANG object.
+     *
+     * @param leafListNode   leaf list YDT node
+     * @param schemaRegistry YANG schema registry
+     * @throws YobException if failed to invoke the leaf list's setter
+     */
     @Override
-    public void setObjectInParent(YdtExtendedContext leafListYdtNode,
-                                  YangSchemaRegistry schemaRegistry) {
+    public void setInParent(YdtExtendedContext leafListNode,
+                            YangSchemaRegistry schemaRegistry) {
         Class<?> parentBuilderClass = null;
-        YangSchemaNode yangSchemaNode = leafListYdtNode.getYangSchemaNode();
+        YangSchemaNode yangSchemaNode = leafListNode.getYangSchemaNode();
         YdtExtendedContext parentYdtNode =
-                (YdtExtendedContext) leafListYdtNode.getParent();
+                (YdtExtendedContext) leafListNode.getParent();
         YobWorkBench parentYobWorkBench =
                 (YobWorkBench) parentYdtNode.getAppInfo(YOB);
-        Set<String> valueSet = leafListYdtNode.getValueSet();
+        Set<String> valueSet = leafListNode.getValueSet();
 
         for (String value : valueSet) {
             try {
                 String setterInParent = yangSchemaNode.getJavaAttributeName();
-                Object parentBuilderObject = parentYobWorkBench
-                        .getParentBuilder(leafListYdtNode, schemaRegistry);
-                parentBuilderClass = parentBuilderObject.getClass();
+                Object builderObject = parentYobWorkBench
+                        .getParentBuilder(leafListNode, schemaRegistry);
+                parentBuilderClass = builderObject.getClass();
                 Field leafName = parentBuilderClass
                         .getDeclaredField(setterInParent);
                 ParameterizedType genericListType =
                         (ParameterizedType) leafName.getGenericType();
                 Class<?> genericListClass =
                         (Class<?>) genericListType.getActualTypeArguments()[0];
-                Method parentSetterMethod =
+                Method setterMethod =
                         parentBuilderClass.getDeclaredMethod(
                                 ADD_TO + getCapitalCase(setterInParent),
                                 genericListClass);
@@ -91,11 +100,14 @@
                         (JavaQualifiedTypeInfoContainer) yangSchemaNode;
                 YangType<?> yangType =
                         ((YangLeafList) javaQualifiedType).getDataType();
-                setDataFromStringValue(yangType, value, parentSetterMethod,
-                                       parentBuilderObject, leafListYdtNode);
+                YobUtils.setDataFromStringValue(yangType, value, setterMethod,
+                                                builderObject, leafListNode);
             } catch (NoSuchMethodException | InvocationTargetException
                     | IllegalAccessException | NoSuchFieldException e) {
-                log.error(FAIL_TO_INVOKE_METHOD + parentBuilderClass.getName());
+                log.error(L_FAIL_TO_INVOKE_METHOD,
+                          parentBuilderClass.getName());
+                throw new YobException(E_FAIL_TO_INVOKE_METHOD +
+                                               parentBuilderClass.getName());
             }
         }
     }