X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fstmt%2Frfc6020%2FListStatementImpl.java;h=622fa9859daf66d967f4339e3694e8143287d300;hb=refs%2Fchanges%2F74%2F31774%2F6;hp=3279abc8ff323d3d44dc275cf3daf4866eec3703;hpb=481a692d463636bbcf75f023da71703913e1b605;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ListStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ListStatementImpl.java index 3279abc8ff..622fa9859d 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ListStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ListStatementImpl.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the @@ -7,36 +7,64 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; -import org.opendaylight.yangtools.yang.model.api.stmt.DataDefinitionStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.MustStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.UniqueStatement; +import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX; +import java.util.Collection; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.DataDefinitionStatement; import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement; import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.MustStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement; import org.opendaylight.yangtools.yang.model.api.stmt.StatusStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.UniqueStatement; import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement; +import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; +import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.Collection; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ListEffectiveStatementImpl; public class ListStatementImpl extends AbstractDeclaredStatement implements ListStatement { + private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping + .LIST) + .add(Rfc6020Mapping.ANYXML, 0, MAX) + .add(Rfc6020Mapping.CHOICE, 0, MAX) + .add(Rfc6020Mapping.CONFIG, 0, 1) + .add(Rfc6020Mapping.CONTAINER, 0, MAX) + .add(Rfc6020Mapping.DESCRIPTION, 0, 1) + .add(Rfc6020Mapping.GROUPING, 0, MAX) + .add(Rfc6020Mapping.IF_FEATURE, 0, MAX) + .add(Rfc6020Mapping.KEY, 0, 1) + .add(Rfc6020Mapping.LEAF, 0, MAX) + .add(Rfc6020Mapping.LEAF_LIST, 0, MAX) + .add(Rfc6020Mapping.LIST, 0, MAX) + .add(Rfc6020Mapping.MAX_ELEMENTS, 0, 1) + .add(Rfc6020Mapping.MIN_ELEMENTS, 0, 1) + .add(Rfc6020Mapping.MUST, 0, MAX) + .add(Rfc6020Mapping.ORDERED_BY, 0, 1) + .add(Rfc6020Mapping.REFERENCE, 0, 1) + .add(Rfc6020Mapping.STATUS, 0, 1) + .add(Rfc6020Mapping.TYPEDEF, 0, MAX) + .add(Rfc6020Mapping.UNIQUE, 0, MAX) + .add(Rfc6020Mapping.USES, 0, MAX) + .add(Rfc6020Mapping.WHEN, 0, 1) + .build(); protected ListStatementImpl(StmtContext context) { super(context); @@ -56,6 +84,11 @@ public class ListStatementImpl extends AbstractDeclaredStatement return Utils.qNameFromArgument(ctx, value); } + @Override + public void onStatementAdded(Mutable> stmt) { + stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt); + } + @Override public ListStatement createDeclared( StmtContext ctx) { @@ -65,7 +98,14 @@ public class ListStatementImpl extends AbstractDeclaredStatement @Override public EffectiveStatement createEffective( StmtContext> ctx) { - throw new UnsupportedOperationException(); + return new ListEffectiveStatementImpl(ctx); + } + + @Override + public void onFullDefinitionDeclared(Mutable> stmt) throws SourceException { + super.onFullDefinitionDeclared(stmt); + SUBSTATEMENT_VALIDATOR.validate(stmt); } }