Merge "Fix missing format placeholder"
[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         return false;
48     }
49
50
51     public void onDeclarationFinished(Mutable<A,D,E> statement, ModelProcessingPhase phase) throws SourceException {
52         switch (phase) {
53         case SOURCE_LINKAGE:
54             support.onLinkageDeclared(statement);
55             break;
56         case STATEMENT_DEFINITION:
57             support.onStatementDefinitionDeclared(statement);
58             break;
59         case FULL_DECLARATION:
60             support.onFullDefinitionDeclared(statement);
61             break;
62         default:
63             break;
64         }
65     }
66
67
68
69     public Class<?> getRepresentingClass() {
70         return support.getDeclaredRepresentationClass();
71     }
72
73
74     public boolean hasArgument() {
75         return support.getArgumentName() != null;
76     }
77
78
79     public QName getStatementName() {
80         return support.getStatementName();
81     }
82
83 }