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 java.util.Optional;
14 import org.opendaylight.yangtools.yang.common.QName;
15 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
16 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
17 import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace;
18 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
19 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
20 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementFactory;
21 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
22 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
23 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
24 import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
26 public class StatementDefinitionContext<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>> {
27 private final StatementSupport<A, D, E> support;
29 public StatementDefinitionContext(final StatementSupport<A, D, E> support) {
30 this.support = Preconditions.checkNotNull(support);
33 public StatementFactory<A,D,E> getFactory() {
37 public A parseArgumentValue(final StmtContext<A, D, E> context, final String value) {
38 return support.parseArgumentValue(context,value);
41 public void checkNamespaceAllowed(final Class<? extends IdentifierNamespace<?,?>> namespace) {
45 public StatementDefinition getPublicView() {
46 return support.getPublicView();
49 public Optional<StatementContextBase<?, ?, ?>> beforeSubStatementCreated(final Mutable<?, ?, ?> stmt, final int offset, final StatementDefinitionContext<?, ?, ?> def, final StatementSourceReference ref,
50 final String argument) {
51 return support.beforeSubStatementCreated(stmt, offset, def, ref, argument);
54 public boolean onStatementAdded(final Mutable<A, D, E> stmt) {
55 support.onStatementAdded(stmt);
60 public void onDeclarationFinished(final Mutable<A, D, E> statement, final ModelProcessingPhase phase) {
62 case SOURCE_PRE_LINKAGE:
63 support.onPreLinkageDeclared(statement);
66 support.onLinkageDeclared(statement);
68 case STATEMENT_DEFINITION:
69 support.onStatementDefinitionDeclared(statement);
71 case FULL_DECLARATION:
72 support.onFullDefinitionDeclared(statement);
79 public Class<?> getRepresentingClass() {
80 return support.getDeclaredRepresentationClass();
83 public boolean hasArgument() {
84 return support.getArgumentName() != null;
87 public QName getStatementName() {
88 return support.getStatementName();
92 public final String toString() {
93 return addToStringAttributes(MoreObjects.toStringHelper(this).omitNullValues()).toString();
96 protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
97 return toStringHelper.add("statement", getStatementName());