2 * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.feature;
10 import org.opendaylight.yangtools.yang.common.QName;
11 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
12 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
13 import org.opendaylight.yangtools.yang.model.api.stmt.FeatureStatement;
14 import org.opendaylight.yangtools.yang.parser.spi.FeatureNamespace;
15 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
16 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
17 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
18 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
19 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
21 public final class FeatureStatementSupport
22 extends AbstractQNameStatementSupport<FeatureStatement, EffectiveStatement<QName, FeatureStatement>> {
23 private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
24 YangStmtMapping.FEATURE)
25 .addOptional(YangStmtMapping.DESCRIPTION)
26 .addAny(YangStmtMapping.IF_FEATURE)
27 .addOptional(YangStmtMapping.STATUS)
28 .addOptional(YangStmtMapping.REFERENCE)
30 private static final FeatureStatementSupport INSTANCE = new FeatureStatementSupport();
32 private FeatureStatementSupport() {
33 super(YangStmtMapping.FEATURE);
36 public static FeatureStatementSupport getInstance() {
41 public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
42 return StmtContextUtils.parseIdentifier(ctx, value);
46 public void onFullDefinitionDeclared(final Mutable<QName, FeatureStatement,
47 EffectiveStatement<QName, FeatureStatement>> stmt) {
48 super.onFullDefinitionDeclared(stmt);
49 stmt.addContext(FeatureNamespace.class, stmt.coerceStatementArgument(), stmt);
53 public FeatureStatement createDeclared(final StmtContext<QName, FeatureStatement, ?> ctx) {
54 return new FeatureStatementImpl(ctx);
58 public EffectiveStatement<QName, FeatureStatement> createEffective(
59 final StmtContext<QName, FeatureStatement, EffectiveStatement<QName, FeatureStatement>> ctx) {
60 return new FeatureEffectiveStatementImpl(ctx);
64 protected SubstatementValidator getSubstatementValidator() {
65 return SUBSTATEMENT_VALIDATOR;