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.Collection;
12 import java.util.stream.Stream;
13 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
14 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
15 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
16 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
19 * Utility forwarding implementation of {@link StatementSupport} contract. This class is useful for implementing
22 * @author Robert Varga
24 * @param <A> Argument type
25 * @param <D> Declared Statement representation
26 * @param <E> Effective Statement representation
29 public abstract class ForwardingStatementSupport<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>>
30 extends StatementSupport<A, D, E> {
31 private final StatementSupport<A, D, E> delegate;
33 protected ForwardingStatementSupport(final StatementSupport<A, D, E> delegate) {
35 this.delegate = delegate;
39 public D createDeclared(final StmtContext<A, D, ?> ctx) {
40 return delegate.createDeclared(ctx);
44 public E createEffective(final Current<A, D> stmt,
45 final Stream<? extends StmtContext<?, ?, ?>> declaredSubstatements,
46 final Stream<? extends StmtContext<?, ?, ?>> effectiveSubstatements) {
47 return delegate.createEffective(stmt, declaredSubstatements, effectiveSubstatements);
51 public E createEffective(final Current<A, D> stmt,
52 final Collection<? extends EffectiveStatement<?, ?>> substatements) {
53 return delegate.createEffective(stmt, substatements);
57 public A parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
58 return delegate.parseArgumentValue(ctx, value);
62 public void onStatementAdded(final Mutable<A, D, E> stmt) {
63 delegate.onStatementAdded(stmt);
67 public void onPreLinkageDeclared(final Mutable<A, D, E> stmt) {
68 delegate.onPreLinkageDeclared(stmt);
72 public void onLinkageDeclared(final Mutable<A, D, E> stmt) {
73 delegate.onLinkageDeclared(stmt);
77 public void onStatementDefinitionDeclared(final Mutable<A, D, E> stmt) {
78 delegate.onStatementDefinitionDeclared(stmt);
82 public void onFullDefinitionDeclared(final Mutable<A, D, E> stmt) {
83 delegate.onFullDefinitionDeclared(stmt);
87 public boolean hasArgumentSpecificSupports() {
88 return delegate.hasArgumentSpecificSupports();
92 public StatementSupport<?, ?, ?> getSupportSpecificForArgument(final String argument) {
93 return delegate.getSupportSpecificForArgument(argument);
97 protected SubstatementValidator getSubstatementValidator() {
98 return delegate.getSubstatementValidator();
102 public String toString() {
103 return delegate.toString();