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.Optional;
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.StmtContext.Mutable;
20 * Utility forwarding implementation of {@link StatementSupport} contract. This class is useful for implementing
23 * @author Robert Varga
25 * @param <A> Argument type
26 * @param <D> Declared Statement representation
27 * @param <E> Effective Statement representation
30 public abstract class ForwardingStatementSupport<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>>
31 extends ForwardingObject implements StatementSupport<A, D, E> {
34 protected abstract StatementSupport<A, D, E> delegate();
37 public D createDeclared(final StmtContext<A, D, ?> ctx) {
38 return delegate().createDeclared(ctx);
42 public E createEffective(final StmtContext<A, D, E> ctx) {
43 return delegate().createEffective(ctx);
47 public StatementDefinition getPublicView() {
48 return delegate().getPublicView();
52 public A parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
53 return delegate().parseArgumentValue(ctx, value);
57 public void onStatementAdded(final Mutable<A, D, E> stmt) {
58 delegate().onStatementAdded(stmt);
62 public void onPreLinkageDeclared(final Mutable<A, D, E> stmt) {
63 delegate().onPreLinkageDeclared(stmt);
67 public void onLinkageDeclared(final Mutable<A, D, E> stmt) {
68 delegate().onLinkageDeclared(stmt);
72 public void onStatementDefinitionDeclared(final Mutable<A, D, E> stmt) {
73 delegate().onStatementDefinitionDeclared(stmt);
77 public void onFullDefinitionDeclared(final Mutable<A, D, E> stmt) {
78 delegate().onFullDefinitionDeclared(stmt);
82 public boolean hasArgumentSpecificSupports() {
83 return delegate().hasArgumentSpecificSupports();
87 public StatementSupport<?, ?, ?> getSupportSpecificForArgument(final String argument) {
88 return delegate().getSupportSpecificForArgument(argument);
92 public Optional<? extends Mutable<?, ?, ?>> copyAsChildOf(final Mutable<?, ?, ?> stmt,
93 final Mutable<?, ?, ?> parent, final CopyType type, final QNameModule targetModule) {
94 return delegate().copyAsChildOf(stmt, parent, type, targetModule);