2 * Copyright (c) 2017 Pantheon Technologies s.r.o. 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.spi.meta;
10 import com.google.common.annotations.Beta;
11 import java.util.stream.Stream;
12 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
13 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
14 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
15 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
18 * Utility forwarding implementation of {@link StatementSupport} contract. This class is useful for implementing
21 * @author Robert Varga
23 * @param <A> Argument type
24 * @param <D> Declared Statement representation
25 * @param <E> Effective Statement representation
28 public abstract class ForwardingStatementSupport<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>>
29 extends StatementSupport<A, D, E> {
30 private final StatementSupport<A, D, E> delegate;
32 protected ForwardingStatementSupport(final StatementSupport<A, D, E> delegate) {
34 this.delegate = delegate;
38 public D createDeclared(final BoundStmtCtx<A> ctx, final Stream<DeclaredStatement<?>> substatements) {
39 return delegate.createDeclared(ctx, substatements);
43 public E createEffective(final Current<A, D> stmt,
44 final Stream<? extends StmtContext<?, ?, ?>> declaredSubstatements,
45 final Stream<? extends StmtContext<?, ?, ?>> inferredSubstatements) {
46 return delegate.createEffective(stmt, declaredSubstatements, inferredSubstatements);
50 public E copyEffective(final Current<A, D> stmt, final E original) {
51 return delegate.copyEffective(stmt, original);
55 public A parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
56 return delegate.parseArgumentValue(ctx, value);
60 public void onStatementAdded(final Mutable<A, D, E> stmt) {
61 delegate.onStatementAdded(stmt);
65 public void onPreLinkageDeclared(final Mutable<A, D, E> stmt) {
66 delegate.onPreLinkageDeclared(stmt);
70 public void onLinkageDeclared(final Mutable<A, D, E> stmt) {
71 delegate.onLinkageDeclared(stmt);
75 public void onStatementDefinitionDeclared(final Mutable<A, D, E> stmt) {
76 delegate.onStatementDefinitionDeclared(stmt);
80 public void onFullDefinitionDeclared(final Mutable<A, D, E> stmt) {
81 delegate.onFullDefinitionDeclared(stmt);
85 public boolean hasArgumentSpecificSupports() {
86 return delegate.hasArgumentSpecificSupports();
90 public StatementSupport<?, ?, ?> getSupportSpecificForArgument(final String argument) {
91 return delegate.getSupportSpecificForArgument(argument);
95 protected SubstatementValidator substatementValidator() {
96 return delegate.substatementValidator();
100 public String toString() {
101 return delegate.toString();