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=e445f42fb630f23e68a66ba5ed5d44c4678c2acc;hb=1e24596294bdc2a57a808b77a2d9862198e4f46e;hp=965528471275f934e0909f64420241d5d3910697;hpb=0b928fe36320a49adab9c12e6efd484f016eeace;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 9655284712..e445f42fb6 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 @@ -8,19 +8,19 @@ package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; import java.util.Map; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.eclipse.jdt.annotation.NonNull; 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.api.schema.builder.DataContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException; import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerNode; -public class ImmutableAugmentationNodeBuilder extends AbstractImmutableDataContainerNodeBuilder { +public class ImmutableAugmentationNodeBuilder + extends AbstractImmutableDataContainerNodeBuilder { protected ImmutableAugmentationNodeBuilder() { - super(); } protected ImmutableAugmentationNodeBuilder(final int sizeHint) { @@ -31,15 +31,17 @@ public class ImmutableAugmentationNodeBuilder extends AbstractImmutableDataConta super(node); } - public static DataContainerNodeBuilder create() { + public static @NonNull DataContainerNodeBuilder create() { return new ImmutableAugmentationNodeBuilder(); } - public static DataContainerNodeBuilder create(final int sizeHint) { + public static @NonNull DataContainerNodeBuilder create( + final int sizeHint) { return new ImmutableAugmentationNodeBuilder(sizeHint); } - public static DataContainerNodeBuilder create(final AugmentationNode node) { + public static @NonNull DataContainerNodeBuilder create( + final AugmentationNode node) { if (!(node instanceof ImmutableAugmentationNode)) { throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass())); } @@ -48,12 +50,15 @@ public class ImmutableAugmentationNodeBuilder extends AbstractImmutableDataConta } @Override - public DataContainerNodeBuilder withChild( - final DataContainerChild child) { + public DataContainerNodeBuilder withChild( + final DataContainerChild child) { // Check nested augments - DataValidationException.checkLegalData(!(child instanceof AugmentationNode), - "Unable to add: %s, as a child for: %s, Nested augmentations are not permitted", child.getNodeType(), - getNodeIdentifier() == null ? this : getNodeIdentifier()); + if (child instanceof AugmentationNode) { + final AugmentationIdentifier myId = getNodeIdentifier(); + throw new DataValidationException(String.format( + "Unable to add: %s, as a child for: %s, Nested augmentations are not permitted", child.getIdentifier(), + myId == null ? this : myId)); + } return super.withChild(child); } @@ -68,11 +73,18 @@ public class ImmutableAugmentationNodeBuilder extends AbstractImmutableDataConta return new ImmutableAugmentationNode(getNodeIdentifier(), buildValue()); } - private static final class ImmutableAugmentationNode extends AbstractImmutableDataContainerNode implements AugmentationNode { + private static final class ImmutableAugmentationNode + extends AbstractImmutableDataContainerNode + implements AugmentationNode { - ImmutableAugmentationNode(final YangInstanceIdentifier.AugmentationIdentifier nodeIdentifier, final Map> children) { + ImmutableAugmentationNode(final AugmentationIdentifier nodeIdentifier, + final Map children) { super(children, nodeIdentifier); } - } + @Override + protected Class implementedType() { + return AugmentationNode.class; + } + } }