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
8 package org.opendaylight.yangtools.yang.parser.stmt.reactor;
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;
24 public class StatementDefinitionContext<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>> {
25 private final StatementSupport<A, D, E> support;
27 public StatementDefinitionContext(final StatementSupport<A, D, E> support) {
28 this.support = Preconditions.checkNotNull(support);
31 public StatementFactory<A,D,E> getFactory() {
35 public A parseArgumentValue(final StmtContext<A, D, E> context, final String value) {
36 return support.parseArgumentValue(context,value);
39 public void checkNamespaceAllowed(final Class<? extends IdentifierNamespace<?,?>> namespace) {
43 public StatementDefinition getPublicView() {
44 return support.getPublicView();
47 public boolean onStatementAdded(final Mutable<A, D, E> stmt) {
48 support.onStatementAdded(stmt);
53 public void onDeclarationFinished(final Mutable<A, D, E> statement, final ModelProcessingPhase phase) {
55 case SOURCE_PRE_LINKAGE:
56 support.onPreLinkageDeclared(statement);
59 support.onLinkageDeclared(statement);
61 case STATEMENT_DEFINITION:
62 support.onStatementDefinitionDeclared(statement);
64 case FULL_DECLARATION:
65 support.onFullDefinitionDeclared(statement);
72 public Class<?> getRepresentingClass() {
73 return support.getDeclaredRepresentationClass();
76 public boolean hasArgument() {
77 return support.getArgumentName() != null;
80 public QName getStatementName() {
81 return support.getStatementName();
85 public final String toString() {
86 return addToStringAttributes(MoreObjects.toStringHelper(this).omitNullValues()).toString();
89 protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
90 return toStringHelper.add("statement", getStatementName());