2 * Copyright (c) 2016 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.data.impl.schema;
10 import com.google.common.collect.ImmutableSet;
11 import java.util.Collections;
12 import org.junit.Test;
13 import org.opendaylight.yangtools.yang.common.QName;
14 import org.opendaylight.yangtools.yang.common.XMLNamespace;
15 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
16 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
17 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
18 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
19 import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
20 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
21 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
22 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
23 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
24 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
25 import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder;
27 public class NormalizedDataBuilderTest {
29 public void testSchemaUnaware() {
31 DataContainerNodeBuilder<NodeIdentifier, ContainerNode> builder = Builders
32 .containerBuilder().withNodeIdentifier(getNodeIdentifier("container"));
35 LeafNode<String> leafChild = Builders.<String>leafBuilder().withNodeIdentifier(getNodeIdentifier("leaf"))
36 .withValue("String").build();
37 builder.withChild(leafChild);
40 LeafSetNode<Integer> leafList = Builders.<Integer>leafSetBuilder()
41 .withNodeIdentifier(getNodeIdentifier("leaf"))
43 .withChild(Builders.<Integer>leafSetEntryBuilder()
44 .withNodeIdentifier(getNodeWithValueIdentifier("leaf", 3)).withValue(3).build())
46 builder.withChild(leafList);
49 MapEntryNode listChild1 = Builders
52 Builders.<Integer>leafBuilder().withNodeIdentifier(getNodeIdentifier("uint32InList"))
53 .withValue(1).build())
54 .withChild(Builders.containerBuilder().withNodeIdentifier(getNodeIdentifier("containerInList")).build())
55 .withNodeIdentifier(NodeIdentifierWithPredicates.of(
56 getNodeIdentifier("list").getNodeType(), Collections.singletonMap(
57 getNodeIdentifier("uint32InList").getNodeType(), 1))).build();
59 MapNode list = Builders.mapBuilder().withChild(listChild1).withNodeIdentifier(getNodeIdentifier("list"))
61 builder.withChild(list);
63 AugmentationNode augmentation = Builders
64 .augmentationBuilder()
66 new AugmentationIdentifier(ImmutableSet.of(getQName("augmentUint32"))))
68 Builders.<Integer>leafBuilder().withNodeIdentifier(getNodeIdentifier("augmentUint32"))
69 .withValue(11).build()).build();
71 builder.withChild(augmentation);
73 // This works without schema (adding child from augment as a direct
75 builder.withChild(Builders.<Integer>leafBuilder().withNodeIdentifier(getNodeIdentifier("augmentUint32"))
76 .withValue(11).build());
79 private static <T> NodeWithValue<T> getNodeWithValueIdentifier(final String localName, final T value) {
80 return new NodeWithValue<>(getQName(localName), value);
83 private static QName getQName(final String localName) {
84 return QName.create(XMLNamespace.of("namespace"), localName);
87 private static NodeIdentifier getNodeIdentifier(final String localName) {
88 return new NodeIdentifier(getQName(localName));