[ONOS-5076] YANG data tree Builder

Change-Id: I25160b651c26e614d29d7fad85e63f77a262d77c
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/Hello_ONOS.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/Hello_ONOS.yang
new file mode 100644
index 0000000..d5eafbe
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/Hello_ONOS.yang
@@ -0,0 +1,57 @@
+module Hello_ONOS {
+    yang-version 1;
+    namespace "ydt:hello_onos";
+    prefix "hello";
+
+    revision "2016-09-03" {
+        description "Initial revision of hello model";
+    }
+
+    grouping greeting {
+        leaf name {
+            type string;
+        }
+
+        leaf surName {
+            type string;
+        }
+    }
+
+    rpc hello-world {
+        input {
+
+            // uses greeting;
+
+            leaf name {
+                type string;
+            }
+
+            leaf surName {
+                type string;
+            }
+
+            leaf inputDefault {
+                type string;
+            }
+
+            list stringList {
+                key "string1 string2";
+                unique "string3";
+                leaf string1 {
+                      type string;
+                }
+                leaf string2 {
+                      type string;
+                }
+                leaf string3 {
+                      type string;
+                }
+            }
+        }
+        output {
+            leaf greetingOut {
+                type string;
+            }
+        }
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/Logistics-manager.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/Logistics-manager.yang
new file mode 100644
index 0000000..3cd4321
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/Logistics-manager.yang
@@ -0,0 +1,66 @@
+module Logistics-manager {
+
+    yang-version 1;
+
+    namespace "ydt.root";
+
+    prefix "root";
+
+    organization "ON-LAB";
+
+    description "This module defines for organisation.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    leaf Customs-supervisor {
+        type string;
+        description "name of the customs-supervisor.";
+    }
+
+    leaf Merchandiser-supervisor {
+        type string;
+        description "name of merchandiser-supervisor";
+    }
+
+    list Material-supervisor {
+        key "name";
+        leaf name {
+            type string;
+            description "name of logistics-supervisor";
+        }
+
+        leaf departmentId {
+            type string;
+            description "name of department";
+        }
+    }
+
+    container Purchasing-supervisor {
+        leaf purchasing-specialist {
+            type string;
+            description "name of the purchasing-specialist person";
+        }
+
+        leaf support {
+            type string;
+            description "name of the support person";
+        }
+    }
+
+    leaf-list Warehouse-supervisor {
+        type string;
+        description "name of the warehouse-supervisor's";
+    }
+
+    leaf trading-supervisor {
+        type string;
+        description "name of the trading-supervisor";
+    }
+
+    leaf-list employee-id {
+        type string;
+        description "list of the employee id";
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology1.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology1.yang
new file mode 100644
index 0000000..6736063
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology1.yang
@@ -0,0 +1,51 @@
+module augment-topology1 {
+
+    yang-version 1;
+
+    namespace "ydt.augment-topology1";
+
+    prefix "aug1";
+
+    import yms-ietf-network {
+        prefix nd;
+    }
+
+    import yms-network-topology {
+        prefix topo;
+    }
+
+    organization "ON-LAB";
+
+    description "This module defines for augment-topology1 classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    augment "/nd:networks/nd:network/topo:link" {
+        description
+        "Add augment1 to the link model.";
+        list augment1 {
+            key "value1";
+            leaf value1 {
+                  type int8;
+            }
+        }
+    }
+
+    augment "/nd:networks/nd:network/nd:node/topo:t-point" +
+    "/supporting-termination-point" {
+        description
+        "Add augment1 to the termination-point model.";
+        container augment1 {
+            leaf value1 {
+                  type int8;
+            }
+        }
+
+        leaf augment1-leaf {
+            type string;
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology2.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology2.yang
new file mode 100644
index 0000000..82a19d7
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology2.yang
@@ -0,0 +1,63 @@
+module augment-topology2 {
+
+    yang-version 1;
+
+    namespace "ydt.augment-topology2";
+
+    prefix "aug2";
+
+    import yms-ietf-network {
+        prefix nd;
+    }
+
+    import yms-network-topology {
+        prefix topo;
+    }
+
+    organization "ON-LAB";
+
+    description "This module defines for augment-topology2 classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    augment "/nd:networks/nd:network/topo:link" {
+        description
+        "Add augment2 to the link model.";
+        list augment2 {
+            key "key1 key2";
+            leaf key1 {
+                  type int8;
+            }
+            leaf key2 {
+                  type int8;
+            }
+        }
+
+        leaf-list augment2leafList {
+            type string;
+        }
+    }
+
+    augment "/nd:networks/nd:network/nd:node/topo:t-point/" +
+    "supporting-termination-point" {
+        description
+        "Add augment2 to the supporting-termination-point model.";
+        container augment2 {
+            config false;
+            leaf value2 {
+                  type int8;
+            }
+        }
+
+        leaf-list augment2leafList {
+            type string;
+        }
+
+        leaf augment2leaf {
+            type string;
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology3.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology3.yang
new file mode 100644
index 0000000..d2c58ce
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology3.yang
@@ -0,0 +1,59 @@
+module augment-topology3 {
+
+    yang-version 1;
+
+    namespace "ydt.augment-topology3";
+
+    prefix "aug3";
+
+    import yms-ietf-network {
+        prefix nd;
+    }
+
+    import augment-topology1 {
+        prefix aug1;
+    }
+
+    import augment-topology2 {
+        prefix aug2;
+    }
+
+    import yms-network-topology {
+        prefix topo;
+    }
+
+    organization "ON-LAB";
+
+    description "This module defines for augment-topology3 classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    augment "/nd:networks/nd:network/topo:link/aug2:augment2" {
+        description
+        "Add augment3 to the augment2 model.";
+        container augment3 {
+            config false;
+            leaf value3 {
+                  type int8;
+            }
+        }
+
+        leaf augment3leaf {
+            type string;
+        }
+    }
+
+    augment "/nd:networks/nd:network/nd:node/topo:t-point/" +
+    "supporting-termination-point/aug2:augment2" {
+        description
+        "Add augment3 to the augment2 model.";
+        container augment3 {
+            config false;
+            leaf value3 {
+                  type int8;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology4.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology4.yang
new file mode 100644
index 0000000..b8cea93
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology4.yang
@@ -0,0 +1,58 @@
+module augment-topology4 {
+
+    yang-version 1;
+
+    namespace "ydt.augment-topology4";
+
+    prefix "aug4";
+
+    import yms-ietf-network {
+        prefix nd;
+    }
+
+    import augment-topology1 {
+        prefix aug1;
+    }
+
+    import augment-topology2 {
+        prefix aug2;
+    }
+
+    import augment-topology3 {
+        prefix aug3;
+    }
+
+    import yms-network-topology {
+        prefix topo;
+    }
+
+    organization "ON-LAB";
+
+    description "This module defines for augment-topology4 classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3" {
+        description
+        "Add augment4 to the augment3 model.";
+        container augment4 {
+            config false;
+            leaf value4 {
+                  type int8;
+            }
+        }
+    }
+
+    augment "/nd:networks/nd:network/nd:node/topo:t-point/" +
+    "supporting-termination-point/aug2:augment2" {
+        description
+        "Add augment4leaf to the augment2 model.";
+
+        leaf augment4leaf{
+            type string;
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology5.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology5.yang
new file mode 100644
index 0000000..a13a688
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology5.yang
@@ -0,0 +1,66 @@
+module augment-topology5 {
+
+    yang-version 1;
+
+    namespace "ydt.augment-topology5";
+
+    prefix "aug5";
+
+    import yms-ietf-network {
+        prefix nd;
+    }
+
+    import augment-topology1 {
+        prefix aug1;
+    }
+
+    import augment-topology2 {
+        prefix aug2;
+    }
+
+    import augment-topology3 {
+        prefix aug3;
+    }
+
+    import augment-topology4 {
+        prefix aug4;
+    }
+
+    import yms-network-topology {
+        prefix topo;
+    }
+
+    organization "ON-LAB";
+
+    description "This module defines for augment-topology5 classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    augment "/nd:networks/nd:network/topo:link/aug2:augment2" {
+        description
+        "Add container to the augment2 model.";
+        container augment5 {
+            config false;
+            leaf value5 {
+                  type int8;
+            }
+        }
+
+        leaf-list augment5leafList {
+            type string;
+        }
+    }
+
+    augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3" {
+        description
+        "Add augment5 to the augment3 model.";
+        container augment5 {
+            config false;
+            leaf value5 {
+                  type int8;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology6.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology6.yang
new file mode 100644
index 0000000..15bd3d5
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augment-topology6.yang
@@ -0,0 +1,73 @@
+module augment-topology6 {
+
+    yang-version 1;
+
+    namespace "ydt.augment-topology6";
+
+    prefix "aug5";
+
+    import yms-ietf-network {
+        prefix nd;
+    }
+
+    import augment-topology1 {
+        prefix aug1;
+    }
+
+    import augment-topology2 {
+        prefix aug2;
+    }
+
+    import augment-topology3 {
+        prefix aug3;
+    }
+
+    import augment-topology4 {
+        prefix aug4;
+    }
+
+    import augment-topology5 {
+        prefix aug5;
+    }
+
+    import yms-network-topology {
+        prefix topo;
+    }
+
+    organization "ON-LAB";
+
+    description "This module defines for augment-topology6 classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3" {
+        description
+        "Add augment6 to the augment3 model.";
+        container augment6 {
+            config true;
+            leaf value6 {
+                  type int8;
+            }
+        }
+    }
+
+    augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3/" +
+    "aug5:augment5" {
+        description
+        "Add leaf6 to the augment5 model.";
+        leaf leaf6 {
+            type string;
+        }
+
+    }
+
+    augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug5:augment5" {
+        description
+        "Add list to the augment5 model.";
+        leaf-list augment6leafList {
+            type string;
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/augmentNetwork.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/augmentNetwork.yang
new file mode 100644
index 0000000..315bc44
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/augmentNetwork.yang
@@ -0,0 +1,33 @@
+module augmentNetwork {
+
+    yang-version 1;
+
+    namespace "ydt.augmentNetwork";
+
+    prefix "aug";
+
+    import yms-ietf-network {
+        prefix nd;
+    }
+
+
+    organization "ON-LAB";
+
+    description "This module defines for augmentNetwork classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    augment "/nd:networks/nd:network" {
+        description
+        "Add container to the network model.";
+        container cont1s {
+            container cont1s {
+                leaf fine {
+                    type string;
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/binarytest.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/binarytest.yang
new file mode 100644
index 0000000..71ada48
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/binarytest.yang
@@ -0,0 +1,33 @@
+module binarytest {
+
+    yang-version 1;
+
+    namespace "ydt.binarytest";
+
+    prefix "binarytest";
+
+    organization "ON-LAB";
+
+    description "This module defines for binarytest classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    list binaryList {
+        config false;
+        leaf binary {
+              type binary;
+        }
+        leaf binaryWithRange {
+              type binary {
+                   length "2 .. 10";
+              }
+        }
+        leaf binaryWithMultiRange {
+              type binary {
+                   length "min..10 | 20 | 30..max";
+              }
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/bit.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/bit.yang
new file mode 100644
index 0000000..6d97ccc
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/bit.yang
@@ -0,0 +1,51 @@
+module bit {
+
+    yang-version 1;
+
+    namespace "ydt.bit";
+
+    prefix "bit";
+
+    organization "ON-LAB";
+
+    description "This module defines for bit classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+/*
+     leaf mybits {
+         type bits {
+             bit disable-nagle {
+                 position 0;
+             }
+             bit auto-sense-speed {
+                 position 1;
+             }
+             bit 10-Mb-only {
+                 position 2;
+             }
+         }
+         default "auto-sense-speed";
+     }
+     */
+
+    list bitList {
+        config false;
+        leaf bit {
+            type bits {
+                bit disable-nagle {
+                position 0;
+                }
+                bit auto-sense-speed {
+                position 1;
+                }
+                bit ten-Mb-only {
+                position 2;
+                }
+            }
+            default "auto-sense-speed";
+
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/bool.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/bool.yang
new file mode 100644
index 0000000..1bb6181
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/bool.yang
@@ -0,0 +1,23 @@
+module bool {
+
+    yang-version 1;
+
+    namespace "ydt.boolean";
+
+    prefix "bool";
+
+    organization "ON-LAB";
+
+    description "This module defines for bool classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    list booleanList {
+        key boolean;
+        leaf boolean {
+              type boolean;
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/customssupervisor.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/customssupervisor.yang
new file mode 100644
index 0000000..73aa806
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/customssupervisor.yang
@@ -0,0 +1,21 @@
+module customssupervisor {
+
+    yang-version 1;
+
+    namespace "ydt.customs-supervisor";
+
+    prefix "customs";
+
+    organization "ON-LAB";
+
+    description "This module defines for customs-supervisor.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    leaf supervisor {
+        type string;
+        description "name of the customs-supervisor.";
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/decimal64.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/decimal64.yang
new file mode 100644
index 0000000..6470e8a
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/decimal64.yang
@@ -0,0 +1,90 @@
+module decimal64 {
+
+    yang-version 1;
+
+    namespace "ydt.decimal64";
+
+    prefix "decimal64";
+
+    organization "ON-LAB";
+
+    description "This module defines for decimal64 classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+    leaf negInt {
+          type decimal64 {
+                fraction-digits 2;
+          }
+    }
+
+    leaf negIntWithMaxFraction {
+          type decimal64 {
+                fraction-digits 18;
+          }
+    }
+
+    leaf negIntWithMinFraction {
+          type decimal64 {
+                fraction-digits 1;
+          }
+    }
+
+    leaf posInt {
+          type decimal64 {
+                fraction-digits 2;
+          }
+    }
+
+    leaf posIntWithMaxFraction {
+          type decimal64 {
+                fraction-digits 18;
+          }
+
+    }
+
+    leaf posIntWithMinFraction {
+          type decimal64 {
+                fraction-digits 1;
+          }
+
+    }
+
+    leaf minIntWithRange {
+          type decimal64 {
+                fraction-digits 2;
+                range "10 .. 100";
+          }
+    }
+
+    leaf midIntWithRange {
+          type decimal64 {
+             fraction-digits 2;
+             range "10 .. 100";
+         }
+    }
+
+    leaf maxIntWithRange {
+          type decimal64 {
+             fraction-digits 2;
+             range "10 .. 100";
+         }
+    }
+
+    list multiRangeValidation {
+        config false;
+        leaf decimal {
+              type decimal64 {
+                 fraction-digits 2;
+                 range "10..40 | 50..100";
+              }
+        }
+        leaf revDecimal {
+              type decimal64 {
+                 fraction-digits 2;
+                 range "min .. 3.14 | 10 | 20..max";
+              }
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/employeeid.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/employeeid.yang
new file mode 100644
index 0000000..be27c70
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/employeeid.yang
@@ -0,0 +1,21 @@
+module employeeid {
+
+    yang-version 1;
+
+    namespace "ydt.employee-id";
+
+    prefix "id";
+
+    organization "ON-LAB";
+
+    description "This module defines for employee-id.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    leaf-list employeeid {
+        type string;
+        description "list of the employee id";
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/emptydata.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/emptydata.yang
new file mode 100644
index 0000000..33f58b3
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/emptydata.yang
@@ -0,0 +1,23 @@
+module emptydata {
+
+    yang-version 1;
+
+    namespace "ydt.emptydata";
+
+    prefix "emptydata";
+
+    organization "ON-LAB";
+
+    description "This module defines for emptydata classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    list emptyList {
+        config false;
+        leaf empty {
+              type empty;
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/enumtest.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/enumtest.yang
new file mode 100644
index 0000000..a9255c5
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/enumtest.yang
@@ -0,0 +1,27 @@
+module enumtest {
+
+    yang-version 1;
+
+    namespace "ydt.enumtest";
+
+    prefix "enumtest";
+
+    organization "ON-LAB";
+
+    description "This module defines for enumtest classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    list enumList {
+        key enumleaf;
+        leaf enumleaf {
+            type enumeration {
+              enum ten { value "10";}
+              enum hundred { value "100";}
+              enum thousand { value "1000"; }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/food.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/food.yang
new file mode 100644
index 0000000..202d11f
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/food.yang
@@ -0,0 +1,39 @@
+module food {
+
+    yang-version 1;
+
+    namespace "ydt.food";
+
+    prefix "foodType";
+
+    organization "ON-LAB";
+
+    description "This module defines for food.";
+
+    revision "2016-06-24" {
+        description "Initial revision.";
+    }
+
+    container food {
+       choice snack {
+           case sportsarena {
+
+               leaf pretzel {
+                   type empty;
+               }
+               leaf beer {
+                   type empty;
+               }
+           }
+           case latenight {
+               leaf chocolate {
+                   type enumeration {
+                       enum dark;
+                       enum milk;
+                       enum first-available;
+                   }
+               }
+           }
+       }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/ietf-inet-types.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/ietf-inet-types.yang
new file mode 100644
index 0000000..6b994bb
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/ietf-inet-types.yang
@@ -0,0 +1,454 @@
+  module yms-ietf-inet-types {
+
+    yang-version 1;
+
+    namespace
+      "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+
+    prefix inet;
+
+    organization
+      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+    contact
+      "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+    description
+      "This module contains a collection of generally useful derived
+    YANG data types for Internet addresses and related things.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+    revision "2013-07-15" {
+      description
+        "This revision adds the following new data types:
+      - ip-address-no-zone
+      - ipv4-address-no-zone
+      - ipv6-address-no-zone";
+      reference
+        "RFC 6991: Common YANG Data Types";
+
+    }
+
+    revision "2010-09-24" {
+      description "Initial revision.";
+      reference
+        "RFC 6021: Common YANG Data Types";
+
+    }
+
+
+    typedef ip-version {
+      type enumeration {
+        enum "unknown" {
+          value 0;
+          description
+            "An unknown or unspecified version of the Internet
+          protocol.";
+        }
+        enum "ipv4" {
+          value 1;
+          description
+            "The IPv4 protocol as defined in RFC 791.";
+        }
+        enum "ipv6" {
+          value 2;
+          description
+            "The IPv6 protocol as defined in RFC 2460.";
+        }
+      }
+      description
+        "This value represents the version of the IP protocol.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetVersion textual convention of the SMIv2.";
+      reference
+        "RFC  791: Internet Protocol
+         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+         RFC 4001: Textual Conventions for Internet Network Addresses";
+
+    }
+
+    typedef dscp {
+      type uint8 {
+        range "0..63";
+      }
+      description
+        "The dscp type represents a Differentiated Services Code Point
+      that may be used for marking packets in a traffic stream.
+      In the value set and its semantics, this type is equivalent
+      to the Dscp textual convention of the SMIv2.";
+      reference
+        "RFC 3289: Management Information Base for the Differentiated
+        	  Services Architecture
+         RFC 2474: Definition of the Differentiated Services Field
+        	  (DS Field) in the IPv4 and IPv6 Headers
+         RFC 2780: IANA Allocation Guidelines For Values In
+        	  the Internet Protocol and Related Headers";
+
+    }
+
+    typedef ipv6-flow-label {
+      type uint32 {
+        range "0..1048575";
+      }
+      description
+        "The ipv6-flow-label type represents the flow identifier or Flow
+      Label in an IPv6 packet header that may be used to
+      discriminate traffic flows.
+
+      In the value set and its semantics, this type is equivalent
+      to the IPv6FlowLabel textual convention of the SMIv2.";
+      reference
+        "RFC 3595: Textual Conventions for IPv6 Flow Label
+         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+
+    }
+
+    typedef port-number {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "The port-number type represents a 16-bit port number of an
+      Internet transport-layer protocol such as UDP, TCP, DCCP, or
+      SCTP.  Port numbers are assigned by IANA.  A current list of
+      all assignments is available from <http://www.iana.org/>.
+
+      Note that the port number value zero is reserved by IANA.  In
+      situations where the value zero does not make sense, it can
+      be excluded by subtyping the port-number type.
+      In the value set and its semantics, this type is equivalent
+      to the InetPortNumber textual convention of the SMIv2.";
+      reference
+        "RFC  768: User Datagram Protocol
+         RFC  793: Transmission Control Protocol
+         RFC 4960: Stream Control Transmission Protocol
+         RFC 4340: Datagram Congestion Control Protocol (DCCP)
+         RFC 4001: Textual Conventions for Internet Network Addresses";
+
+    }
+
+    typedef as-number {
+      type uint32;
+      description
+        "The as-number type represents autonomous system numbers
+      which identify an Autonomous System (AS).  An AS is a set
+      of routers under a single technical administration, using
+      an interior gateway protocol and common metrics to route
+      packets within the AS, and using an exterior gateway
+      protocol to route packets to other ASes.  IANA maintains
+      the AS number space and has delegated large parts to the
+      regional registries.
+
+      Autonomous system numbers were originally limited to 16
+      bits.  BGP extensions have enlarged the autonomous system
+      number space to 32 bits.  This type therefore uses an uint32
+      base type without a range restriction in order to support
+      a larger autonomous system number space.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetAutonomousSystemNumber textual convention of
+      the SMIv2.";
+      reference
+        "RFC 1930: Guidelines for creation, selection, and registration
+        	  of an Autonomous System (AS)
+         RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+         RFC 4001: Textual Conventions for Internet Network Addresses
+         RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+        	  Number Space";
+
+    }
+
+    typedef ip-address {
+      type union {
+        type ipv4-address;
+        type ipv6-address;
+      }
+      description
+        "The ip-address type represents an IP address and is IP
+      version neutral.  The format of the textual representation
+      implies the IP version.  This type supports scoped addresses
+      by allowing zone identifiers in the address format.";
+      reference
+        "RFC 4007: IPv6 Scoped Address Architecture";
+
+    }
+
+    typedef ipv4-address {
+      type string {
+        pattern
+          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\p{N}\p{L}]+)?';
+      }
+      description
+        "The ipv4-address type represents an IPv4 address in
+       dotted-quad notation.  The IPv4 address may include a zone
+       index, separated by a % sign.
+
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+
+       The canonical format for the zone index is the numerical
+       format";
+    }
+
+    typedef ipv6-address {
+      type string {
+        pattern
+          '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\p{N}\p{L}]+)?';
+        pattern
+          '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?';
+      }
+      description
+        "The ipv6-address type represents an IPv6 address in full,
+      mixed, shortened, and shortened-mixed notation.  The IPv6
+      address may include a zone index, separated by a % sign.
+
+      The zone index is used to disambiguate identical address
+      values.  For link-local addresses, the zone index will
+      typically be the interface index number or the name of an
+      interface.  If the zone index is not present, the default
+      zone of the device will be used.
+
+
+
+      The canonical format of IPv6 addresses uses the textual
+      representation defined in Section 4 of RFC 5952.  The
+      canonical format for the zone index is the numerical
+      format as described in Section 11.2 of RFC 4007.";
+      reference
+        "RFC 4291: IP Version 6 Addressing Architecture
+         RFC 4007: IPv6 Scoped Address Architecture
+         RFC 5952: A Recommendation for IPv6 Address Text
+        	  Representation";
+
+    }
+
+    typedef ip-address-no-zone {
+      type union {
+        type ipv4-address-no-zone;
+        type ipv6-address-no-zone;
+      }
+      description
+        "The ip-address-no-zone type represents an IP address and is
+      IP version neutral.  The format of the textual representation
+      implies the IP version.  This type does not support scoped
+      addresses since it does not allow zone identifiers in the
+      address format.";
+      reference
+        "RFC 4007: IPv6 Scoped Address Architecture";
+
+    }
+
+    typedef ipv4-address-no-zone {
+      type ipv4-address {
+        pattern '[0-9\.]*';
+      }
+      description
+        "An IPv4 address without a zone index.  This type, derived from
+       ipv4-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+    }
+
+    typedef ipv6-address-no-zone {
+      type ipv6-address {
+        pattern '[0-9a-fA-F:\.]*';
+      }
+      description
+        "An IPv6 address without a zone index.  This type, derived from
+       ipv6-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+      reference
+        "RFC 4291: IP Version 6 Addressing Architecture
+         RFC 4007: IPv6 Scoped Address Architecture
+         RFC 5952: A Recommendation for IPv6 Address Text
+        	  Representation";
+
+    }
+
+    typedef ip-prefix {
+      type union {
+        type ipv4-prefix;
+        type ipv6-prefix;
+      }
+      description
+        "The ip-prefix type represents an IP prefix and is IP
+      version neutral.  The format of the textual representations
+      implies the IP version.";
+    }
+
+    typedef ipv4-prefix {
+      type string {
+        pattern
+          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))';
+      }
+      description
+        "The ipv4-prefix type represents an IPv4 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 32.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The canonical format of an IPv4 prefix has all bits of
+      the IPv4 address set to zero that are not part of the
+      IPv4 prefix.";
+    }
+
+    typedef ipv6-prefix {
+      type string {
+        pattern
+          '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+        pattern
+          '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)';
+      }
+      description
+        "The ipv6-prefix type represents an IPv6 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 128.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The IPv6 address should have all bits that do not belong
+      to the prefix set to zero.
+
+      The canonical format of an IPv6 prefix has all bits of
+      the IPv6 address set to zero that are not part of the
+      IPv6 prefix.  Furthermore, the IPv6 address is represented
+      as defined in Section 4 of RFC 5952.";
+      reference
+        "RFC 5952: A Recommendation for IPv6 Address Text
+        	  Representation";
+
+    }
+
+    typedef domain-name {
+      type string {
+        length "1..253";
+        pattern
+          '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)|\.';
+      }
+      description
+        "The domain-name type represents a DNS domain name.  The
+      name SHOULD be fully qualified whenever possible.
+
+      Internet domain names are only loosely specified.  Section
+      3.5 of RFC 1034 recommends a syntax (modified in Section
+      2.1 of RFC 1123).  The pattern above is intended to allow
+      for current practice in domain name use, and some possible
+      future expansion.  It is designed to hold various types of
+      domain names, including names used for A or AAAA records
+      (host names) and other records, such as SRV records.  Note
+      that Internet host names have a stricter syntax (described
+      in RFC 952) than the DNS recommendations in RFCs 1034 and
+      1123, and that systems that want to store host names in
+      schema nodes using the domain-name type are recommended to
+      adhere to this stricter standard to ensure interoperability.
+
+      The encoding of DNS names in the DNS protocol is limited
+      to 255 characters.  Since the encoding consists of labels
+      prefixed by a length bytes and there is a trailing NULL
+      byte, only 253 characters can appear in the textual dotted
+      notation.
+
+      The description clause of schema nodes using the domain-name
+      type MUST describe when and how these names are resolved to
+      IP addresses.  Note that the resolution of a domain-name value
+      may require to query multiple DNS records (e.g., A for IPv4
+      and AAAA for IPv6).  The order of the resolution process and
+      which DNS record takes precedence can either be defined
+      explicitly or may depend on the configuration of the
+      resolver.
+
+      Domain-name values use the US-ASCII encoding.  Their canonical
+      format uses lowercase US-ASCII characters.  Internationalized
+      domain names MUST be A-labels as per RFC 5890.";
+      reference
+        "RFC  952: DoD Internet Host Table Specification
+         RFC 1034: Domain Names - Concepts and Facilities
+         RFC 1123: Requirements for Internet Hosts -- Application
+        	  and Support
+         RFC 2782: A DNS RR for specifying the location of services
+        	  (DNS SRV)
+         RFC 5890: Internationalized Domain Names in Applications
+        	  (IDNA): Definitions and Document Framework";
+
+    }
+
+    typedef host {
+      type union {
+        type ip-address;
+        type domain-name;
+      }
+      description
+        "The host type represents either an IP address or a DNS
+      domain name.";
+    }
+
+    typedef uri {
+      type string;
+      description
+        "The uri type represents a Uniform Resource Identifier
+      (URI) as defined by STD 66.
+
+      Objects using the uri type MUST be in US-ASCII encoding,
+      and MUST be normalized as described by RFC 3986 Sections
+      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+      percent-encoding is removed, and all case-insensitive
+      characters are set to lowercase except for hexadecimal
+      digits, which are normalized to uppercase as described in
+      Section 6.2.2.1.
+
+      The purpose of this normalization is to help provide
+      unique URIs.  Note that this normalization is not
+      sufficient to provide uniqueness.  Two URIs that are
+      textually distinct after this normalization may still be
+      equivalent.
+
+      Objects using the uri type may restrict the schemes that
+      they permit.  For example, 'data:' and 'urn:' schemes
+      might not be appropriate.
+
+      A zero-length URI is not a valid URI.  This can be used to
+      express 'URI absent' where required.
+
+      In the value set and its semantics, this type is equivalent
+      to the Uri SMIv2 textual convention defined in RFC 5017.";
+      reference
+        "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+         RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+        	  Group: Uniform Resource Identifiers (URIs), URLs,
+        	  and Uniform Resource Names (URNs): Clarifications
+        	  and Recommendations
+         RFC 5017: MIB Textual Conventions for Uniform Resource
+        	  Identifiers (URIs)";
+
+    }
+  }  // module ietf-inet-types
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/ietf-network.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/ietf-network.yang
new file mode 100644
index 0000000..b56f6cf
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/ietf-network.yang
@@ -0,0 +1,216 @@
+   module yms-ietf-network {
+     yang-version 1;
+     namespace "urn:ietf:params:xml:ns:yang:ietf-network";
+     prefix nd;
+
+     import yms-ietf-inet-types {
+       prefix inet;
+     }
+
+     organization
+       "IETF I2RS (Interface to the Routing System) Working Group";
+
+     contact
+       "WG Web:    <http://tools.ietf.org/wg/i2rs/>
+        WG List:   <mailto:i2rs@ietf.org>
+
+        WG Chair:  Susan Hares
+                   <mailto:shares@ndzh.com>
+
+        WG Chair:  Jeffrey Haas
+                   <mailto:jhaas@pfrc.org>
+
+        Editor:    Alexander Clemm
+                   <mailto:alex@cisco.com>
+
+        Editor:    Jan Medved
+                   <mailto:jmedved@cisco.com>
+
+        Editor:    Robert Varga
+                   <mailto:rovarga@cisco.com>
+
+        Editor:    Tony Tkacik
+                   <mailto:ttkacik@cisco.com>
+
+        Editor:    Nitin Bahadur
+                   <mailto:nitin_bahadur@yahoo.com>
+
+        Editor:    Hariharan Ananthakrishnan
+                   <mailto:hari@packetdesign.com>";
+
+     description
+       "This module defines a common base model for a collection
+        of nodes in a network. Node definitions are further used
+        in network topologies and inventories.
+
+        Copyright (c) 2015 IETF Trust and the persons identified as
+        authors of the code.  All rights reserved.
+
+        Redistribution and use in source and binary forms, with or
+        without modification, is permitted pursuant to, and subject
+        to the license terms contained in, the Simplified BSD License
+        set forth in Section 4.c of the IETF Trust's Legal Provisions
+        Relating to IETF Documents
+        (http://trustee.ietf.org/license-info).
+
+        This version of this YANG module is part of
+        draft-ietf-i2rs-yang-network-topo-02;
+        see the RFC itself for full legal notices.
+
+        NOTE TO RFC EDITOR: Please replace above reference to
+        draft-ietf-i2rs-yang-network-topo-02 with RFC
+        number when published (i.e. RFC xxxx).";
+
+     revision 2015-12-08 {
+       description
+         "Initial revision.
+          NOTE TO RFC EDITOR: Please replace the following reference
+          to draft-ietf-i2rs-yang-network-topo-02 with
+          RFC number when published (i.e. RFC xxxx).";
+       reference
+         "draft-ietf-i2rs-yang-network-topo-02";
+     }
+
+     typedef node-id {
+       type inet:uri;
+       description
+         "Identifier for a node.";
+     }
+
+     typedef network-id {
+       type inet:uri;
+       description
+         "Identifier for a network.";
+     }
+     grouping network-ref {
+       description
+         "Contains the information necessary to reference a network,
+          for example an underlay network.";
+       leaf network-ref {
+         type leafref {
+           path "/nd:networks/nd:network/nd:network-id";
+         require-instance false;
+         }
+         description
+           "Used to reference a network, for example an underlay
+            network.";
+       }
+     }
+
+     grouping node-ref {
+       description
+         "Contains the information necessary to reference a node.";
+       leaf node-ref {
+         type leafref {
+           path "/nd:networks/nd:network[nd:network-id=current()/../"+
+             "network-ref]/nd:node/nd:node-id";
+           require-instance false;
+         }
+         description
+           "Used to reference a node.
+            Nodes are identified relative to the network they are
+            contained in.";
+       }
+       uses network-ref;
+     }
+
+     container networks {
+       description
+         "Serves as top-level container for a list of networks.";
+       list network {
+         key "network-id";
+         description
+           "Describes a network.
+            A network typically contains an inventory of nodes,
+            topological information (augmented through
+            network-topology model), as well as layering
+            information.";
+         container network-types {
+           description
+             "Serves as an augmentation target.
+              The network type is indicated through corresponding
+              presence containers augmented into this container.";
+         }
+         leaf network-id {
+           type inet:uri;
+           description
+             "Identifies a network.";
+         }
+         list supporting-network {
+           key "network-ref";
+           description
+             "An underlay network, used to represent layered network
+              topologies.";
+           leaf network-ref {
+             type leafref {
+               path "/networks/network/network-id";
+             require-instance false;
+             }
+             description
+               "References the underlay network.";
+           }
+         }
+         list node {
+           key "node-id";
+           description
+             "The inventory of nodes of this network.";
+           leaf node-id {
+             type node-id;
+             description
+               "Identifies a node uniquely within the containing
+                network.";
+           }
+           list supporting-node {
+             key "network-ref node-ref";
+             description
+               "Represents another node, in an underlay network, that
+                this node is supported by.  Used to represent layering
+                structure.";
+             leaf network-ref {
+               type leafref {
+                 path "../../../supporting-network/network-ref";
+               require-instance false;
+               }
+               description
+                 "References the underlay network that the
+                  underlay node is part of.";
+             }
+             leaf node-ref {
+               type leafref {
+                 path "/networks/network/node/node-id";
+               require-instance false;
+               }
+               description
+                 "References the underlay node itself.";
+             }
+           }
+         }
+       }
+     }
+     container networks-state {
+       config false;
+       description
+         "Serves as top-level container for a list of state information
+          for networks";
+       list network {
+         key "network-ref";
+         description
+           "Data nodes representing operational data and state of
+            networks.
+            An instance is automatically created for every network
+            in the corresponding list under the networks container.";
+         uses network-ref;
+         leaf server-provided {
+           type boolean;
+           description
+             "Indicates whether the information concerning this
+              particular network is populated by the server
+              (server-provided true, the general case for network
+              information discovered from the server),
+              or whether it is configured by a client
+              (server-provided true, possible e.g. for
+              service overlays managed through a controller).";
+         }
+       }
+     }
+   }
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/integer16.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer16.yang
new file mode 100644
index 0000000..8db77be
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer16.yang
@@ -0,0 +1,98 @@
+module integer16 {
+
+    yang-version 1;
+
+    namespace "ydt.integer16";
+
+    prefix "integer16";
+
+    organization "ON-LAB";
+
+    description "This module defines for integer16 classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    list multiRangeValidation {
+        config false;
+        leaf integer {
+              type int16 {
+                 range "10..40 | 50..100";
+              }
+        }
+        leaf UnInteger {
+              type uint16 {
+                 range "10..40 | 50..100";
+              }
+        }
+
+        leaf revInteger {
+              type int16 {
+                 range "min .. 2 | 10 | 20..max";
+              }
+        }
+
+        leaf revUnInteger {
+              type uint16 {
+                 range "min .. 2 | 10 | 20..max";
+              }
+        }
+    }
+
+    leaf negInt {
+          type int16 {
+         }
+    }
+
+    leaf posInt {
+          type int16 {
+         }
+    }
+
+    leaf minIntWithRange {
+          type int16 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf midIntWithRange {
+          type int16 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf maxIntWithRange {
+          type int16 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf minUInt {
+          type uint16 {
+         }
+    }
+
+    leaf maxUInt {
+          type uint16 {
+         }
+    }
+
+    leaf minUIntWithRange {
+          type uint16 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf midUIntWithRange {
+          type uint16 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf maxUIntWithRange {
+          type uint16 {
+             range "10 .. 100";
+         }
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/integer32.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer32.yang
new file mode 100644
index 0000000..fb596cf
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer32.yang
@@ -0,0 +1,98 @@
+module integer32 {
+
+    yang-version 1;
+
+    namespace "ydt.integer32";
+
+    prefix "integer32";
+
+    organization "ON-LAB";
+
+    description "This module defines for integer32 classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    list multiRangeValidation {
+        config false;
+        leaf integer {
+              type int32 {
+                 range "10..40 | 50..100";
+              }
+        }
+        leaf UnInteger {
+              type uint32 {
+                 range "10..40 | 50..100";
+              }
+        }
+
+        leaf revInteger {
+              type int32 {
+                 range "min .. 2 | 10 | 20..max";
+              }
+        }
+
+        leaf revUnInteger {
+              type uint32 {
+                 range "min .. 2 | 10 | 20..max";
+              }
+        }
+    }
+
+    leaf negInt {
+          type int32 {
+         }
+    }
+
+    leaf posInt {
+          type int32 {
+         }
+    }
+
+    leaf minIntWithRange {
+          type int32 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf midIntWithRange {
+          type int32 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf maxIntWithRange {
+          type int32 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf minUInt {
+          type uint32 {
+         }
+    }
+
+    leaf maxUInt {
+          type uint32 {
+         }
+    }
+
+    leaf minUIntWithRange {
+          type uint32 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf midUIntWithRange {
+          type uint32 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf maxUIntWithRange {
+          type uint32 {
+             range "10 .. 100";
+         }
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/integer64.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer64.yang
new file mode 100644
index 0000000..39479c6
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer64.yang
@@ -0,0 +1,98 @@
+module integer64 {
+
+    yang-version 1;
+
+    namespace "ydt.integer64";
+
+    prefix "integer64";
+
+    organization "ON-LAB";
+
+    description "This module defines for integer64 classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    list multiRangeValidation {
+        config false;
+        leaf integer {
+              type int64 {
+                 range "10..40 | 50..100";
+              }
+        }
+        leaf UnInteger {
+              type uint64 {
+                 range "10..40 | 50..100";
+              }
+        }
+
+        leaf revInteger {
+              type int64 {
+                 range "min .. 2 | 10 | 20..max";
+              }
+        }
+
+        leaf revUnInteger {
+              type uint64 {
+                 range "min .. 2 | 10 | 20..max";
+              }
+        }
+    }
+
+    leaf negInt {
+          type int64 {
+         }
+    }
+
+    leaf posInt {
+          type int64 {
+         }
+    }
+
+    leaf minIntWithRange {
+          type int64 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf midIntWithRange {
+          type int64 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf maxIntWithRange {
+          type int64 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf minUInt {
+          type uint64 {
+         }
+    }
+
+    leaf maxUInt {
+          type uint64 {
+         }
+    }
+
+    leaf minUIntWithRange {
+          type uint64 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf midUIntWithRange {
+          type uint64 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf maxUIntWithRange {
+          type uint64 {
+             range "10 .. 100";
+         }
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/integer8.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer8.yang
new file mode 100644
index 0000000..e05c235
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/integer8.yang
@@ -0,0 +1,99 @@
+module integer8 {
+
+    yang-version 1;
+
+    namespace "ydt.integer8";
+
+    prefix "integer8";
+
+    organization "ON-LAB";
+
+    description "This module defines for integer8 classifier.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    list multiRangeValidation {
+        config false;
+        leaf integer {
+              type int8 {
+                 range "10..40 | 50..100";
+              }
+        }
+        leaf UnInteger {
+              type uint8 {
+                 range "10..40 | 50..100";
+              }
+        }
+
+        leaf revInteger {
+              type int8 {
+                 range "min .. 2 | 10 | 20..max";
+              }
+        }
+
+        leaf revUnInteger {
+              type uint8 {
+                 range "min .. 2 | 10 | 20..max";
+              }
+        }
+    }
+
+
+    leaf negInt {
+          type int8 {
+         }
+    }
+
+    leaf posInt {
+          type int8 {
+         }
+    }
+
+    leaf minIntWithRange {
+          type int8 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf midIntWithRange {
+          type int8 {
+             range "10 .. 100";
+          }
+    }
+
+    leaf maxIntWithRange {
+         type int8 {
+             range "10 .. 100";
+         }
+    }
+
+    leaf minUInt {
+         type uint8 {
+         }
+    }
+
+    leaf maxUInt {
+         type uint8 {
+         }
+    }
+
+    leaf minUIntWithRange {
+          type uint8 {
+             range "10 .. 100";
+          }
+    }
+
+    leaf midUIntWithRange {
+          type uint8 {
+             range "10 .. 100";
+          }
+    }
+
+    leaf maxUIntWithRange {
+          type uint8 {
+             range "10 .. 100";
+          }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/logisticsmanager.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/logisticsmanager.yang
new file mode 100644
index 0000000..7198611
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/logisticsmanager.yang
@@ -0,0 +1,16 @@
+module logisticsmanager {
+
+    yang-version 1;
+
+    namespace "ydt.logistics-manager";
+
+    prefix "root";
+
+    organization "ON-LAB";
+
+    description "This module defines for logistics-manager.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/materialsupervisor.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/materialsupervisor.yang
new file mode 100644
index 0000000..6ab16ea
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/materialsupervisor.yang
@@ -0,0 +1,29 @@
+module materialsupervisor {
+
+    yang-version 1;
+
+    namespace "ydt.material-supervisor";
+
+    prefix "material";
+
+    organization "ON-LAB";
+
+    description "This module defines for material-supervisor.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    list supervisor {
+        key "name";
+        leaf name {
+            type string;
+            description "name of material-supervisor";
+        }
+
+        leaf departmentId {
+            type string;
+            description "name of department";
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/merchandisersupervisor.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/merchandisersupervisor.yang
new file mode 100644
index 0000000..db40c7e
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/merchandisersupervisor.yang
@@ -0,0 +1,21 @@
+module merchandisersupervisor {
+
+    yang-version 1;
+
+    namespace "ydt.Merchandiser-supervisor";
+
+    prefix "merchandiser";
+
+    organization "ON-LAB";
+
+    description "This module defines for Merchandiser-supervisor.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    leaf supervisor {
+        type string;
+        description "name of the Merchandiser-supervisor.";
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/purchasingsupervisor.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/purchasingsupervisor.yang
new file mode 100644
index 0000000..a52b4c5
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/purchasingsupervisor.yang
@@ -0,0 +1,27 @@
+module purchasingsupervisor {
+
+    yang-version 1;
+
+    namespace "ydt.purchasing-supervisor";
+
+    prefix "purchasing";
+
+    organization "ON-LAB";
+
+    description "This module defines for purchasing-supervisor.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    container supervisor {
+        leaf purchasing-specialist {
+            type string;
+            description "name of the purchasing-specialist person";
+        }
+        leaf support {
+            type string;
+            description "name of the support person";
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/rootlist.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/rootlist.yang
new file mode 100644
index 0000000..ef5a0a0
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/rootlist.yang
@@ -0,0 +1,111 @@
+module rootlist {
+
+    yang-version 1;
+
+    namespace "ydt.rootlist";
+
+    prefix "rootlist";
+
+    organization "ON-LAB";
+
+    description "This submodule defines for root.";
+
+    revision "2016-06-24" {
+        description "Initial revision.";
+    }
+/*
+                 +--------------+---------+-------------+
+                 | substatement | section | cardinality |
+                 +--------------+---------+-------------+
+                 | anyxml       | 7.10    | 0..n        |
+                 | choice       | 7.9     | 0..n        |
+                 | config       | 7.19.1  | 0..1        |
+                 | container    | 7.5     | 0..n        |
+                 | description  | 7.19.3  | 0..1        |
+                 | grouping     | 7.11    | 0..n        |
+                 | if-feature   | 7.18.2  | 0..n        |
+                 | key          | 7.8.2   | 0..1        |
+                 | leaf         | 7.6     | 0..n        |
+                 | leaf-list    | 7.7     | 0..n        |
+                 | list         | 7.8     | 0..n        |
+                 | max-elements | 7.7.4   | 0..1        |
+                 | min-elements | 7.7.3   | 0..1        |
+                 | must         | 7.5.3   | 0..n        |
+                 | ordered-by   | 7.7.5   | 0..1        |
+                 | reference    | 7.19.4  | 0..1        |
+                 | status       | 7.19.2  | 0..1        |
+                 | typedef      | 7.3     | 0..n        |
+                 | unique       | 7.8.3   | 0..n        |
+                 | uses         | 7.12    | 0..n        |
+                 | when         | 7.19.5  | 0..1        |
+                 +--------------+---------+-------------+
+*/
+
+    list listwithoutcontainer {
+        key "invalidinterval";
+        min-elements 1;  //-- comment
+        leaf invalidinterval {
+            type "uint16";
+            units "seconds";
+            description "Interval before a route is declared invalid";
+            config true;
+            mandatory true;
+            status current;
+            reference "RFC 6020";
+        }
+    }
+
+     list listwithcontainer {
+            key "invalid invalid1";
+            max-elements 3;
+            min-elements 1;
+            reference "list reference";
+            unique "invalid";
+            leaf-list invalidinterval {
+                type "uint16";
+                units "seconds";
+                description "Interval before a route is declared invalid";
+                config false;
+                status current;
+                reference "RFC 6020";
+            }
+
+            container interface {
+                leaf invalidinterval {
+                    type "uint16";
+                    units "seconds";
+                    status current;
+                    mandatory true;
+                    reference "RFC 6020";
+                }
+
+                leaf invalid {
+                    type "uint16";
+                    units "seconds";
+                    description "Interval before a route is declared invalid";
+                    default "16";
+                    status current;
+                    reference "RFC 6020";
+                }
+
+            }
+
+            leaf invalid {
+                type "uint16";
+                units "seconds";
+                description "Interval before a route is declared invalid";
+                mandatory true;
+                status current;
+                reference "RFC 6020";
+            }
+
+            leaf invalid1 {
+                type "uint16";
+                units "seconds";
+                description "Interval before a route is declared invalid";
+                mandatory true;
+                status current;
+                reference "RFC 6020";
+            }
+     }
+}
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/tradingsupervisor.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/tradingsupervisor.yang
new file mode 100644
index 0000000..a6c8681
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/tradingsupervisor.yang
@@ -0,0 +1,21 @@
+module tradingsupervisor {
+
+    yang-version 1;
+
+    namespace "ydt.trading-supervisor";
+
+    prefix "trading";
+
+    organization "ON-LAB";
+
+    description "This module defines for trading-supervisor.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    leaf supervisor {
+        type string;
+        description "name of the trading-supervisor";
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/warehousesupervisor.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/warehousesupervisor.yang
new file mode 100644
index 0000000..5145824
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/warehousesupervisor.yang
@@ -0,0 +1,21 @@
+module warehousesupervisor {
+
+    yang-version 1;
+
+    namespace "ydt.warehouse-supervisor";
+
+    prefix "warehouse";
+
+    organization "ON-LAB";
+
+    description "This module defines for warehouse-supervisor.";
+
+    revision "2016-05-24" {
+        description "Initial revision.";
+    }
+
+    leaf-list supervisor {
+        type string;
+        description "name of the warehouse-supervisor's";
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ydtTestYangFiles/yms-network-topology.yang b/apps/yms/app/src/test/resources/ydtTestYangFiles/yms-network-topology.yang
new file mode 100644
index 0000000..6b9452c
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ydtTestYangFiles/yms-network-topology.yang
@@ -0,0 +1,304 @@
+ module yms-network-topology {
+   yang-version 1;
+   namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
+   prefix lnk;
+
+   import yms-ietf-inet-types {
+     prefix inet;
+   }
+   import yms-ietf-network {
+     prefix nd;
+   }
+
+   organization
+     "IETF I2RS (Interface to the Routing System) Working Group";
+
+   contact
+     "WG Web:    <http://tools.ietf.org/wg/i2rs/>
+      WG List:   <mailto:i2rs@ietf.org>
+
+      WG Chair:  Susan Hares
+                 <mailto:shares@ndzh.com>
+
+      WG Chair:  Jeffrey Haas
+                 <mailto:jhaas@pfrc.org>
+
+      Editor:    Alexander Clemm
+                 <mailto:alex@cisco.com>
+
+      Editor:    Jan Medved
+                 <mailto:jmedved@cisco.com>
+
+      Editor:    Robert Varga
+                 <mailto:rovarga@cisco.com>
+
+      Editor:    Tony Tkacik
+                 <mailto:ttkacik@cisco.com>
+
+      Editor:    Nitin Bahadur
+                 <mailto:nitin_bahadur@yahoo.com>
+
+      Editor:    Hariharan Ananthakrishnan
+                 <mailto:hari@packetdesign.com>";
+
+   description
+     "This module defines a common base model for network topology,
+      augmenting the base network model with links to connect nodes,
+      as well as termination points to terminate links on nodes.
+
+      Copyright (c) 2015 IETF Trust and the persons identified as
+      authors of the code.  All rights reserved.
+
+      Redistribution and use in source and binary forms, with or
+      without modification, is permitted pursuant to, and subject
+      to the license terms contained in, the Simplified BSD License
+      set forth in Section 4.c of the IETF Trust's Legal Provisions
+      Relating to IETF Documents
+      (http://trustee.ietf.org/license-info).
+
+      This version of this YANG module is part of
+      draft-ietf-i2rs-yang-network-topo-02;
+      see the RFC itself for full legal notices.
+
+      NOTE TO RFC EDITOR: Please replace above reference to
+      draft-ietf-i2rs-yang-network-topo-02 with RFC
+      number when published (i.e. RFC xxxx).";
+
+   revision 2015-12-08 {
+     description
+       "Initial revision.
+        NOTE TO RFC EDITOR: Please replace the following reference
+        to draft-ietf-i2rs-yang-network-topo-02 with
+        RFC number when published (i.e. RFC xxxx).";
+     reference
+       "draft-ietf-i2rs-yang-network-topo-02.";
+   }
+
+   typedef link-id {
+     type inet:uri;
+     description
+       "An identifier for a link in a topology.
+        The identifier SHOULD be chosen such that the same link in a
+        real network topology will always be identified through the
+        same identifier, even if the model is instantiated in
+            separate datastores. An implementation MAY choose to capture
+        semantics in the identifier, for example to indicate the type
+        of link and/or the type of topology that the link is a part
+        of.";
+   }
+
+   typedef tp-id {
+     type inet:uri;
+     description
+       "An identifier for termination points on a node.
+        The identifier SHOULD be chosen such that the same TP in a
+        real network topology will always be identified through the
+        same identifier, even if the model is instantiated in
+        separate datastores. An implementation MAY choose to capture
+        semantics in the identifier, for example to indicate the type
+        of TP and/or the type of node and topology that the TP is a
+        part of.";
+   }
+   grouping link-ref {
+     description
+       "References a link in a specific network.";
+     leaf link-ref {
+       type leafref {
+         path "/nd:networks/nd:network[nd:network-id=current()/../"+
+           "network-ref]/lnk:link/lnk:link-id";
+         require-instance false;
+       }
+       description
+         "A type for an absolute reference a link instance.
+          (This type should not be used for relative references.
+          In such a case, a relative path should be used instead.)";
+     }
+     uses nd:network-ref;
+   }
+
+   grouping tp-ref {
+     description
+       "References a termination point in a specific node.";
+     leaf tp-ref {
+       type leafref {
+         path "/nd:networks/nd:network[nd:network-id=current()/../"+
+           "network-ref]/nd:node[nd:node-id=current()/../"+
+           "node-ref]/lnk:termination-point/lnk:tp-id";
+         require-instance false;
+       }
+       description
+         "A type for an absolute reference to a termination point.
+          (This type should not be used for relative references.
+          In such a case, a relative path should be used instead.)";
+     }
+     uses nd:node-ref;
+   }
+
+   augment "/nd:networks/nd:network" {
+     description
+       "Add links to the network model.";
+     list link {
+       key "link-id";
+       description
+         "A Network Link connects a by Local (Source) node and
+          a Remote (Destination) Network Nodes via a set of the
+          nodes' termination points.
+          As it is possible to have several links between the same
+          source and destination nodes, and as a link could
+          potentially be re-homed between termination points, to
+          ensure that we would always know to distinguish between
+          links, every link is identified by a dedicated link
+          identifier.
+          Note that a link models a point-to-point link, not a
+          multipoint link.
+          Layering dependencies on links in underlay topologies are
+          not represented as the layering information of nodes and of
+          termination points is sufficient.";
+       container source {
+         description
+           "This container holds the logical source of a particular
+            link.";
+         leaf source-node {
+           type leafref {
+             path "../../../nd:node/nd:node-id";
+           }
+           mandatory true;
+           description
+             "Source node identifier, must be in same topology.";
+         }
+         leaf source-tp {
+           type leafref {
+             path "../../../nd:node[nd:node-id=current()/../"+
+               "source-node]/t-point/tp-id";
+           }
+           description
+             "Termination point within source node that terminates
+              the link.";
+         }
+       }
+       container destination {
+         description
+           "This container holds the logical destination of a
+            particular link.";
+         leaf dest-node {
+           type leafref {
+             path "../../../nd:node/nd:node-id";
+           }
+           mandatory true;
+           description
+             "Destination node identifier, must be in the same
+              network.";
+         }
+         leaf dest-tp {
+           type leafref {
+             path "../../../nd:node[nd:node-id=current()/../"+
+               "dest-node]/t-point/tp-id";
+           }
+           description
+             "Termination point within destination node that
+              terminates the link.";
+         }
+       }
+       leaf link-id {
+         type link-id;
+         description
+           "The identifier of a link in the topology.
+            A link is specific to a topology to which it belongs.";
+       }
+       list supporting-link {
+         key "network-ref link-ref";
+         description
+           "Identifies the link, or links, that this link
+            is dependent on.";
+         leaf network-ref {
+           type leafref {
+             path "../../../nd:supporting-network/nd:network-ref";
+           require-instance false;
+           }
+           description
+             "This leaf identifies in which underlay topology
+              supporting link is present.";
+         }
+         leaf link-ref {
+           type leafref {
+             path "/nd:networks/nd:network[nd:network-id=current()/"+
+               "../network-ref]/link/link-id";
+             require-instance false;
+           }
+           description
+             "This leaf identifies a link which is a part
+              of this link's underlay. Reference loops, in which
+              a link identifies itself as its underlay, either
+              directly or transitively, are not allowed.";
+         }
+       }
+     }
+
+     leaf link-id {
+        type link-id;
+        description
+            "The identifier of a link in the topology.
+             A link is specific to a topology to which it belongs.";
+     }
+   }
+   augment "/nd:networks/nd:network/nd:node" {
+     description
+       "Augment termination points which terminate links.
+        Termination points can ultimately be mapped to interfaces.";
+     list t-point {
+       key "tp-id";
+       description
+         "A termination point can terminate a link.
+          Depending on the type of topology, a termination point
+          could, for example, refer to a port or an interface.";
+       leaf tp-id {
+         type tp-id;
+         description
+           "Termination point identifier.";
+       }
+       list supporting-termination-point {
+         key "network-ref node-ref tp-ref";
+         description
+           "The leaf list identifies any termination points that
+            the termination point is dependent on, or maps onto.
+            Those termination points will themselves be contained
+            in a supporting node.
+            This dependency information can be inferred from
+            the dependencies between links.  For this reason,
+            this item is not separately configurable.  Hence no
+            corresponding constraint needs to be articulated.
+            The corresponding information is simply provided by the
+            implementing system.";
+         leaf network-ref {
+           type leafref {
+             path "../../../nd:supporting-node/nd:network-ref";
+           require-instance false;
+           }
+           description
+             "This leaf identifies in which topology the
+              supporting termination point is present.";
+         }
+         leaf node-ref {
+           type leafref {
+             path "../../../nd:supporting-node/nd:node-ref";
+           require-instance false;
+           }
+           description
+             "This leaf identifies in which node the supporting
+              termination point is present.";
+         }
+         leaf tp-ref {
+           type leafref {
+             path "/nd:networks/nd:network[nd:network-id=current()/"+
+               "../network-ref]/nd:node[nd:node-id=current()/../"+
+               "node-ref]/t-point/tp-id";
+             require-instance false;
+           }
+           description
+             "Reference to the underlay node, must be in a
+              different topology";
+         }
+       }
+     }
+   }
+ }