2 * Copyright (c) 2015 Cisco Systems, Inc. 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
9 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
11 import javax.annotation.Nullable;
12 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
13 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
14 import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
15 import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
16 import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement;
17 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
18 import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator;
19 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
20 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
21 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
22 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
23 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.RefineEffectiveStatementImpl;
25 public class RefineStatementImpl extends AbstractDeclaredStatement<SchemaNodeIdentifier> implements RefineStatement {
26 private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
28 .add(Rfc6020Mapping.DEFAULT, 0, 1)
29 .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
30 .add(Rfc6020Mapping.REFERENCE, 0, 1)
31 .add(Rfc6020Mapping.CONFIG, 0, 1)
32 .add(Rfc6020Mapping.MANDATORY, 0, 1)
33 .add(Rfc6020Mapping.PRESENCE, 0, 1)
34 .add(Rfc6020Mapping.MUST, 0, 1)
35 .add(Rfc6020Mapping.MIN_ELEMENTS, 0, 1)
36 .add(Rfc6020Mapping.MAX_ELEMENTS, 0, 1)
37 .build(SubstatementValidator.SpecialCase.NOTNULL);
39 protected RefineStatementImpl(final StmtContext<SchemaNodeIdentifier, RefineStatement, ?> context) {
43 public static class Definition extends
44 AbstractStatementSupport<SchemaNodeIdentifier, RefineStatement, EffectiveStatement<SchemaNodeIdentifier, RefineStatement>> {
47 super(Rfc6020Mapping.REFINE);
51 public SchemaNodeIdentifier parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
52 return Utils.nodeIdentifierFromPath(ctx, value);
56 public RefineStatement createDeclared(final StmtContext<SchemaNodeIdentifier, RefineStatement, ?> ctx) {
57 return new RefineStatementImpl(ctx);
61 public EffectiveStatement<SchemaNodeIdentifier, RefineStatement> createEffective(
62 final StmtContext<SchemaNodeIdentifier, RefineStatement, EffectiveStatement<SchemaNodeIdentifier, RefineStatement>> ctx) {
63 return new RefineEffectiveStatementImpl(ctx);
67 public void onFullDefinitionDeclared(StmtContext.Mutable<SchemaNodeIdentifier, RefineStatement,
68 EffectiveStatement<SchemaNodeIdentifier, RefineStatement>> stmt) throws SourceException {
69 super.onFullDefinitionDeclared(stmt);
70 SUBSTATEMENT_VALIDATOR.validate(stmt);
75 public String getTargetNode() {
81 public DescriptionStatement getDescription() {
82 return firstDeclared(DescriptionStatement.class);
87 public ReferenceStatement getReference() {
88 return firstDeclared(ReferenceStatement.class);