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.openconfig.stmt;
10 import com.google.common.collect.ImmutableList;
11 import org.opendaylight.yangtools.concepts.SemVer;
12 import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
13 import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionEffectiveStatement;
14 import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionStatement;
15 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
16 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
17 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport;
18 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
19 import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionNamespace;
20 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
21 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
22 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
24 public final class OpenConfigVersionSupport
25 extends BaseStatementSupport<SemVer, OpenConfigVersionStatement, OpenConfigVersionEffectiveStatement> {
26 private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
27 OpenConfigStatements.OPENCONFIG_VERSION).build();
28 private static final OpenConfigVersionSupport INSTANCE = new OpenConfigVersionSupport();
30 private OpenConfigVersionSupport() {
31 super(OpenConfigStatements.OPENCONFIG_VERSION);
34 public static OpenConfigVersionSupport getInstance() {
39 public SemVer parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
40 return SemVer.valueOf(value);
44 public void onLinkageDeclared(
45 final Mutable<SemVer, OpenConfigVersionStatement, OpenConfigVersionEffectiveStatement> stmt) {
46 stmt.addToNs(SemanticVersionNamespace.class, stmt.getParentContext(), stmt.argument());
50 protected SubstatementValidator getSubstatementValidator() {
51 return SUBSTATEMENT_VALIDATOR;
55 protected OpenConfigVersionStatement createDeclared(final StmtContext<SemVer, OpenConfigVersionStatement, ?> ctx,
56 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
57 return new OpenConfigVersionStatementImpl(ctx.getArgument(), substatements);
61 protected OpenConfigVersionStatement createEmptyDeclared(
62 final StmtContext<SemVer, OpenConfigVersionStatement, ?> ctx) {
63 return createDeclared(ctx, ImmutableList.of());
67 protected OpenConfigVersionEffectiveStatement createEffective(
68 final Current<SemVer, OpenConfigVersionStatement> stmt,
69 final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
70 return new OpenConfigVersionEffectiveStatementImpl(stmt, substatements);