2 * Copyright (c) 2014 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.yangtools.yang.model.util.ut;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertNull;
15 import org.junit.Test;
16 import org.opendaylight.yangtools.yang.common.QName;
17 import org.opendaylight.yangtools.yang.common.Revision;
18 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
19 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
20 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
21 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
22 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
23 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
24 import org.opendaylight.yangtools.yang.model.api.Module;
25 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
26 import org.opendaylight.yangtools.yang.model.api.PathExpression;
27 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
28 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
29 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
30 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
31 import org.opendaylight.yangtools.yang.model.util.PathExpressionImpl;
32 import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
33 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
35 public class SchemaContextUtilTest {
37 public void findNodeInSchemaContextTest() {
38 final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/schema-context-util");
40 final Module myModule = context.findModule(URI.create("uri:my-module"), Revision.of("2014-10-07")).get();
42 SchemaNode testNode = ((ContainerSchemaNode) myModule.getDataChildByName(QName.create(
43 myModule.getQNameModule(), "my-container"))).getDataChildByName(QName.create(myModule.getQNameModule(),
44 "my-leaf-in-container"));
46 SchemaPath path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-container"),
47 QName.create(myModule.getQNameModule(), "my-leaf-in-container"));
48 SchemaNode foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
50 assertNotNull(testNode);
51 assertNotNull(foundNode);
52 assertEquals(testNode, foundNode);
54 RpcDefinition rpc = getRpcByName(myModule, "my-rpc");
55 testNode = rpc.getInput().getDataChildByName(QName.create(myModule.getQNameModule(), "my-input-leaf"));
57 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-rpc"),
58 QName.create(myModule.getQNameModule(), "input"),
59 QName.create(myModule.getQNameModule(), "my-input-leaf"));
61 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
63 assertNotNull(testNode);
64 assertNotNull(foundNode);
65 assertEquals(testNode, foundNode);
67 rpc = getRpcByName(myModule, "my-rpc");
68 testNode = rpc.getOutput().getDataChildByName(QName.create(myModule.getQNameModule(), "my-output-leaf"));
70 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-rpc"),
71 QName.create(myModule.getQNameModule(), "output"),
72 QName.create(myModule.getQNameModule(), "my-output-leaf"));
74 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
76 assertNotNull(testNode);
77 assertNotNull(foundNode);
78 assertEquals(testNode, foundNode);
80 final NotificationDefinition notification = myModule.getNotifications().iterator().next();
81 testNode = notification.getDataChildByName(QName.create(myModule.getQNameModule(), "my-notification-leaf"));
83 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-notification"),
84 QName.create(myModule.getQNameModule(), "my-notification-leaf"));
86 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
88 assertNotNull(testNode);
89 assertNotNull(foundNode);
90 assertEquals(testNode, foundNode);
92 final GroupingDefinition grouping = getGroupingByName(myModule, "my-grouping");
93 testNode = ((ContainerSchemaNode) grouping.getDataChildByName(QName.create(myModule.getQNameModule(),
94 "my-container-in-grouping"))).getDataChildByName(QName.create(myModule.getQNameModule(),
95 "my-leaf-in-grouping"));
97 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-grouping"),
98 QName.create(myModule.getQNameModule(), "my-container-in-grouping"),
99 QName.create(myModule.getQNameModule(), "my-leaf-in-grouping"));
101 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
103 assertNotNull(testNode);
104 assertNotNull(foundNode);
105 assertEquals(testNode, foundNode);
107 testNode = ((ChoiceSchemaNode) myModule
108 .getDataChildByName(QName.create(myModule.getQNameModule(), "my-choice")))
109 .findCaseNodes("one").iterator().next()
110 .getDataChildByName(QName.create(myModule.getQNameModule(), "my-choice-leaf-one"));
112 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-choice"),
113 QName.create(myModule.getQNameModule(), "one"),
114 QName.create(myModule.getQNameModule(), "my-choice-leaf-one"));
115 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
117 assertNotNull(testNode);
118 assertNotNull(foundNode);
119 assertEquals(testNode, foundNode);
121 ListSchemaNode listNode = (ListSchemaNode) ((ContainerSchemaNode) myModule.getDataChildByName(QName.create(
122 myModule.getQNameModule(), "my-container"))).getDataChildByName(QName.create(myModule.getQNameModule(),
125 testNode = listNode.getDataChildByName(QName.create(myModule.getQNameModule(), "my-leaf-in-list"));
127 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-container"),
128 QName.create(myModule.getQNameModule(), "my-list"),
129 QName.create(myModule.getQNameModule(), "my-leaf-in-list"));
130 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
132 assertNotNull(testNode);
133 assertNotNull(foundNode);
134 assertEquals(testNode, foundNode);
136 listNode = (ListSchemaNode) ((ContainerSchemaNode) myModule.getDataChildByName(QName.create(
137 myModule.getQNameModule(), "my-container"))).getDataChildByName(QName.create(myModule.getQNameModule(),
140 testNode = listNode.getDataChildByName(QName.create(myModule.getQNameModule(), "my-leaf-list-in-list"));
142 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-container"),
143 QName.create(myModule.getQNameModule(), "my-list"),
144 QName.create(myModule.getQNameModule(), "my-leaf-list-in-list"));
145 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
147 assertNotNull(testNode);
148 assertNotNull(foundNode);
149 assertEquals(testNode, foundNode);
154 public void findNodeInSchemaContextTest2() {
156 final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/schema-context-util");
158 final Module myModule = context.findModule(URI.create("uri:my-module"), Revision.of("2014-10-07")).get();
160 SchemaNode testNode = ((ContainerSchemaNode) myModule.getDataChildByName(QName.create(
161 myModule.getQNameModule(), "my-container"))).getDataChildByName(QName.create(myModule.getQNameModule(),
162 "my-leaf-not-in-container"));
164 SchemaPath path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-container"),
165 QName.create(myModule.getQNameModule(), "my-leaf-not-in-container"));
166 SchemaNode foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
168 assertNull(testNode);
169 assertNull(foundNode);
171 final RpcDefinition rpc = getRpcByName(myModule, "my-rpc");
172 testNode = rpc.getInput().getDataChildByName(QName.create(myModule.getQNameModule(), "no-input-leaf"));
174 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-rpc"),
175 QName.create(myModule.getQNameModule(), "input"),
176 QName.create(myModule.getQNameModule(), "no-input-leaf"));
178 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
180 assertNull(testNode);
181 assertNull(foundNode);
183 final NotificationDefinition notification = myModule.getNotifications().iterator().next();
184 testNode = notification.getDataChildByName(QName.create(myModule.getQNameModule(), "no-notification-leaf"));
186 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-notification"),
187 QName.create(myModule.getQNameModule(), "no-notification-leaf"));
189 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
191 assertNull(testNode);
192 assertNull(foundNode);
194 final GroupingDefinition grouping = getGroupingByName(myModule, "my-grouping");
195 testNode = ((ContainerSchemaNode) grouping.getDataChildByName(QName.create(myModule.getQNameModule(),
196 "my-container-in-grouping"))).getDataChildByName(QName.create(myModule.getQNameModule(),
197 "no-leaf-in-grouping"));
199 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-grouping"),
200 QName.create(myModule.getQNameModule(), "my-container-in-grouping"),
201 QName.create(myModule.getQNameModule(), "no-leaf-in-grouping"));
203 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
205 assertNull(testNode);
206 assertNull(foundNode);
208 testNode = ((ChoiceSchemaNode) myModule
209 .getDataChildByName(QName.create(myModule.getQNameModule(), "my-choice")))
210 .findCaseNodes("one").iterator().next()
211 .getDataChildByName(QName.create(myModule.getQNameModule(), "no-choice-leaf"));
213 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-choice"),
214 QName.create(myModule.getQNameModule(), "one"),
215 QName.create(myModule.getQNameModule(), "no-choice-leaf"));
216 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
218 assertNull(testNode);
219 assertNull(foundNode);
221 ListSchemaNode listNode = (ListSchemaNode) ((ContainerSchemaNode) myModule.getDataChildByName(QName.create(
222 myModule.getQNameModule(), "my-container"))).getDataChildByName(QName.create(myModule.getQNameModule(),
225 testNode = listNode.getDataChildByName(QName.create(myModule.getQNameModule(), "no-leaf-in-list"));
227 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-container"),
228 QName.create(myModule.getQNameModule(), "my-list"),
229 QName.create(myModule.getQNameModule(), "no-leaf-in-list"));
230 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
232 assertNull(testNode);
233 assertNull(foundNode);
235 listNode = (ListSchemaNode) ((ContainerSchemaNode) myModule.getDataChildByName(QName.create(
236 myModule.getQNameModule(), "my-container"))).getDataChildByName(QName.create(myModule.getQNameModule(),
239 testNode = listNode.getDataChildByName(QName.create(myModule.getQNameModule(), "no-leaf-list-in-list"));
241 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-container"),
242 QName.create(myModule.getQNameModule(), "my-list"),
243 QName.create(myModule.getQNameModule(), "no-leaf-list-in-list"));
244 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
246 assertNull(testNode);
247 assertNull(foundNode);
252 public void findNodeInSchemaContextTest3() {
254 final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/schema-context-util");
256 final Module myModule = context.findModule(URI.create("uri:my-module"), Revision.of("2014-10-07")).get();
258 SchemaNode testNode = myModule.getDataChildByName(QName.create(myModule.getQNameModule(), "my-container"));
260 SchemaPath path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-container"));
261 SchemaNode foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
263 assertNotNull(testNode);
264 assertNotNull(foundNode);
265 assertEquals(testNode, foundNode);
267 testNode = getRpcByName(myModule, "my-rpc");
269 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-rpc"));
270 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
272 assertNotNull(testNode);
273 assertNotNull(foundNode);
274 assertEquals(testNode, foundNode);
276 testNode = myModule.getNotifications().iterator().next();
278 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-notification"));
279 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
281 assertNotNull(testNode);
282 assertNotNull(foundNode);
283 assertEquals(testNode, foundNode);
285 testNode = getGroupingByName(myModule, "my-grouping");
287 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-grouping"));
288 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
290 assertNotNull(testNode);
291 assertNotNull(foundNode);
292 assertEquals(testNode, foundNode);
294 testNode = myModule.getDataChildByName(QName.create(myModule.getQNameModule(), "my-choice"));
296 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-choice"));
297 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
299 assertNotNull(testNode);
300 assertNotNull(foundNode);
301 assertEquals(testNode, foundNode);
303 testNode = ((ContainerSchemaNode) myModule.getDataChildByName(QName.create(myModule.getQNameModule(),
304 "my-container"))).getDataChildByName(QName.create(myModule.getQNameModule(), "my-list"));
306 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-container"),
307 QName.create(myModule.getQNameModule(), "my-list"));
308 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
310 assertNotNull(testNode);
311 assertNotNull(foundNode);
312 assertEquals(testNode, foundNode);
317 public void findParentModuleTest() {
319 final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/schema-context-util");
321 final Module myModule = context.findModule(URI.create("uri:my-module"), Revision.of("2014-10-07")).get();
323 final DataSchemaNode node = myModule.getDataChildByName(QName.create(myModule.getQNameModule(),
326 final Module foundModule = SchemaContextUtil.findParentModule(context, node);
328 assertEquals(myModule, foundModule);
332 public void findDataSchemaNodeTest() {
333 final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/schema-context-util");
334 final Module module = context.findModule(URI.create("uri:my-module"), Revision.of("2014-10-07")).get();
335 final Module importedModule = context.findModule(URI.create("uri:imported-module"),
336 Revision.of("2014-10-07")).get();
338 final SchemaNode testNode = ((ContainerSchemaNode) importedModule.getDataChildByName(QName.create(
339 importedModule.getQNameModule(), "my-imported-container"))).getDataChildByName(QName.create(
340 importedModule.getQNameModule(), "my-imported-leaf"));
342 final PathExpression xpath = new PathExpressionImpl("imp:my-imported-container/imp:my-imported-leaf", true);
344 final SchemaNode foundNode = SchemaContextUtil.findDataSchemaNode(context, module, xpath);
346 assertNotNull(foundNode);
347 assertNotNull(testNode);
348 assertEquals(testNode, foundNode);
352 public void findDataSchemaNodeTest2() {
353 final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/schema-context-util");
354 final Module module = context.findModule(URI.create("uri:my-module"), Revision.of("2014-10-07")).get();
356 final GroupingDefinition grouping = getGroupingByName(module, "my-grouping");
357 final SchemaNode testNode = grouping.getDataChildByName(QName.create(module.getQNameModule(),
358 "my-leaf-in-gouping2"));
360 final PathExpression xpath = new PathExpressionImpl("my:my-grouping/my:my-leaf-in-gouping2", true);
362 final SchemaNode foundNode = SchemaContextUtil.findDataSchemaNode(context, module, xpath);
364 assertNotNull(foundNode);
365 assertNotNull(testNode);
366 assertEquals(testNode, foundNode);
371 public void findNodeInSchemaContextGroupingsTest() {
372 final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/schema-context-util");
373 final Module myModule = context.findModule(URI.create("uri:my-module"), Revision.of("2014-10-07")).get();
375 // find grouping in container
376 DataNodeContainer dataContainer = (DataNodeContainer) myModule.getDataChildByName(QName.create(
377 myModule.getQNameModule(), "my-container"));
378 SchemaNode testNode = getGroupingByName(dataContainer, "my-grouping-in-container");
380 SchemaPath path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-container"),
381 QName.create(myModule.getQNameModule(), "my-grouping-in-container"));
382 SchemaNode foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
384 assertNotNull(testNode);
385 assertNotNull(foundNode);
386 assertEquals(testNode, foundNode);
388 testNode = ((GroupingDefinition) testNode).getDataChildByName(QName.create(myModule.getQNameModule(),
389 "my-leaf-in-grouping-in-container"));
390 path = path.createChild(QName.create(myModule.getQNameModule(), "my-leaf-in-grouping-in-container"));
392 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
394 assertNotNull(testNode);
395 assertNotNull(foundNode);
396 assertEquals(testNode, foundNode);
398 // find grouping in list
399 dataContainer = (DataNodeContainer) ((DataNodeContainer) myModule.getDataChildByName(QName.create(
400 myModule.getQNameModule(), "my-container"))).getDataChildByName(QName.create(myModule.getQNameModule(),
402 testNode = getGroupingByName(dataContainer, "my-grouping-in-list");
404 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-container"),
405 QName.create(myModule.getQNameModule(), "my-list"),
406 QName.create(myModule.getQNameModule(), "my-grouping-in-list"));
407 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
409 assertNotNull(testNode);
410 assertNotNull(foundNode);
411 assertEquals(testNode, foundNode);
413 testNode = ((GroupingDefinition) testNode).getDataChildByName(QName.create(myModule.getQNameModule(),
414 "my-leaf-in-grouping-in-list"));
415 path = path.createChild(QName.create(myModule.getQNameModule(), "my-leaf-in-grouping-in-list"));
417 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
419 assertNotNull(testNode);
420 assertNotNull(foundNode);
421 assertEquals(testNode, foundNode);
423 // find grouping in grouping
424 dataContainer = getGroupingByName(myModule, "my-grouping");
425 testNode = getGroupingByName(dataContainer, "my-grouping-in-grouping");
427 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-grouping"),
428 QName.create(myModule.getQNameModule(), "my-grouping-in-grouping"));
429 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
431 assertNotNull(testNode);
432 assertNotNull(foundNode);
433 assertEquals(testNode, foundNode);
435 testNode = ((GroupingDefinition) testNode).getDataChildByName(QName.create(myModule.getQNameModule(),
436 "my-leaf-in-grouping-in-grouping"));
437 path = path.createChild(QName.create(myModule.getQNameModule(), "my-leaf-in-grouping-in-grouping"));
439 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
441 assertNotNull(testNode);
442 assertNotNull(foundNode);
443 assertEquals(testNode, foundNode);
445 // find grouping in rpc
446 final RpcDefinition rpc = getRpcByName(myModule, "my-rpc");
447 for (final GroupingDefinition grouping : rpc.getGroupings()) {
448 if (grouping.getQName().getLocalName().equals("my-grouping-in-rpc")) {
453 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-rpc"),
454 QName.create(myModule.getQNameModule(), "my-grouping-in-rpc"));
455 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
457 assertNotNull(testNode);
458 assertNotNull(foundNode);
459 assertEquals(testNode, foundNode);
461 testNode = ((GroupingDefinition) testNode).getDataChildByName(QName.create(myModule.getQNameModule(),
462 "my-leaf-in-grouping-in-rpc"));
463 path = path.createChild(QName.create(myModule.getQNameModule(), "my-leaf-in-grouping-in-rpc"));
465 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
467 assertNotNull(testNode);
468 assertNotNull(foundNode);
469 assertEquals(testNode, foundNode);
471 // find grouping in output
472 dataContainer = getRpcByName(myModule, "my-rpc").getOutput();
473 testNode = getGroupingByName(dataContainer, "my-grouping-in-output");
475 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-rpc"),
476 QName.create(myModule.getQNameModule(), "output"),
477 QName.create(myModule.getQNameModule(), "my-grouping-in-output"));
478 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
480 assertNotNull(testNode);
481 assertNotNull(foundNode);
482 assertEquals(testNode, foundNode);
484 testNode = ((GroupingDefinition) testNode).getDataChildByName(QName.create(myModule.getQNameModule(),
485 "my-leaf-in-grouping-in-output"));
486 path = path.createChild(QName.create(myModule.getQNameModule(), "my-leaf-in-grouping-in-output"));
488 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
490 assertNotNull(testNode);
491 assertNotNull(foundNode);
492 assertEquals(testNode, foundNode);
494 // find grouping in input
495 dataContainer = getRpcByName(myModule, "my-rpc").getInput();
496 testNode = getGroupingByName(dataContainer, "my-grouping-in-input");
498 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-rpc"),
499 QName.create(myModule.getQNameModule(), "input"),
500 QName.create(myModule.getQNameModule(), "my-grouping-in-input"));
501 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
503 assertNotNull(testNode);
504 assertNotNull(foundNode);
505 assertEquals(testNode, foundNode);
507 testNode = ((GroupingDefinition) testNode).getDataChildByName(QName.create(myModule.getQNameModule(),
508 "my-leaf-in-grouping-in-input"));
509 path = path.createChild(QName.create(myModule.getQNameModule(), "my-leaf-in-grouping-in-input"));
511 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
513 assertNotNull(testNode);
514 assertNotNull(foundNode);
515 assertEquals(testNode, foundNode);
517 // find grouping in notification
518 dataContainer = getNotificationByName(myModule, "my-notification");
519 testNode = getGroupingByName(dataContainer, "my-grouping-in-notification");
521 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-notification"),
522 QName.create(myModule.getQNameModule(), "my-grouping-in-notification"));
523 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
525 assertNotNull(testNode);
526 assertNotNull(foundNode);
527 assertEquals(testNode, foundNode);
529 testNode = ((GroupingDefinition) testNode).getDataChildByName(QName.create(myModule.getQNameModule(),
530 "my-leaf-in-grouping-in-notification"));
531 path = path.createChild(QName.create(myModule.getQNameModule(), "my-leaf-in-grouping-in-notification"));
533 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
535 assertNotNull(testNode);
536 assertNotNull(foundNode);
537 assertEquals(testNode, foundNode);
539 // find grouping in case
540 dataContainer = (DataNodeContainer) ((ChoiceSchemaNode) myModule.getDataChildByName(
541 QName.create(myModule.getQNameModule(), "my-choice")))
542 .findCaseNodes("one").iterator().next()
543 .getDataChildByName(QName.create(myModule.getQNameModule(), "my-container-in-case"));
544 testNode = getGroupingByName(dataContainer, "my-grouping-in-case");
546 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-choice"),
547 QName.create(myModule.getQNameModule(), "one"),
548 QName.create(myModule.getQNameModule(), "my-container-in-case"),
549 QName.create(myModule.getQNameModule(), "my-grouping-in-case"));
550 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
552 assertNotNull(testNode);
553 assertNotNull(foundNode);
554 assertEquals(testNode, foundNode);
556 testNode = ((GroupingDefinition) testNode).getDataChildByName(QName.create(myModule.getQNameModule(),
557 "my-leaf-in-grouping-in-case"));
558 path = path.createChild(QName.create(myModule.getQNameModule(), "my-leaf-in-grouping-in-case"));
560 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
562 assertNotNull(testNode);
563 assertNotNull(foundNode);
564 assertEquals(testNode, foundNode);
568 public void findNodeInSchemaContextGroupingsTest2() {
570 final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/schema-context-util");
571 final Module myModule = context.findModule(URI.create("uri:my-module"), Revision.of("2014-10-07")).get();
573 // find grouping in container
574 DataNodeContainer dataContainer = (DataNodeContainer) myModule.getDataChildByName(QName.create(
575 myModule.getQNameModule(), "my-container"));
576 SchemaNode testNode = getGroupingByName(dataContainer, "my-grouping-in-container2");
578 SchemaPath path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-container"),
579 QName.create(myModule.getQNameModule(), "my-grouping-in-container2"));
580 SchemaNode foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
582 assertNull(testNode);
583 assertNull(foundNode);
585 // find grouping in list
586 dataContainer = (DataNodeContainer) ((DataNodeContainer) myModule.getDataChildByName(QName.create(
587 myModule.getQNameModule(), "my-container"))).getDataChildByName(QName.create(myModule.getQNameModule(),
589 testNode = getGroupingByName(dataContainer, "my-grouping-in-list2");
591 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-container"),
592 QName.create(myModule.getQNameModule(), "my-list"),
593 QName.create(myModule.getQNameModule(), "my-grouping-in-list2"));
594 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
596 assertNull(testNode);
597 assertNull(foundNode);
599 // find grouping in grouping
600 dataContainer = getGroupingByName(myModule, "my-grouping");
601 testNode = getGroupingByName(dataContainer, "my-grouping-in-grouping2");
603 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-grouping"),
604 QName.create(myModule.getQNameModule(), "my-grouping-in-grouping2"));
605 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
607 assertNull(testNode);
608 assertNull(foundNode);
610 // find grouping in rpc
611 final RpcDefinition rpc = getRpcByName(myModule, "my-rpc");
612 for (final GroupingDefinition grouping : rpc.getGroupings()) {
613 if (grouping.getQName().getLocalName().equals("my-grouping-in-rpc2")) {
618 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-rpc"),
619 QName.create(myModule.getQNameModule(), "my-grouping-in-rpc2"));
620 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
622 assertNull(testNode);
623 assertNull(foundNode);
625 // find grouping in output
626 dataContainer = getRpcByName(myModule, "my-rpc").getOutput();
627 testNode = getGroupingByName(dataContainer, "my-grouping-in-output2");
629 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-rpc"),
630 QName.create(myModule.getQNameModule(), "output"),
631 QName.create(myModule.getQNameModule(), "my-grouping-in-output2"));
632 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
634 assertNull(testNode);
635 assertNull(foundNode);
637 // find grouping in input
638 dataContainer = getRpcByName(myModule, "my-rpc").getInput();
639 testNode = getGroupingByName(dataContainer, "my-grouping-in-input2");
641 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-rpc"),
642 QName.create(myModule.getQNameModule(), "input"),
643 QName.create(myModule.getQNameModule(), "my-grouping-in-input2"));
644 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
646 assertNull(testNode);
647 assertNull(foundNode);
649 // find grouping in notification
650 dataContainer = getNotificationByName(myModule, "my-notification");
651 testNode = getGroupingByName(dataContainer, "my-grouping-in-notification2");
653 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-notification"),
654 QName.create(myModule.getQNameModule(), "my-grouping-in-notification2"));
655 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
657 assertNull(testNode);
658 assertNull(foundNode);
660 // find grouping in case
661 dataContainer = (DataNodeContainer) ((ChoiceSchemaNode) myModule.getDataChildByName(
662 QName.create(myModule.getQNameModule(), "my-choice")))
663 .findCaseNodes("one").iterator().next()
664 .getDataChildByName(QName.create(myModule.getQNameModule(), "my-container-in-case"));
665 testNode = getGroupingByName(dataContainer, "my-grouping-in-case2");
667 path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-choice"),
668 QName.create(myModule.getQNameModule(), "one"),
669 QName.create(myModule.getQNameModule(), "my-container-in-case"),
670 QName.create(myModule.getQNameModule(), "my-grouping-in-case2"));
671 foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
673 assertNull(testNode);
674 assertNull(foundNode);
677 private static GroupingDefinition getGroupingByName(final DataNodeContainer dataNodeContainer, final String name) {
678 for (final GroupingDefinition grouping : dataNodeContainer.getGroupings()) {
679 if (grouping.getQName().getLocalName().equals(name)) {
686 private static RpcDefinition getRpcByName(final Module module, final String name) {
687 for (final RpcDefinition rpc : module.getRpcs()) {
688 if (rpc.getQName().getLocalName().equals(name)) {
695 private static NotificationDefinition getNotificationByName(final Module module, final String name) {
696 for (final NotificationDefinition notification : module.getNotifications()) {
697 if (notification.getQName().getLocalName().equals(name)) {
705 public void findNodeInSchemaContextTheSameNameOfSiblingsTest() {
706 final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/schema-context-util");
708 final Module myModule = context.findModule(URI.create("uri:my-module"), Revision.of("2014-10-07")).get();
709 final ChoiceSchemaNode choice = (ChoiceSchemaNode) getRpcByName(myModule, "my-name").getInput()
710 .getDataChildByName(QName.create(myModule.getQNameModule(), "my-choice"));
711 final SchemaNode testNode = choice.findCaseNodes("case-two").iterator().next()
712 .getDataChildByName(QName.create(myModule.getQNameModule(), "two"));
714 final SchemaPath path = SchemaPath.create(true, QName.create(myModule.getQNameModule(), "my-name"),
715 QName.create(myModule.getQNameModule(), "input"), QName.create(myModule.getQNameModule(), "my-choice"),
716 QName.create(myModule.getQNameModule(), "case-two"), QName.create(myModule.getQNameModule(), "two"));
717 final SchemaNode foundNode = SchemaContextUtil.findNodeInSchemaContext(context, path.getPathFromRoot());
719 assertNotNull(testNode);
720 assertNotNull(foundNode);
721 assertEquals(testNode, foundNode);