Improve parser reactor logging
[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 com.google.common.base.MoreObjects;
11 import com.google.common.base.MoreObjects.ToStringHelper;
12 import com.google.common.base.Preconditions;
13 import org.opendaylight.yangtools.yang.common.QName;
14 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
15 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
16 import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace;
17 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
18 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
19 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementFactory;
20 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
21 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
22 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
23
24 public class StatementDefinitionContext<A,D extends DeclaredStatement<A>,E extends EffectiveStatement<A,D>> {
25     private final StatementSupport<A,D,E> support;
26
27     public StatementDefinitionContext(final StatementSupport<A,D,E> support) {
28         this.support = Preconditions.checkNotNull(support);
29     }
30
31     public StatementFactory<A,D,E> getFactory() {
32         return support;
33     }
34
35     public A parseArgumentValue(final StmtContext<A,D,E> context, final String value) {
36         return support.parseArgumentValue(context,value);
37     }
38
39     public void checkNamespaceAllowed(final Class<? extends IdentifierNamespace<?,?>> namespace) {
40         // Noop
41     }
42
43     public StatementDefinition getPublicView() {
44         return support.getPublicView();
45     }
46
47     public boolean onStatementAdded(final Mutable<A,D,E> stmt) {
48         support.onStatementAdded(stmt);
49         return false;
50     }
51
52
53     public void onDeclarationFinished(final Mutable<A,D,E> statement, final ModelProcessingPhase phase) {
54         switch (phase) {
55         case SOURCE_PRE_LINKAGE:
56             support.onPreLinkageDeclared(statement);
57             break;
58         case SOURCE_LINKAGE:
59             support.onLinkageDeclared(statement);
60             break;
61         case STATEMENT_DEFINITION:
62             support.onStatementDefinitionDeclared(statement);
63             break;
64         case FULL_DECLARATION:
65             support.onFullDefinitionDeclared(statement);
66             break;
67         default:
68             break;
69         }
70     }
71
72     public Class<?> getRepresentingClass() {
73         return support.getDeclaredRepresentationClass();
74     }
75
76     public boolean hasArgument() {
77         return support.getArgumentName() != null;
78     }
79
80     public QName getStatementName() {
81         return support.getStatementName();
82     }
83
84     @Override
85     public final String toString() {
86         return addToStringAttributes(MoreObjects.toStringHelper(this).omitNullValues()).toString();
87     }
88
89     protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
90         return toStringHelper.add("statement", getStatementName());
91     }
92 }