2 * Copyright (c) 2014, 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.md.cluster.datastore.model;
10 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.leafNode;
11 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapEntry;
12 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapEntryBuilder;
13 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapNodeBuilder;
16 import org.opendaylight.yangtools.yang.common.QName;
17 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
18 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
19 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
20 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
21 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
22 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
23 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
24 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
25 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
27 public final class CompositeModel {
28 public static final QName TEST_QNAME = QName.create(
29 "urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test", "2014-03-13", "test");
31 public static final QName AUG_QNAME = QName.create(
32 "urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:aug", "2014-03-13", "name");
34 public static final QName AUG_CONTAINER = QName.create(AUG_QNAME, "aug-container");
35 public static final QName AUG_INNER_CONTAINER = QName.create(AUG_QNAME, "aug-inner-container");
36 public static final QName DESC_QNAME = QName.create(TEST_QNAME, "desc");
37 public static final QName OUTER_LIST_QNAME = QName.create(TEST_QNAME, "outer-list");
38 public static final QName INNER_LIST_QNAME = QName.create(TEST_QNAME, "inner-list");
39 public static final QName OUTER_CHOICE_QNAME = QName.create(TEST_QNAME, "outer-choice");
40 public static final QName ID_QNAME = QName.create(TEST_QNAME, "id");
41 public static final QName NAME_QNAME = QName.create(TEST_QNAME, "name");
42 public static final QName VALUE_QNAME = QName.create(TEST_QNAME, "value");
43 private static final String DATASTORE_TEST_YANG = "/odl-datastore-test.yang";
44 private static final String DATASTORE_AUG_YANG = "/odl-datastore-augmentation.yang";
45 private static final String DATASTORE_TEST_NOTIFICATION_YANG = "/odl-datastore-test-notification.yang";
47 public static final YangInstanceIdentifier TEST_PATH = YangInstanceIdentifier.of(TEST_QNAME);
48 public static final YangInstanceIdentifier DESC_PATH = YangInstanceIdentifier.builder(TEST_PATH).node(DESC_QNAME)
50 public static final YangInstanceIdentifier OUTER_LIST_PATH = YangInstanceIdentifier.builder(TEST_PATH)
51 .node(OUTER_LIST_QNAME).build();
52 public static final QName TWO_QNAME = QName.create(TEST_QNAME, "two");
53 public static final QName THREE_QNAME = QName.create(TEST_QNAME, "three");
55 private static final Integer ONE_ID = 1;
56 private static final Integer TWO_ID = 2;
57 private static final String TWO_ONE_NAME = "one";
58 private static final String TWO_TWO_NAME = "two";
59 private static final String DESC = "Hello there";
61 // Family specific constants
62 public static final QName FAMILY_QNAME = QName.create(
63 "urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:notification-test", "2014-04-17",
65 public static final QName CHILDREN_QNAME = QName.create(FAMILY_QNAME, "children");
66 public static final QName GRAND_CHILDREN_QNAME = QName.create(FAMILY_QNAME, "grand-children");
67 public static final QName CHILD_NUMBER_QNAME = QName.create(FAMILY_QNAME, "child-number");
68 public static final QName CHILD_NAME_QNAME = QName.create(FAMILY_QNAME, "child-name");
69 public static final QName GRAND_CHILD_NUMBER_QNAME = QName.create(FAMILY_QNAME, "grand-child-number");
70 public static final QName GRAND_CHILD_NAME_QNAME = QName.create(FAMILY_QNAME, "grand-child-name");
72 public static final YangInstanceIdentifier FAMILY_PATH = YangInstanceIdentifier.of(FAMILY_QNAME);
73 public static final YangInstanceIdentifier FAMILY_DESC_PATH = YangInstanceIdentifier.builder(FAMILY_PATH)
74 .node(DESC_QNAME).build();
75 public static final YangInstanceIdentifier CHILDREN_PATH = YangInstanceIdentifier.builder(FAMILY_PATH)
76 .node(CHILDREN_QNAME).build();
78 private static final Integer FIRST_CHILD_ID = 1;
79 private static final Integer SECOND_CHILD_ID = 2;
81 private static final String FIRST_CHILD_NAME = "first child";
82 private static final String SECOND_CHILD_NAME = "second child";
84 private static final Integer FIRST_GRAND_CHILD_ID = 1;
85 private static final Integer SECOND_GRAND_CHILD_ID = 2;
87 private static final String FIRST_GRAND_CHILD_NAME = "first grand child";
88 private static final String SECOND_GRAND_CHILD_NAME = "second grand child";
90 private static final MapEntryNode BAR_NODE = mapEntryBuilder(OUTER_LIST_QNAME, ID_QNAME, TWO_ID)
91 .withChild(mapNodeBuilder(INNER_LIST_QNAME)
92 .withChild(mapEntry(INNER_LIST_QNAME, NAME_QNAME, TWO_ONE_NAME))
93 .withChild(mapEntry(INNER_LIST_QNAME, NAME_QNAME, TWO_TWO_NAME))
97 private CompositeModel() {
101 public static SchemaContext createTestContext() {
102 return YangParserTestUtils.parseYangResources(CompositeModel.class, DATASTORE_TEST_YANG, DATASTORE_AUG_YANG,
103 DATASTORE_TEST_NOTIFICATION_YANG);
106 public static ContainerNode createTestContainer() {
107 return Builders.containerBuilder()
108 .withNodeIdentifier(new NodeIdentifier(TEST_QNAME))
109 .withChild(leafNode(DESC_QNAME, DESC))
110 .withChild(Builders.augmentationBuilder()
111 .withNodeIdentifier(new AugmentationIdentifier(Set.of(AUG_QNAME)))
112 .withChild(leafNode(AUG_QNAME, "First Test"))
114 .withChild(Builders.leafSetBuilder()
115 .withNodeIdentifier(new NodeIdentifier(QName.create(TEST_QNAME, "shoe")))
116 .withChild(Builders.leafSetEntryBuilder()
117 .withNodeIdentifier(new NodeWithValue<>(QName.create(TEST_QNAME, "shoe"), "nike"))
120 .withChild(Builders.leafSetEntryBuilder()
121 .withNodeIdentifier(new NodeWithValue<>(QName.create(TEST_QNAME, "shoe"), "puma"))
125 .withChild(Builders.leafSetBuilder()
126 .withNodeIdentifier(new NodeIdentifier(QName.create(TEST_QNAME, "number")))
127 .withChild(Builders.leafSetEntryBuilder()
128 .withNodeIdentifier(new NodeWithValue<>(QName.create(TEST_QNAME, "number"), 5))
131 .withChild(Builders.leafSetEntryBuilder()
132 .withNodeIdentifier(new NodeWithValue<>(QName.create(TEST_QNAME, "number"), 15))
136 .withChild(mapNodeBuilder(OUTER_LIST_QNAME)
137 .withChild(mapEntry(OUTER_LIST_QNAME, ID_QNAME, ONE_ID))
143 public static ContainerNode createFamily() {
144 final var firstGrandChild =
145 mapEntryBuilder(GRAND_CHILDREN_QNAME, GRAND_CHILD_NUMBER_QNAME, FIRST_GRAND_CHILD_ID)
146 .withChild(leafNode(GRAND_CHILD_NUMBER_QNAME, FIRST_GRAND_CHILD_ID))
147 .withChild(leafNode(GRAND_CHILD_NAME_QNAME, FIRST_GRAND_CHILD_NAME))
150 return Builders.containerBuilder()
151 .withNodeIdentifier(new NodeIdentifier(FAMILY_QNAME))
152 .withChild(mapNodeBuilder(CHILDREN_QNAME)
153 .withChild(mapEntryBuilder(CHILDREN_QNAME, CHILD_NUMBER_QNAME, FIRST_CHILD_ID)
154 .withChild(leafNode(CHILD_NUMBER_QNAME, FIRST_CHILD_ID))
155 .withChild(leafNode(CHILD_NAME_QNAME, FIRST_CHILD_NAME))
156 .withChild(mapNodeBuilder(GRAND_CHILDREN_QNAME).withChild(firstGrandChild).build())
158 .withChild(mapEntryBuilder(CHILDREN_QNAME, CHILD_NUMBER_QNAME, SECOND_CHILD_ID)
159 .withChild(leafNode(CHILD_NUMBER_QNAME, SECOND_CHILD_ID))
160 .withChild(leafNode(CHILD_NAME_QNAME, SECOND_CHILD_NAME))
161 .withChild(mapNodeBuilder(GRAND_CHILDREN_QNAME).withChild(firstGrandChild).build())