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%2FLeafListStatementImpl.java;h=f050ead6582e3707158ef6c73eba5cce2d28c7c5;hb=75299ccb6e8427760cdf23aed0efcf7caf6a0d1c;hp=06de848b2fc32cd8a47a5d21e2ee91d10f0384c5;hpb=f1c55073f8d7631007c01a401346cc83383e5745;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LeafListStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LeafListStatementImpl.java index 06de848b2f..f050ead658 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LeafListStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LeafListStatementImpl.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,37 +7,52 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.LeafListEffectiveStatementImpl; - -import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.UnitsStatement; -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 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.YangStmtMapping; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement; import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement; import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement; +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.TypeStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.UnitsStatement; 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.source.SourceException; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.Collection; +import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.LeafListEffectiveStatementImpl; public class LeafListStatementImpl extends AbstractDeclaredStatement implements LeafListStatement { + private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping + .LEAF_LIST) + .addOptional(YangStmtMapping.CONFIG) + .addOptional(YangStmtMapping.DESCRIPTION) + .addAny(YangStmtMapping.IF_FEATURE) + .addOptional(YangStmtMapping.MIN_ELEMENTS) + .addOptional(YangStmtMapping.MAX_ELEMENTS) + .addAny(YangStmtMapping.MUST) + .addOptional(YangStmtMapping.ORDERED_BY) + .addOptional(YangStmtMapping.REFERENCE) + .addOptional(YangStmtMapping.STATUS) + .addMandatory(YangStmtMapping.TYPE) + .addOptional(YangStmtMapping.UNITS) + .addOptional(YangStmtMapping.WHEN) + .build(); protected LeafListStatementImpl( - StmtContext context) { + final StmtContext context) { super(context); } @@ -46,26 +61,44 @@ public class LeafListStatementImpl extends AbstractDeclaredStatement AbstractStatementSupport> { public Definition() { - super(Rfc6020Mapping.LEAF_LIST); + super(YangStmtMapping.LEAF_LIST); + } + + @Override + public void onStatementAdded( + final Mutable> stmt) { + stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt); } @Override - public QName parseArgumentValue(StmtContext ctx, String value) - throws SourceException { + public QName parseArgumentValue(final StmtContext ctx, final String value) + { return Utils.qNameFromArgument(ctx, value); } @Override public LeafListStatement createDeclared( - StmtContext ctx) { + final StmtContext ctx) { return new LeafListStatementImpl(ctx); } @Override public EffectiveStatement createEffective( - StmtContext> ctx) { + final StmtContext> ctx) { return new LeafListEffectiveStatementImpl(ctx); } + + @Override + public void onFullDefinitionDeclared(final Mutable> stmt) { + super.onFullDefinitionDeclared(stmt); + getSubstatementValidator().validate(stmt); + } + + @Override + protected SubstatementValidator getSubstatementValidator() { + return SUBSTATEMENT_VALIDATOR; + } } @Nonnull @@ -129,6 +162,7 @@ public class LeafListStatementImpl extends AbstractDeclaredStatement return allDeclared(MustStatement.class); } + @Nonnull @Override public TypeStatement getType() { return firstDeclared(TypeStatement.class);