import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.api.schema.AnyXmlNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode;
+import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.AttributesBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeContainerBuilder;
import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
private final T identifier;
@Override
- public T getIdentifier() {
+ public final T getIdentifier() {
return identifier;
}
*/
abstract NormalizedNode<?, ?> create(YangInstanceIdentifier instanceId, Optional<NormalizedNode<?, ?>> deepestChild, Optional<Entry<QName,ModifyAction>> operation);
+ abstract boolean isMixin();
public void addModifyOpIfPresent(final Optional<Entry<QName,ModifyAction>> operation, final AttributesBuilder<?> builder) {
- if(operation.isPresent()) {
+ if (operation.isPresent()) {
builder.withAttributes(Collections.singletonMap(operation.get().getKey(), modifyOperationToXmlString(operation.get().getValue())));
}
}
return operation.name().toLowerCase();
}
- static boolean isMixin(final InstanceIdToNodes<?> op) {
- return op instanceof MixinNormalizationOp;
- }
-
- /**
- * Marker interface for Mixin nodes normalization operations
- */
- interface MixinNormalizationOp {}
-
-
- private static class UnkeyedListMixinNormalization extends InstanceIdToCompositeNodes<NodeIdentifier> implements MixinNormalizationOp {
+ private final static class UnkeyedListMixinNormalization extends InstanceIdToCompositeNodes<NodeIdentifier> {
private final UnkeyedListItemNormalization innerNode;
public UnkeyedListMixinNormalization(final ListSchemaNode list) {
- super(new NodeIdentifier(list.getQName()));
+ super(NodeIdentifier.create(list.getQName()));
this.innerNode = new UnkeyedListItemNormalization(list);
}
@Override
- protected NormalizedNodeContainerBuilder<?, ?, ?, ?> createBuilder(final PathArgument compositeNode) {
+ protected CollectionNodeBuilder<UnkeyedListEntryNode, UnkeyedListNode> createBuilder(final PathArgument compositeNode) {
return Builders.unkeyedListBuilder().withNodeIdentifier(getIdentifier());
}
}
return null;
}
+
+ @Override
+ boolean isMixin() {
+ return true;
+ }
}
private static class AnyXmlNormalization extends InstanceIdToNodes<NodeIdentifier> {
protected AnyXmlNormalization(final AnyXmlSchemaNode schema) {
- super(new NodeIdentifier(schema.getQName()));
+ super(NodeIdentifier.create(schema.getQName()));
}
@Override
}
@Override
- public NormalizedNode<?, ?> create(final YangInstanceIdentifier instanceId, final Optional<NormalizedNode<?, ?>> deepestChild, final Optional<Entry<QName,ModifyAction>> operation) {
- if(deepestChild.isPresent()) {
- Preconditions.checkState(deepestChild instanceof AnyXmlNode);
+ public NormalizedNode<?, ?> create(final YangInstanceIdentifier instanceId,
+ final Optional<NormalizedNode<?, ?>> deepestChild,
+ final Optional<Entry<QName,ModifyAction>> operation) {
+ if (deepestChild.isPresent()) {
+ final NormalizedNode<?, ?> child = deepestChild.get();
+ Preconditions.checkState(child instanceof AnyXmlNode);
+
final NormalizedNodeAttrBuilder<NodeIdentifier, DOMSource, AnyXmlNode> anyXmlBuilder =
- Builders.anyXmlBuilder().withNodeIdentifier(getIdentifier()).withValue(((AnyXmlNode) deepestChild).getValue());
+ Builders.anyXmlBuilder().withNodeIdentifier(getIdentifier()).withValue(((AnyXmlNode) child).getValue());
addModifyOpIfPresent(operation, anyXmlBuilder);
return anyXmlBuilder.build();
}
return builder.build();
}
+ @Override
+ boolean isMixin() {
+ return false;
+ }
}
private static Optional<DataSchemaNode> findChildSchemaNode(final DataNodeContainer parent, final QName child) {
final DataSchemaNode result = potential.get();
// We try to look up if this node was added by augmentation
- if ((schema instanceof DataSchemaNode) && result.isAugmenting()) {
+ if (schema instanceof DataSchemaNode && result.isAugmenting()) {
return fromAugmentation(schema, (AugmentationTarget) schema, result);
}
return fromDataSchemaNode(result);
}
if (augmentation != null) {
return new InstanceIdToCompositeNodes.AugmentationNormalization(augmentation, parent);
- } else {
- return fromDataSchemaNode(child);
}
+ return fromDataSchemaNode(child);
}
static InstanceIdToNodes<?> fromDataSchemaNode(final DataSchemaNode potential) {