X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2FInstanceIdToSimpleNodes.java;h=d1b2b5d85f149c8379204567f82afa3836eb2063;hb=a7c0733bc9201f67b73196d93792dee582f931fd;hp=7a3e86a77a92ddb527c51f2bca80610ab10d50be;hpb=c4dc5b33e7d24670b59cc81b65e15b37a3268608;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToSimpleNodes.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToSimpleNodes.java index 7a3e86a77a..d1b2b5d85f 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToSimpleNodes.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToSimpleNodes.java @@ -7,75 +7,78 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema; -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import com.google.common.collect.Iterables; -import java.util.Map; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.ModifyAction; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import static com.google.common.base.Preconditions.checkArgument; + +import java.util.Iterator; +import java.util.Optional; +import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeAttrBuilder; +import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; /** * Base strategy for converting an instance identifier into a normalized node structure for leaf and leaf-list types. */ -abstract class InstanceIdToSimpleNodes extends InstanceIdToNodes { +abstract class InstanceIdToSimpleNodes extends InstanceIdToNodes { - protected InstanceIdToSimpleNodes(final T identifier) { + InstanceIdToSimpleNodes(final T identifier) { super(identifier); } @Override - public NormalizedNode create(final YangInstanceIdentifier instanceId, final Optional> deepestChild, final Optional> operation) { - checkNotNull(instanceId); - final YangInstanceIdentifier.PathArgument pathArgument = Iterables.get(instanceId.getPathArguments(), 0); - final NormalizedNodeAttrBuilder> builder = getBuilder(pathArgument); + final NormalizedNode create(final PathArgument first, final Iterator others, + final Optional deepestChild) { + final NormalizedNodeBuilder builder = + getBuilder(first); - if(deepestChild.isPresent()) { - builder.withValue(deepestChild.get().getValue()); + if (deepestChild.isPresent()) { + builder.withValue(deepestChild.orElseThrow().body()); } - addModifyOpIfPresent(operation, builder); return builder.build(); } - protected abstract NormalizedNodeAttrBuilder> getBuilder(YangInstanceIdentifier.PathArgument node); - @Override - public InstanceIdToNodes getChild(final YangInstanceIdentifier.PathArgument child) { + final InstanceIdToNodes getChild(final PathArgument child) { return null; } - static final class LeafNormalization extends InstanceIdToSimpleNodes { + @Override + final boolean isMixin() { + return false; + } - protected LeafNormalization(final LeafSchemaNode potential) { - super(new YangInstanceIdentifier.NodeIdentifier(potential.getQName())); + abstract NormalizedNodeBuilder getBuilder( + PathArgument node); + + static final class LeafNormalization extends InstanceIdToSimpleNodes { + LeafNormalization(final LeafSchemaNode potential) { + super(new NodeIdentifier(potential.getQName())); } @Override - protected NormalizedNodeAttrBuilder> getBuilder(final YangInstanceIdentifier.PathArgument node) { + NormalizedNodeBuilder> getBuilder(final PathArgument node) { return Builders.leafBuilder().withNodeIdentifier(getIdentifier()); } } - static final class LeafListEntryNormalization extends InstanceIdToSimpleNodes { - - public LeafListEntryNormalization(final LeafListSchemaNode potential) { - super(new YangInstanceIdentifier.NodeWithValue(potential.getQName(), null)); + static final class LeafListEntryNormalization extends InstanceIdToSimpleNodes { + LeafListEntryNormalization(final LeafListSchemaNode potential) { + // We are fudging a value here + super(new NodeWithValue<>(potential.getQName(), Empty.getInstance())); } @Override - protected NormalizedNodeAttrBuilder> getBuilder(final YangInstanceIdentifier.PathArgument node) { - Preconditions.checkArgument(node instanceof YangInstanceIdentifier.NodeWithValue); - return Builders.leafSetEntryBuilder().withNodeIdentifier((YangInstanceIdentifier.NodeWithValue) node).withValue(((YangInstanceIdentifier.NodeWithValue) node).getValue()); + NormalizedNodeBuilder> getBuilder(final PathArgument node) { + checkArgument(node instanceof NodeWithValue); + return Builders.leafSetEntryBuilder().withNodeIdentifier((NodeWithValue) node) + .withValue(((NodeWithValue) node).getValue()); } - } }