/* * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.yangtools.yang.data.impl.schema; import com.google.common.collect.ImmutableSet; import java.util.Collections; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.XMLNamespace; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; public class NormalizedDataBuilderTest { @Test public void testSchemaUnaware() { // Container DataContainerNodeBuilder builder = Builders .containerBuilder().withNodeIdentifier(getNodeIdentifier("container")); // leaf LeafNode leafChild = Builders.leafBuilder().withNodeIdentifier(getNodeIdentifier("leaf")) .withValue("String").build(); builder.withChild(leafChild); // leafList LeafSetNode leafList = Builders.leafSetBuilder() .withNodeIdentifier(getNodeIdentifier("leaf")) .withChildValue(1) .withChild(Builders.leafSetEntryBuilder() .withNodeIdentifier(getNodeWithValueIdentifier("leaf", 3)).withValue(3).build()) .build(); builder.withChild(leafList); // list MapEntryNode listChild1 = Builders .mapEntryBuilder() .withChild( Builders.leafBuilder().withNodeIdentifier(getNodeIdentifier("uint32InList")) .withValue(1).build()) .withChild(Builders.containerBuilder().withNodeIdentifier(getNodeIdentifier("containerInList")).build()) .withNodeIdentifier(NodeIdentifierWithPredicates.of( getNodeIdentifier("list").getNodeType(), Collections.singletonMap( getNodeIdentifier("uint32InList").getNodeType(), 1))).build(); MapNode list = Builders.mapBuilder().withChild(listChild1).withNodeIdentifier(getNodeIdentifier("list")) .build(); builder.withChild(list); AugmentationNode augmentation = Builders .augmentationBuilder() .withNodeIdentifier( new AugmentationIdentifier(ImmutableSet.of(getQName("augmentUint32")))) .withChild( Builders.leafBuilder().withNodeIdentifier(getNodeIdentifier("augmentUint32")) .withValue(11).build()).build(); builder.withChild(augmentation); // This works without schema (adding child from augment as a direct // child) builder.withChild(Builders.leafBuilder().withNodeIdentifier(getNodeIdentifier("augmentUint32")) .withValue(11).build()); } private static NodeWithValue getNodeWithValueIdentifier(final String localName, final T value) { return new NodeWithValue<>(getQName(localName), value); } private static QName getQName(final String localName) { return QName.create(XMLNamespace.of("namespace"), localName); } private static NodeIdentifier getNodeIdentifier(final String localName) { return new NodeIdentifier(getQName(localName)); } }