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 com.google.common.collect.ForwardingObject;
12 import java.util.stream.Stream;
13 import org.opendaylight.yangtools.yang.common.QNameModule;
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.StatementDefinition;
17 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
18 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
21 * Utility forwarding implementation of {@link StatementSupport} contract. This class is useful for implementing
24 * @author Robert Varga
26 * @param <A> Argument type
27 * @param <D> Declared Statement representation
28 * @param <E> Effective Statement representation
31 public abstract class ForwardingStatementSupport<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>>
32 extends ForwardingObject implements StatementSupport<A, D, E> {
35 protected abstract StatementSupport<A, D, E> delegate();
38 public D createDeclared(final StmtContext<A, D, ?> ctx) {
39 return delegate().createDeclared(ctx);
43 public E createEffective(final Current<A, D> stmt,
44 final Stream<? extends StmtContext<?, ?, ?>> declaredSubstatements,
45 final Stream<? extends StmtContext<?, ?, ?>> effectiveSubstatements) {
46 return delegate().createEffective(stmt, declaredSubstatements, effectiveSubstatements);
50 public StatementDefinition getPublicView() {
51 return delegate().getPublicView();
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 public CopyPolicy applyCopyPolicy(final Mutable<?, ?, ?> stmt, final Mutable<?, ?, ?> parent,
96 final CopyType copyType, final QNameModule targetModule) {
97 return delegate().applyCopyPolicy(stmt, parent, copyType, targetModule);