[ONOS-5081] YANG tree builder.
Change-Id: Id47015d0cec1a446efcae6c4f3e2ffe87a0f0e0e
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput.yang
new file mode 100644
index 0000000..2e8d1b3
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput.yang
@@ -0,0 +1,20 @@
+module YtbAugmentForRpcInput {
+    yang-version 1;
+    namespace "yms:test:ytb:augment:for:rpc:input";
+    prefix "sch";
+    import YtbRpcResponseWithAdvancedInputAndOutput {
+        prefix rpc;
+    }
+    revision "2016-08-26";
+
+    augment "/rpc:activate-software-image/rpc:output/" {
+        choice selection {
+            list value-in {
+                key "kinetic";
+                leaf kinetic {
+                    type "string";
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput2.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput2.yang
new file mode 100644
index 0000000..af59b47
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput2.yang
@@ -0,0 +1,17 @@
+module YtbAugmentForRpcInput2 {
+    yang-version 1;
+    namespace "yms:test:ytb:augment:for:rpc:input";
+    prefix "sch";
+    import YtbRpcResponseWithAdvancedInputAndOutput {
+        prefix input;
+    }
+    revision "2016-08-26";
+    augment "/input:activate-software-image/input:output/" {
+        list friction {
+            key "speed";
+            leaf speed {
+                type uint64;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbAugmentFromAnotherFile.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbAugmentFromAnotherFile.yang
new file mode 100644
index 0000000..8c183c45
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbAugmentFromAnotherFile.yang
@@ -0,0 +1,41 @@
+module YtbAugmentFromAnotherFile {
+    yang-version 1;
+    namespace "yms:test:ytb:augment:from:another:file";
+    prefix "sch";
+    import yms-ietf-network {
+        prefix nd;
+    }
+    revision "2016-08-26";
+
+    augment "/nd:networks/nd:network/nd:node" {
+        list termination-point {
+            key "tp-id";
+            leaf tp-id {
+                type string;
+            }
+            list supporting-termination-point {
+                key "network-ref node-ref tp-ref";
+                leaf network-ref {
+                    type leafref {
+                        path "../../../nd:supporting-node/nd:network-ref";
+                        require-instance false;
+                    }
+                }
+                leaf node-ref {
+                    type leafref {
+                        path "../../../nd:supporting-node/nd:node-ref";
+                        require-instance false;
+                    }
+                }
+                leaf tp-ref {
+                    type leafref {
+                        path "/nd:networks/nd:network[nd:network-id=current()/"+
+                            "../network-ref]/nd:node[nd:node-id=current()/../"+
+                            "node-ref]/termination-point/tp-id";
+                        require-instance false;
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbChoiceWithContainerAndLeafList.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbChoiceWithContainerAndLeafList.yang
new file mode 100644
index 0000000..9ae462e
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbChoiceWithContainerAndLeafList.yang
@@ -0,0 +1,76 @@
+module YtbChoiceWithContainerAndLeafList {
+    yang-version 1;
+    namespace "yms:test:ytb:choice:with:container:and:leaf:list";
+    prefix "sch";
+    revision "2016-08-26";
+    leaf refer {
+        type binary;
+    }
+    rpc invalid1 {
+        input {
+            leaf value {
+                type string;
+            }
+        }
+        output {
+            leaf value {
+                type string;
+            }
+        }
+    }
+    choice content-test {
+        leaf-list list-items {
+            type leafref {
+                path "/refer";
+            }
+        }
+        container choice-container {
+            list predict {
+                config "false";
+                container reproduce {
+                    leaf catch {
+                        type int16;
+                    }
+                }
+            }
+        }
+        case valid {
+            list validlistincase {
+                config "false";
+                leaf validity {
+                    type int32;
+                }
+            }
+        }
+        case invalid {
+            leaf create-invalid {
+                type uint16;
+            }
+        }
+    }
+    notification invalid {
+        leaf value {
+            type string;
+        }
+    }
+    notification invalid2 {
+        list node {
+            config false;
+            leaf value {
+                type string;
+            }
+        }
+    }
+    choice current-value {
+        case ytb-present {
+            leaf-list represent {
+                type uint32;
+            }
+        }
+        case ytb-absent {
+            leaf-list final {
+                type instance-identifier;
+            }
+        }
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbDerivedTypeWithBitsAndBinary.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbDerivedTypeWithBitsAndBinary.yang
new file mode 100644
index 0000000..1ca30a4
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbDerivedTypeWithBitsAndBinary.yang
@@ -0,0 +1,56 @@
+module YtbDerivedTypeWithBitsAndBinary {
+    yang-version 1;
+    namespace "yms:test:ytb:derived:type:with:bits:and:binary";
+    prefix "sch";
+    revision "2016-08-26";
+
+    typedef derivedbinarya {
+        type derivedbinaryb;
+    }
+
+    typedef derivedbinaryb {
+        type binary;
+    }
+
+    typedef derivedbitsa {
+        type derivedbitsb;
+    }
+
+    typedef derivedbitsb {
+        type bits {
+            bit index {
+                position 1;
+            }
+            bit name {
+                position 10;
+            }
+            bit signature {
+                position 100;
+            }
+        }
+    }
+
+    leaf forbinary {
+        type derivedbinarya;
+    }
+
+    leaf forbits {
+        type derivedbitsa;
+    }
+
+    leaf-list forbinarylist {
+        type derivedbinarya;
+    }
+
+    leaf-list forbitslist {
+        type derivedbitsa;
+    }
+
+    leaf forunion {
+        type union {
+            type binary;
+            type int8;
+        }
+    }
+}
+
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbIetfSchedule.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbIetfSchedule.yang
new file mode 100644
index 0000000..84c908b
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbIetfSchedule.yang
@@ -0,0 +1,29 @@
+module YtbIetfSchedule {
+    yang-version 1;
+    namespace "yms:test:ytb:module:with:leaf:ietfschedule";
+    prefix "sch";
+    revision "2016-08-26";
+        leaf time {
+            type int8;
+        }
+        leaf enum1 {
+        type enumeration {
+                      enum ten { value "10";}
+                      enum hundred { value "100";}
+                      enum thousand { value "1000"; }
+                    }
+        }
+        leaf-list enum2 {
+        type enumeration {
+                      enum ten-10 { value "10";}
+                      enum hundred-100 { value "100";}
+                      enum thousand-1000 { value "1000"; }
+                    }
+        }
+    container monitor {
+        leaf check {
+            type uint8;
+        }
+    }
+}
+
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbModuleWithContainer.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbModuleWithContainer.yang
new file mode 100644
index 0000000..b0d19b8
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbModuleWithContainer.yang
@@ -0,0 +1,13 @@
+module YtbModuleWithContainer {
+    yang-version 1;
+    namespace "yms:test:ytb:module:with:container";
+    prefix "sch";
+    revision "2016-08-26";
+    container sched {
+        leaf predict {
+            type decimal64 {
+            fraction-digits 2;
+            }
+        }
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbModuleWithLeafList.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbModuleWithLeafList.yang
new file mode 100644
index 0000000..3d02384
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbModuleWithLeafList.yang
@@ -0,0 +1,9 @@
+module YtbModuleWithLeafList {
+    yang-version 1;
+    namespace "yms:test:ytb:module:with:leaflist";
+    prefix "sch";
+    revision "2016-08-26";
+    leaf-list time {
+        type int64;
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbModuleWithList.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbModuleWithList.yang
new file mode 100644
index 0000000..297a8f4
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbModuleWithList.yang
@@ -0,0 +1,15 @@
+module YtbModuleWithList {
+    yang-version 1;
+    namespace "yms:test:ytb:module:with:list";
+    prefix "sch";
+    revision "2016-08-26";
+    list ytblistlist {
+        config false;
+        leaf-list prediction {
+            type find;
+        }
+    }
+    typedef find {
+        type boolean;
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbMultiModulea.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbMultiModulea.yang
new file mode 100644
index 0000000..523f400
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbMultiModulea.yang
@@ -0,0 +1,12 @@
+module YtbMultiModulea {
+    yang-version 1;
+    namespace "yms:test:ytb:multi:module:a";
+    prefix "sch";
+    revision "2016-08-26";
+    list ytbmultilist {
+        config false;
+        leaf-list check {
+            type uint64;
+        }
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbMultiModuleb.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbMultiModuleb.yang
new file mode 100644
index 0000000..7c2c257
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbMultiModuleb.yang
@@ -0,0 +1,12 @@
+module YtbMultiModuleb {
+    yang-version 1;
+    namespace "yms:test:ytb:multi:module:b";
+    prefix "sch";
+    revision "2016-08-26";
+    list ytbmultilistb {
+        config false;
+        leaf-list checkin {
+            type string;
+        }
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbMultiNotificationWithContainer.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbMultiNotificationWithContainer.yang
new file mode 100644
index 0000000..9a66110
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbMultiNotificationWithContainer.yang
@@ -0,0 +1,31 @@
+module YtbMultiNotificationWithContainer {
+    yang-version 1;
+    namespace "yms:test:ytb:multi:notification:with:container";
+    prefix "sch";
+    revision "2016-08-26";
+    notification fortesta {
+        container ytbnot {
+            leaf notileaf {
+                type bits {
+                    bit leaf1 {
+                        position 0;
+                    }
+                    bit leaf2 {
+                        position 1;
+                    }
+                }
+            }
+        }
+    }
+    list cumulative {
+        key "sum";
+        leaf sum {
+            type int8;
+        }
+    }
+    notification fortestb {
+        leaf-list notileaflist {
+            type empty;
+        }
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbRpcResponseWithAdvancedInputAndOutput.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbRpcResponseWithAdvancedInputAndOutput.yang
new file mode 100644
index 0000000..c9f708e
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbRpcResponseWithAdvancedInputAndOutput.yang
@@ -0,0 +1,39 @@
+module YtbRpcResponseWithAdvancedInputAndOutput {
+    yang-version 1;
+    namespace "yms:test:ytb:rpc:response:with:advanced:input:and:output";
+    prefix "sch";
+    revision "2016-08-26";
+    leaf refer {
+        type binary;
+    }
+    rpc activate-software-image {
+        input {
+            container final {
+                leaf-list value {
+                    type uint16;
+                }
+            }
+        }
+        output {
+            list output-list {
+                key "list-key";
+                leaf list-key {
+                    type leafref {
+                        path "/refer";
+                    }
+                }
+                container content_inside {
+                    leaf-list available {
+                        type int16;
+                    }
+                }
+            }
+        }
+    }
+    list cumulative {
+        key "sum";
+        leaf sum {
+            type int8;
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbSimpleAugment.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbSimpleAugment.yang
new file mode 100644
index 0000000..919d5ed
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbSimpleAugment.yang
@@ -0,0 +1,26 @@
+module YtbSimpleAugment {
+    yang-version 1;
+    namespace "yms:test:ytb:simple:augment";
+    prefix "sch";
+    revision "2016-08-26";
+    container cont1 {
+        container cont2 {
+            leaf fine {
+                type string;
+            }
+        }
+     }
+
+    augment /cont1/cont2 {
+        leaf leaf4 {
+            type int32;
+        }
+        container cont1s {
+            container cont1s {
+                leaf fine {
+                    type string;
+                }
+            }
+        }
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbSimpleChoiceCase.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbSimpleChoiceCase.yang
new file mode 100644
index 0000000..818d04e
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbSimpleChoiceCase.yang
@@ -0,0 +1,23 @@
+module YtbSimpleChoiceCase {
+    yang-version 1;
+    namespace "yms:test:ytb:simple:choice:case";
+    prefix "sch";
+    revision "2016-08-26";
+    container YtbFood {
+       choice YtbSnack {
+           case ytb-sports-arena {
+               leaf pretzel {
+                   type string;
+               }
+               leaf beer {
+                   type string;
+               }
+           }
+           case ytb-late-night {
+               leaf chocolate {
+                   type string;
+               }
+           }
+       }
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbSimpleRpcResponse.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbSimpleRpcResponse.yang
new file mode 100644
index 0000000..7aaa50f
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbSimpleRpcResponse.yang
@@ -0,0 +1,26 @@
+module YtbSimpleRpcResponse {
+    yang-version 1;
+    namespace "yms:test:ytb:simple:rpc:response";
+    prefix "sch";
+    revision "2016-08-26";
+    container ytb-rpc-cont {
+        leaf vary {
+            type uint8;
+        }
+    }
+    rpc rpc {
+        input {
+        }
+        output {
+            leaf output-leaf {
+                type uint32;
+            }
+        }
+    }
+    list cumulative {
+        key "sum";
+        leaf sum {
+            type int8;
+        }
+    }
+}
diff --git a/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbTreeBuilderForListHavingList.yang b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbTreeBuilderForListHavingList.yang
new file mode 100644
index 0000000..bd58e30
--- /dev/null
+++ b/apps/yms/app/src/test/resources/ytbTestYangFiles/YtbTreeBuilderForListHavingList.yang
@@ -0,0 +1,26 @@
+module YtbTreeBuilderForListHavingList {
+    yang-version 1;
+    namespace "yms:test:ytb:tree:builder:for:list:having:list";
+    prefix "sch";
+    revision "2016-08-26";
+    container carrier {
+        list multiplexes {
+            key "types";
+            list application-areas {
+                config false;
+                leaf-list destination-areas {
+                    type binary;
+                }
+            }
+            leaf types {
+                type enumeration {
+                    enum space-division;
+                    enum frequency-division;
+                    enum time-division {
+                        value 3;
+                    }
+                }
+            }
+        }
+    }
+}