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%2Fbuilder%2Fimpl%2FImmutableAugmentationNodeBuilder.java;h=ecc0d6534fde16dfd04c8cb0d26726d84fbbf914;hb=ac4b2ade2f614701d1ae44381b6c2963f15587bb;hp=a605268b91bf9bfcc23569a2f656b3b4dc217c2d;hpb=eedbf1abb168811cf17d44cce4af736e689288ff;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeBuilder.java index a605268b91..ecc0d6534f 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeBuilder.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeBuilder.java @@ -9,43 +9,71 @@ package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; import java.util.Map; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException; import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerNode; -import com.google.common.base.Preconditions; +public class ImmutableAugmentationNodeBuilder extends AbstractImmutableDataContainerNodeBuilder { -public class ImmutableAugmentationNodeBuilder - extends AbstractImmutableDataContainerNodeBuilder { + protected ImmutableAugmentationNodeBuilder() { + super(); + } + + protected ImmutableAugmentationNodeBuilder(final int sizeHint) { + super(sizeHint); + } + + public ImmutableAugmentationNodeBuilder(final ImmutableAugmentationNode node) { + super(node); + } - public static DataContainerNodeBuilder create() { + public static DataContainerNodeBuilder create() { return new ImmutableAugmentationNodeBuilder(); } + public static DataContainerNodeBuilder create(final int sizeHint) { + return new ImmutableAugmentationNodeBuilder(sizeHint); + } + + public static DataContainerNodeBuilder create(final AugmentationNode node) { + if (!(node instanceof ImmutableAugmentationNode)) { + throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass())); + } + + return new ImmutableAugmentationNodeBuilder((ImmutableAugmentationNode)node); + } + @Override - public DataContainerNodeBuilder withChild( + public DataContainerNodeBuilder withChild( final DataContainerChild child) { // Check nested augments - Preconditions.checkArgument(child instanceof AugmentationNode == false, + DataValidationException.checkLegalData(child instanceof AugmentationNode == false, "Unable to add: %s, as a child for: %s, Nested augmentations are not permitted", child.getNodeType(), getNodeIdentifier() == null ? this : getNodeIdentifier()); return super.withChild(child); } + @Override + public DataContainerNodeBuilder withoutChild(final PathArgument key) { + return super.withoutChild(key); + } + @Override public AugmentationNode build() { return new ImmutableAugmentationNode(getNodeIdentifier(), buildValue()); } - static final class ImmutableAugmentationNode - extends AbstractImmutableDataContainerNode - implements AugmentationNode { + private static final class ImmutableAugmentationNode extends AbstractImmutableDataContainerNode implements AugmentationNode { - ImmutableAugmentationNode(final InstanceIdentifier.AugmentationIdentifier nodeIdentifier, final Map> children) { + ImmutableAugmentationNode(final YangInstanceIdentifier.AugmentationIdentifier nodeIdentifier, final Map> children) { super(children, nodeIdentifier); } } + }