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%2FImmutableMapNodeSchemaAwareBuilder.java;h=a5adfba9d933beb9840cf06e178e25a51ff6e400;hb=3680e198a70129fafa634eeb3fb49e8401fff010;hp=77a0e496d5c083870b9eddab867bdf0ead5d49d9;hpb=3583a98815919107c1c23025957e94b31efcbe30;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeSchemaAwareBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeSchemaAwareBuilder.java index 77a0e496d5..a5adfba9d9 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeSchemaAwareBuilder.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeSchemaAwareBuilder.java @@ -7,37 +7,51 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; +import com.google.common.base.Preconditions; +import java.util.Collections; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; -import com.google.common.base.Preconditions; - public class ImmutableMapNodeSchemaAwareBuilder extends ImmutableMapNodeBuilder { private final ListSchemaNode schema; - protected ImmutableMapNodeSchemaAwareBuilder(ListSchemaNode schema) { - super(); - this.schema = schema; - super.withNodeIdentifier(new InstanceIdentifier.NodeIdentifier(schema.getQName())); + protected ImmutableMapNodeSchemaAwareBuilder(final ListSchemaNode schema) { + this.schema = Preconditions.checkNotNull(schema); + super.withNodeIdentifier(NodeIdentifier.create(schema.getQName())); + } + + protected ImmutableMapNodeSchemaAwareBuilder(final ListSchemaNode schema, final ImmutableMapNode node) { + super(node); + this.schema = Preconditions.checkNotNull(schema); + super.withNodeIdentifier(NodeIdentifier.create(schema.getQName())); } - public static CollectionNodeBuilder create(ListSchemaNode schema) { + public static CollectionNodeBuilder create(final ListSchemaNode schema) { return new ImmutableMapNodeSchemaAwareBuilder(schema); } + public static CollectionNodeBuilder create(final ListSchemaNode schema, final MapNode node) { + if (!(node instanceof ImmutableMapNode)) { + throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass())); + } + + return new ImmutableMapNodeSchemaAwareBuilder(schema, (ImmutableMapNode) node); + } + @Override - public CollectionNodeBuilder withChild(MapEntryNode child) { - Preconditions.checkArgument(schema.getQName().equals(child.getNodeType()), - "Incompatible node type, should be: %s, is: %s", schema.getQName(), child.getNodeType()); + public CollectionNodeBuilder withChild(final MapEntryNode child) { + DataValidationException.checkLegalChild(schema.getQName().equals(child.getNodeType()), child.getIdentifier(), + schema, Collections.singleton(schema.getQName())); return super.withChild(child); } @Override - public CollectionNodeBuilder withNodeIdentifier(InstanceIdentifier.NodeIdentifier nodeIdentifier) { + public CollectionNodeBuilder withNodeIdentifier(final NodeIdentifier withNodeIdentifier) { throw new UnsupportedOperationException("Node identifier created from schema"); } }