fba236cd5e7bcfe1c3c38617d774d3879e3cd992
[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.NamespaceNotAvailableException;
17 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementFactory;
18 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
19 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
20 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
21 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
22
23 class StatementDefinitionContext<A,D extends DeclaredStatement<A>,E extends EffectiveStatement<A,D>> {
24     private final StatementSupport<A,D,E> support;
25     public StatementDefinitionContext(StatementSupport<A,D,E> support) {
26         this.support= support;
27     }
28
29
30     public StatementFactory<A,D,E> getFactory() {
31         return support;
32     }
33
34     public A parseArgumentValue(StmtContext<A,D,E> context, String value) throws SourceException {
35         return support.parseArgumentValue(context,value);
36     }
37
38
39     public void checkNamespaceAllowed(Class<? extends IdentifierNamespace<?,?>> namespace) throws NamespaceNotAvailableException {
40         // Noop
41     }
42
43     public StatementDefinition getPublicView() {
44         return support.getPublicView();
45     }
46
47     public boolean onStatementAdded(Mutable<A,D,E> 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_LINKAGE:
55             support.onLinkageDeclared(statement);
56             break;
57         case STATEMENT_DEFINITION:
58             support.onStatementDefinitionDeclared(statement);
59         case FULL_DECLARATION:
60             support.onFullDefinitionDeclared(statement);
61         default:
62             break;
63         }
64     }
65
66
67
68     public Class<?> getRepresentingClass() {
69         return support.getDeclaredRepresentationClass();
70     }
71
72
73     public boolean hasArgument() {
74         return support.getArgumentName() != null;
75     }
76
77
78     public QName getStatementName() {
79         return support.getStatementName();
80     }
81
82 }