use of org.opendaylight.yangtools.yang.data.api.schema.UserMapNode in project netconf by opendaylight.
the class ReadDataTransactionUtil method prepareData.
/**
* Prepare and map all data from DS.
*
* @param configDataNode data node of config data
* @param stateDataNode data node of state data
* @return {@link NormalizedNode}
*/
@SuppressWarnings("unchecked")
@NonNull
private static NormalizedNode prepareData(@NonNull final NormalizedNode configDataNode, @NonNull final NormalizedNode stateDataNode) {
if (configDataNode instanceof UserMapNode) {
final CollectionNodeBuilder<MapEntryNode, UserMapNode> builder = Builders.orderedMapBuilder().withNodeIdentifier(((MapNode) configDataNode).getIdentifier());
mapValueToBuilder(((UserMapNode) configDataNode).body(), ((UserMapNode) stateDataNode).body(), builder);
return builder.build();
} else if (configDataNode instanceof MapNode) {
final CollectionNodeBuilder<MapEntryNode, SystemMapNode> builder = ImmutableNodes.mapNodeBuilder().withNodeIdentifier(((MapNode) configDataNode).getIdentifier());
mapValueToBuilder(((MapNode) configDataNode).body(), ((MapNode) stateDataNode).body(), builder);
return builder.build();
} else if (configDataNode instanceof MapEntryNode) {
final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> builder = ImmutableNodes.mapEntryBuilder().withNodeIdentifier(((MapEntryNode) configDataNode).getIdentifier());
mapValueToBuilder(((MapEntryNode) configDataNode).body(), ((MapEntryNode) stateDataNode).body(), builder);
return builder.build();
} else if (configDataNode instanceof ContainerNode) {
final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> builder = Builders.containerBuilder().withNodeIdentifier(((ContainerNode) configDataNode).getIdentifier());
mapValueToBuilder(((ContainerNode) configDataNode).body(), ((ContainerNode) stateDataNode).body(), builder);
return builder.build();
} else if (configDataNode instanceof AugmentationNode) {
final DataContainerNodeBuilder<AugmentationIdentifier, AugmentationNode> builder = Builders.augmentationBuilder().withNodeIdentifier(((AugmentationNode) configDataNode).getIdentifier());
mapValueToBuilder(((AugmentationNode) configDataNode).body(), ((AugmentationNode) stateDataNode).body(), builder);
return builder.build();
} else if (configDataNode instanceof ChoiceNode) {
final DataContainerNodeBuilder<NodeIdentifier, ChoiceNode> builder = Builders.choiceBuilder().withNodeIdentifier(((ChoiceNode) configDataNode).getIdentifier());
mapValueToBuilder(((ChoiceNode) configDataNode).body(), ((ChoiceNode) stateDataNode).body(), builder);
return builder.build();
} else if (configDataNode instanceof LeafNode) {
return ImmutableNodes.leafNode(configDataNode.getIdentifier().getNodeType(), configDataNode.body());
} else if (configDataNode instanceof UserLeafSetNode) {
final ListNodeBuilder<Object, UserLeafSetNode<Object>> builder = Builders.orderedLeafSetBuilder().withNodeIdentifier(((UserLeafSetNode<?>) configDataNode).getIdentifier());
mapValueToBuilder(((UserLeafSetNode<Object>) configDataNode).body(), ((UserLeafSetNode<Object>) stateDataNode).body(), builder);
return builder.build();
} else if (configDataNode instanceof LeafSetNode) {
final ListNodeBuilder<Object, SystemLeafSetNode<Object>> builder = Builders.leafSetBuilder().withNodeIdentifier(((LeafSetNode<?>) configDataNode).getIdentifier());
mapValueToBuilder(((LeafSetNode<Object>) configDataNode).body(), ((LeafSetNode<Object>) stateDataNode).body(), builder);
return builder.build();
} else if (configDataNode instanceof LeafSetEntryNode) {
return Builders.leafSetEntryBuilder().withNodeIdentifier(((LeafSetEntryNode<?>) configDataNode).getIdentifier()).withValue(configDataNode.body()).build();
} else if (configDataNode instanceof UnkeyedListNode) {
final CollectionNodeBuilder<UnkeyedListEntryNode, UnkeyedListNode> builder = Builders.unkeyedListBuilder().withNodeIdentifier(((UnkeyedListNode) configDataNode).getIdentifier());
mapValueToBuilder(((UnkeyedListNode) configDataNode).body(), ((UnkeyedListNode) stateDataNode).body(), builder);
return builder.build();
} else if (configDataNode instanceof UnkeyedListEntryNode) {
final DataContainerNodeBuilder<NodeIdentifier, UnkeyedListEntryNode> builder = Builders.unkeyedListEntryBuilder().withNodeIdentifier(((UnkeyedListEntryNode) configDataNode).getIdentifier());
mapValueToBuilder(((UnkeyedListEntryNode) configDataNode).body(), ((UnkeyedListEntryNode) stateDataNode).body(), builder);
return builder.build();
} else {
throw new RestconfDocumentedException("Unexpected node type: " + configDataNode.getClass().getName());
}
}
use of org.opendaylight.yangtools.yang.data.api.schema.UserMapNode in project netconf by opendaylight.
the class ParameterAwareNormalizedNodeWriter method wasProcessedAsCompositeNode.
private boolean wasProcessedAsCompositeNode(final NormalizedNode node) throws IOException {
boolean processedAsCompositeNode = false;
if (node instanceof ContainerNode) {
final ContainerNode n = (ContainerNode) node;
if (!n.getIdentifier().getNodeType().withoutRevision().equals(ROOT_DATA_QNAME)) {
writer.startContainerNode(n.getIdentifier(), childSizeHint(n.body()));
currentDepth++;
processedAsCompositeNode = writeChildren(n.body(), false);
currentDepth--;
} else {
// write child nodes of data root container
for (final NormalizedNode child : n.body()) {
currentDepth++;
if (selectedByParameters(child, false)) {
write(child);
}
currentDepth--;
}
processedAsCompositeNode = true;
}
} else if (node instanceof MapEntryNode) {
processedAsCompositeNode = writeMapEntryNode((MapEntryNode) node);
} else if (node instanceof UnkeyedListEntryNode) {
final UnkeyedListEntryNode n = (UnkeyedListEntryNode) node;
writer.startUnkeyedListItem(n.getIdentifier(), childSizeHint(n.body()));
currentDepth++;
processedAsCompositeNode = writeChildren(n.body(), false);
currentDepth--;
} else if (node instanceof ChoiceNode) {
final ChoiceNode n = (ChoiceNode) node;
writer.startChoiceNode(n.getIdentifier(), childSizeHint(n.body()));
processedAsCompositeNode = writeChildren(n.body(), true);
} else if (node instanceof AugmentationNode) {
final AugmentationNode n = (AugmentationNode) node;
writer.startAugmentationNode(n.getIdentifier());
processedAsCompositeNode = writeChildren(n.body(), true);
} else if (node instanceof UnkeyedListNode) {
final UnkeyedListNode n = (UnkeyedListNode) node;
writer.startUnkeyedList(n.getIdentifier(), childSizeHint(n.body()));
processedAsCompositeNode = writeChildren(n.body(), false);
} else if (node instanceof UserMapNode) {
final UserMapNode n = (UserMapNode) node;
writer.startOrderedMapNode(n.getIdentifier(), childSizeHint(n.body()));
processedAsCompositeNode = writeChildren(n.body(), true);
} else if (node instanceof MapNode) {
final MapNode n = (MapNode) node;
writer.startMapNode(n.getIdentifier(), childSizeHint(n.body()));
processedAsCompositeNode = writeChildren(n.body(), true);
} else if (node instanceof LeafSetNode) {
final LeafSetNode<?> n = (LeafSetNode<?>) node;
if (node instanceof UserLeafSetNode) {
writer.startOrderedLeafSet(n.getIdentifier(), childSizeHint(n.body()));
} else {
writer.startLeafSet(n.getIdentifier(), childSizeHint(n.body()));
}
currentDepth++;
processedAsCompositeNode = writeChildren(n.body(), true);
currentDepth--;
}
return processedAsCompositeNode;
}
use of org.opendaylight.yangtools.yang.data.api.schema.UserMapNode in project netconf by opendaylight.
the class BrokerFacade method putData.
// FIXME: This is doing correct put for container and list children, not sure if this will work for choice case
private void putData(final DOMDataTreeReadWriteTransaction rwTransaction, final LogicalDatastoreType datastore, final YangInstanceIdentifier path, final NormalizedNode payload, final EffectiveModelContext schemaContext, final String insert, final String point) {
if (insert == null) {
makePut(rwTransaction, datastore, path, payload, schemaContext);
return;
}
final DataSchemaNode schemaNode = checkListAndOrderedType(schemaContext, path);
checkItemDoesNotExists(rwTransaction, datastore, path);
switch(insert) {
case "first":
if (schemaNode instanceof ListSchemaNode) {
final UserMapNode readList = (UserMapNode) this.readConfigurationData(path.getParent());
if (readList == null || readList.isEmpty()) {
simplePut(datastore, path, rwTransaction, schemaContext, payload);
} else {
rwTransaction.delete(datastore, path.getParent());
simplePut(datastore, path, rwTransaction, schemaContext, payload);
makePut(rwTransaction, datastore, path.getParent(), readList, schemaContext);
}
} else {
final UserLeafSetNode<?> readLeafList = (UserLeafSetNode<?>) readConfigurationData(path.getParent());
if (readLeafList == null || readLeafList.isEmpty()) {
simplePut(datastore, path, rwTransaction, schemaContext, payload);
} else {
rwTransaction.delete(datastore, path.getParent());
simplePut(datastore, path, rwTransaction, schemaContext, payload);
makePut(rwTransaction, datastore, path.getParent(), readLeafList, schemaContext);
}
}
break;
case "last":
simplePut(datastore, path, rwTransaction, schemaContext, payload);
break;
case "before":
if (schemaNode instanceof ListSchemaNode) {
final UserMapNode readList = (UserMapNode) this.readConfigurationData(path.getParent());
if (readList == null || readList.isEmpty()) {
simplePut(datastore, path, rwTransaction, schemaContext, payload);
} else {
insertWithPointListPut(rwTransaction, datastore, path, payload, schemaContext, point, readList, true);
}
} else {
final UserLeafSetNode<?> readLeafList = (UserLeafSetNode<?>) readConfigurationData(path.getParent());
if (readLeafList == null || readLeafList.isEmpty()) {
simplePut(datastore, path, rwTransaction, schemaContext, payload);
} else {
insertWithPointLeafListPut(rwTransaction, datastore, path, payload, schemaContext, point, readLeafList, true);
}
}
break;
case "after":
if (schemaNode instanceof ListSchemaNode) {
final UserMapNode readList = (UserMapNode) this.readConfigurationData(path.getParent());
if (readList == null || readList.isEmpty()) {
simplePut(datastore, path, rwTransaction, schemaContext, payload);
} else {
insertWithPointListPut(rwTransaction, datastore, path, payload, schemaContext, point, readList, false);
}
} else {
final UserLeafSetNode<?> readLeafList = (UserLeafSetNode<?>) readConfigurationData(path.getParent());
if (readLeafList == null || readLeafList.isEmpty()) {
simplePut(datastore, path, rwTransaction, schemaContext, payload);
} else {
insertWithPointLeafListPut(rwTransaction, datastore, path, payload, schemaContext, point, readLeafList, false);
}
}
break;
default:
throw new RestconfDocumentedException("Used bad value of insert parameter. Possible values are first, last, before or after, but was: " + insert);
}
}
Aggregations