import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateTrueFluentFuture;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import org.opendaylight.restconf.nb.rfc8040.rests.services.api.RestconfStreamsSubscriptionService;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
+import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
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.NormalizedNode;
import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
assertEquals(this.buildBaseCont, ((NormalizedNodeContext) response.getEntity()).getData());
}
+ @Test
+ public void testReadRootData() {
+ doReturn(new MultivaluedHashMap<String, String>()).when(this.uriInfo).getQueryParameters();
+ doReturn(immediateFluentFuture(Optional.of(wrapNodeByDataRootContainer(this.buildBaseContConfig))))
+ .when(this.read)
+ .read(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.EMPTY);
+ doReturn(immediateFluentFuture(Optional.of(wrapNodeByDataRootContainer(this.buildBaseContOperational))))
+ .when(this.read)
+ .read(LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.EMPTY);
+ final Response response = this.dataService.readData(this.uriInfo);
+ assertNotNull(response);
+ assertEquals(200, response.getStatus());
+
+ final NormalizedNode<?, ?> data = ((NormalizedNodeContext) response.getEntity()).getData();
+ assertTrue(data instanceof ContainerNode);
+ final Collection<DataContainerChild<? extends PathArgument, ?>> rootNodes = ((ContainerNode) data).getValue();
+ assertEquals(1, rootNodes.size());
+ final Collection<DataContainerChild<? extends PathArgument, ?>> allDataChildren
+ = ((ContainerNode) rootNodes.iterator().next()).getValue();
+ assertEquals(3, allDataChildren.size());
+ }
+
+ private static ContainerNode wrapNodeByDataRootContainer(final DataContainerChild<?, ?> data) {
+ return ImmutableContainerNodeBuilder.create()
+ .withNodeIdentifier(NodeIdentifier.create(SchemaContext.NAME))
+ .withChild(data)
+ .build();
+ }
+
/**
* Test read data from mount point when both {@link LogicalDatastoreType#CONFIGURATION} and
* {@link LogicalDatastoreType#OPERATIONAL} contains the same data and some additional data to be merged.