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.spi.meta;
11 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
12 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
13 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
14 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
18 * Support for processing concrete YANG statement.
20 * This interface is intended to be implemented by developers, which want to
21 * introduce support of statement to parser. Consider subclassing
22 * {@link AbstractStatementSupport} for easier implementation of this interface.
27 * Declared Statement representation
29 * Effective Statement representation
31 public interface StatementSupport<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>> extends StatementDefinition, StatementFactory<A, D, E> {
34 * Returns public statement definition, which will be present in builded statements.
36 * Public statement definition may be used to provide different implementation
37 * of statement definition, which will not retain any build specific data
40 * @return public statement definition, which will be present in builded statements.
42 StatementDefinition getPublicView();
46 * Parses textual representation of argument in object representation.
48 * @param ctx Context, which may be used to access source-specific namespaces
49 * required for parsing.
50 * @param value String representation of value, as was present in text source.
51 * @return Parsed value
53 A parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) throws SourceException;
57 * Invoked when statement is added to build context.
60 * Context of added statement. No substatement are available.
62 void onStatementAdded(StmtContext.Mutable<A, D, E> stmt);
66 * Invoked when statement is closed during
67 * {@link ModelProcessingPhase#STATEMENT_DEFINITION} phase.
69 * Invoked when statement is closed during
70 * {@link ModelProcessingPhase#STATEMENT_DEFINITION} phase, only substatements from
71 * this and previous phase are available.
73 * Implementation may use method to perform actions on this event or
74 * register modification action using
75 * {@link StmtContext.Mutable#newInferenceAction(ModelProcessingPhase)}.
78 * Context of added statement.
80 void onLinkageDeclared(StmtContext.Mutable<A, D, E> stmt) throws SourceException;
84 * Invoked when statement is closed during
85 * {@link ModelProcessingPhase#STATEMENT_DEFINITION} phase.
87 * Invoked when statement is closed during
88 * {@link ModelProcessingPhase#STATEMENT_DEFINITION} phase, only substatements from
89 * this phase are available.
91 * Implementation may use method to perform actions on this event or
92 * register modification action using
93 * {@link StmtContext.Mutable#newInferenceAction(ModelProcessingPhase)}.
96 * Context of added statement. Argument and statement parent is
99 void onStatementDefinitionDeclared(StmtContext.Mutable<A, D, E> stmt) throws SourceException;
103 * Invoked when statement is closed during
104 * {@link ModelProcessingPhase#FULL_DECLARATION} phase.
106 * Invoked when statement is closed during
107 * {@link ModelProcessingPhase#FULL_DECLARATION} phase, only substatements
108 * from this phase are available.
110 * Implementation may use method to perform actions on this event or
111 * register modification action using
112 * {@link StmtContext.Mutable#newInferenceAction(ModelProcessingPhase)}.
116 * Context of added statement. Argument and statement parent is
119 void onFullDefinitionDeclared(StmtContext.Mutable<A, D, E> stmt) throws SourceException;