Bug 4662: Introduce a SemanticVersion concept - pre-linkage phase
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / reactor / StatementDefinitionContext.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.yangtools.yang.parser.stmt.reactor;
9
10 import org.opendaylight.yangtools.yang.common.QName;
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.IdentifierNamespace;
14 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
15 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
16 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementFactory;
17 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
18 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
19 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
20 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
21
22 public class StatementDefinitionContext<A,D extends DeclaredStatement<A>,E extends EffectiveStatement<A,D>> {
23     private final StatementSupport<A,D,E> support;
24     public StatementDefinitionContext(StatementSupport<A,D,E> support) {
25         this.support= support;
26     }
27
28
29     public StatementFactory<A,D,E> getFactory() {
30         return support;
31     }
32
33     public A parseArgumentValue(StmtContext<A,D,E> context, String value) throws SourceException {
34         return support.parseArgumentValue(context,value);
35     }
36
37
38     public void checkNamespaceAllowed(Class<? extends IdentifierNamespace<?,?>> namespace) {
39         // Noop
40     }
41
42     public StatementDefinition getPublicView() {
43         return support.getPublicView();
44     }
45
46     public boolean onStatementAdded(Mutable<A,D,E> stmt) {
47         support.onStatementAdded(stmt);
48         return false;
49     }
50
51
52     public void onDeclarationFinished(Mutable<A,D,E> statement, ModelProcessingPhase phase) throws SourceException {
53         switch (phase) {
54         case SOURCE_PRE_LINKAGE:
55             support.onPreLinkageDeclared(statement);
56             break;
57         case SOURCE_LINKAGE:
58             support.onLinkageDeclared(statement);
59             break;
60         case STATEMENT_DEFINITION:
61             support.onStatementDefinitionDeclared(statement);
62             break;
63         case FULL_DECLARATION:
64             support.onFullDefinitionDeclared(statement);
65             break;
66         default:
67             break;
68         }
69     }
70
71
72
73     public Class<?> getRepresentingClass() {
74         return support.getDeclaredRepresentationClass();
75     }
76
77
78     public boolean hasArgument() {
79         return support.getArgumentName() != null;
80     }
81
82
83     public QName getStatementName() {
84         return support.getStatementName();
85     }
86
87 }