@Nullable @Override public N build(final NormalizedNodeBuilder<YangInstanceIdentifier.NodeIdentifier, ?, N> builder) { changeTracker.popPath(); return builder.build(); }
private static NormalizedNode<?, ?> translateRootShardIdentifierToListenerPath( final YangInstanceIdentifier listenerPath, final NormalizedNode<?, ?> node) { if (listenerPath.isEmpty()) { return node; } final NormalizedNodeBuilder nodeBuilder; if (node instanceof ContainerNode) { nodeBuilder = ImmutableContainerNodeBuilder.create().withValue(((ContainerNode) node).getValue()); } else if (node instanceof MapEntryNode) { nodeBuilder = ImmutableMapEntryNodeBuilder.create().withValue(((MapEntryNode) node).getValue()); } else { throw new IllegalArgumentException("Expected ContainerNode or MapEntryNode, but was " + node.getClass()); } nodeBuilder.withNodeIdentifier(listenerPath.getLastPathArgument()); return nodeBuilder.build(); }
@Nullable @Override public N build(final NormalizedNodeBuilder<YangInstanceIdentifier.NodeIdentifier, ?, N> builder) { changeTracker.popPath(); return builder.build(); }
@Override public void prepareAttributes(final Map<QName, String> attributes, final NormalizedNodeBuilder<YangInstanceIdentifier.NodeIdentifier, ?, N> containerBuilder) { changeTracker.pushPath(containerBuilder.build().getIdentifier()); } }
@Override public void prepareAttributes(final Map<QName, String> attributes, final NormalizedNodeBuilder<YangInstanceIdentifier.NodeIdentifier, ?, N> containerBuilder) { changeTracker.pushPath(containerBuilder.build().getIdentifier()); } }
@Override public void prepareAttributes(final Map<QName, String> attributes, final NormalizedNodeBuilder<P, ?, N> containerBuilder) { dataTreeChangeTracker.pushPath(containerBuilder.build().getIdentifier()); final String operation = attributes.get(OPERATION_ATTRIBUTE); if (operation != null) { dataTreeChangeTracker.pushAction(ModifyAction.fromXmlValue(operation)); } else { dataTreeChangeTracker.pushAction(dataTreeChangeTracker.peekAction() != null ? dataTreeChangeTracker.peekAction() : dataTreeChangeTracker.getDefaultAction()); } } }
@Nullable @Override public LeafNode<?> build(final NormalizedNodeBuilder<YangInstanceIdentifier.NodeIdentifier, ?, LeafNode<?>> builder) { LeafNode<?> node = builder.build(); String operation = (String) node.getAttributeValue(OPERATION_ATTRIBUTE); if (operation == null) { return node; } if(builder instanceof AttributesBuilder<?>) { ((AttributesBuilder<?>) builder).withAttributes(Collections.<QName, String>emptyMap()); } node = builder.build(); ModifyAction action = ModifyAction.fromXmlValue(operation); if (dataTreeChangeTracker.getDeleteOperationTracker() > 0 || dataTreeChangeTracker.getRemoveOperationTracker() > 0) { return node; } else { if (!action.equals(dataTreeChangeTracker.peekAction())) { dataTreeChangeTracker.pushPath(node.getIdentifier()); dataTreeChangeTracker.addDataTreeChange(new DataTreeChangeTracker.DataTreeChange(node, action, new ArrayList<>(dataTreeChangeTracker.getCurrentPath()))); dataTreeChangeTracker.popPath(); return null; } else { return node; } } }
@Override public void prepareAttributes(final Map<QName, String> attributes, final NormalizedNodeBuilder<P, ?, N> containerBuilder) { dataTreeChangeTracker.pushPath(containerBuilder.build().getIdentifier()); final String operation = attributes.get(OPERATION_ATTRIBUTE); if (operation != null) { dataTreeChangeTracker.pushAction(ModifyAction.fromXmlValue(operation)); } else { dataTreeChangeTracker.pushAction(dataTreeChangeTracker.peekAction() != null ? dataTreeChangeTracker.peekAction() : dataTreeChangeTracker.getDefaultAction()); } } }
@Nullable @Override public LeafSetEntryNode<?> build(final NormalizedNodeBuilder<YangInstanceIdentifier.NodeWithValue, ?, LeafSetEntryNode<?>> builder) { LeafSetEntryNode<?> node = builder.build(); String operation = (String) node.getAttributeValue(OPERATION_ATTRIBUTE); if (operation == null) { return node; } if (builder instanceof AttributesBuilder<?>) { ((AttributesBuilder<?>) builder).withAttributes(Collections.<QName, String>emptyMap()); } node = builder.build(); ModifyAction action = ModifyAction.fromXmlValue(operation); if (dataTreeChangeTracker.getDeleteOperationTracker() > 0 || dataTreeChangeTracker.getRemoveOperationTracker() > 0) { return node; } else { if (!action.equals(dataTreeChangeTracker.peekAction())) { dataTreeChangeTracker.pushPath(node.getIdentifier()); dataTreeChangeTracker.addDataTreeChange(new DataTreeChangeTracker.DataTreeChange(node, action, new ArrayList<>(dataTreeChangeTracker.getCurrentPath()))); dataTreeChangeTracker.popPath(); return null; } else { return node; } } }
@Nullable @Override public LeafNode<?> build(final NormalizedNodeBuilder<YangInstanceIdentifier.NodeIdentifier, ?, LeafNode<?>> builder) { LeafNode<?> node = builder.build(); String operation = (String) node.getAttributeValue(OPERATION_ATTRIBUTE); if (operation == null) { return node; } if(builder instanceof AttributesBuilder<?>) { ((AttributesBuilder<?>) builder).withAttributes(Collections.<QName, String>emptyMap()); } node = builder.build(); ModifyAction action = ModifyAction.fromXmlValue(operation); if (dataTreeChangeTracker.getDeleteOperationTracker() > 0 || dataTreeChangeTracker.getRemoveOperationTracker() > 0) { return node; } else { if (!action.equals(dataTreeChangeTracker.peekAction())) { dataTreeChangeTracker.pushPath(node.getIdentifier()); dataTreeChangeTracker.addDataTreeChange(new DataTreeChangeTracker.DataTreeChange(node, action, new ArrayList<>(dataTreeChangeTracker.getCurrentPath()))); dataTreeChangeTracker.popPath(); return null; } else { return node; } } }
@Nullable @Override public LeafSetEntryNode<?> build(final NormalizedNodeBuilder<YangInstanceIdentifier.NodeWithValue, ?, LeafSetEntryNode<?>> builder) { LeafSetEntryNode<?> node = builder.build(); String operation = (String) node.getAttributeValue(OPERATION_ATTRIBUTE); if (operation == null) { return node; } if (builder instanceof AttributesBuilder<?>) { ((AttributesBuilder<?>) builder).withAttributes(Collections.<QName, String>emptyMap()); } node = builder.build(); ModifyAction action = ModifyAction.fromXmlValue(operation); if (dataTreeChangeTracker.getDeleteOperationTracker() > 0 || dataTreeChangeTracker.getRemoveOperationTracker() > 0) { return node; } else { if (!action.equals(dataTreeChangeTracker.peekAction())) { dataTreeChangeTracker.pushPath(node.getIdentifier()); dataTreeChangeTracker.addDataTreeChange(new DataTreeChangeTracker.DataTreeChange(node, action, new ArrayList<>(dataTreeChangeTracker.getCurrentPath()))); dataTreeChangeTracker.popPath(); return null; } else { return node; } } }
@Nullable @Override public N build(final NormalizedNodeBuilder<P, ?, N> builder) { if (builder instanceof AttributesBuilder<?>) { ((AttributesBuilder<?>) builder).withAttributes(Collections.<QName, String>emptyMap()); } final N node = builder.build(); final ModifyAction currentAction = dataTreeChangeTracker.popAction(); //if we know that we are going to delete a parent node just complete the entire subtree if (dataTreeChangeTracker.getDeleteOperationTracker() > 0 || dataTreeChangeTracker.getRemoveOperationTracker() > 0) { dataTreeChangeTracker.popPath(); return node; } else { //if parent and current actions dont match create a DataTreeChange and add it to the change list //dont add a new child to the parent node if (!currentAction.equals(dataTreeChangeTracker.peekAction())) { dataTreeChangeTracker.addDataTreeChange(new DataTreeChangeTracker.DataTreeChange(node, currentAction, new ArrayList<>(dataTreeChangeTracker.getCurrentPath()))); dataTreeChangeTracker.popPath(); return null; } else { dataTreeChangeTracker.popPath(); return node; } } }
@Nullable @Override public N build(final NormalizedNodeBuilder<P, ?, N> builder) { if (builder instanceof AttributesBuilder<?>) { ((AttributesBuilder<?>) builder).withAttributes(Collections.<QName, String>emptyMap()); } final N node = builder.build(); final ModifyAction currentAction = dataTreeChangeTracker.popAction(); //if we know that we are going to delete a parent node just complete the entire subtree if (dataTreeChangeTracker.getDeleteOperationTracker() > 0 || dataTreeChangeTracker.getRemoveOperationTracker() > 0) { dataTreeChangeTracker.popPath(); return node; } else { //if parent and current actions dont match create a DataTreeChange and add it to the change list //dont add a new child to the parent node if (!currentAction.equals(dataTreeChangeTracker.peekAction())) { dataTreeChangeTracker.addDataTreeChange(new DataTreeChangeTracker.DataTreeChange(node, currentAction, new ArrayList<>(dataTreeChangeTracker.getCurrentPath()))); dataTreeChangeTracker.popPath(); return null; } else { dataTreeChangeTracker.popPath(); return node; } } }