4dd0634ccaccb1e4cbd17f116ce37077da6999d3
[yangtools.git] / yang / yang-parser-spi / src / main / java / org / opendaylight / yangtools / yang / parser / spi / meta / ForwardingStatementSupport.java
1 /*
2  * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
3  *
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
7  */
8 package org.opendaylight.yangtools.yang.parser.spi.meta;
9
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;
17
18 /**
19  * Utility forwarding implementation of {@link StatementSupport} contract. This class is useful for implementing
20  * wrapped statements.
21  *
22  * @author Robert Varga
23  *
24  * @param <A> Argument type
25  * @param <D> Declared Statement representation
26  * @param <E> Effective Statement representation
27  */
28 @Beta
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;
32
33     protected ForwardingStatementSupport(final StatementSupport<A, D, E> delegate) {
34         super(delegate);
35         this.delegate = delegate;
36     }
37
38     @Override
39     public D createDeclared(final StmtContext<A, D, ?> ctx) {
40         return delegate.createDeclared(ctx);
41     }
42
43     @Override
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);
48     }
49
50     @Override
51     public E createEffective(final Current<A, D> stmt,
52             final Collection<? extends EffectiveStatement<?, ?>> substatements) {
53         return delegate.createEffective(stmt, substatements);
54     }
55
56     @Override
57     public A parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
58         return delegate.parseArgumentValue(ctx, value);
59     }
60
61     @Override
62     public void onStatementAdded(final Mutable<A, D, E> stmt) {
63         delegate.onStatementAdded(stmt);
64     }
65
66     @Override
67     public void onPreLinkageDeclared(final Mutable<A, D, E> stmt) {
68         delegate.onPreLinkageDeclared(stmt);
69     }
70
71     @Override
72     public void onLinkageDeclared(final Mutable<A, D, E> stmt) {
73         delegate.onLinkageDeclared(stmt);
74     }
75
76     @Override
77     public void onStatementDefinitionDeclared(final Mutable<A, D, E> stmt) {
78         delegate.onStatementDefinitionDeclared(stmt);
79     }
80
81     @Override
82     public void onFullDefinitionDeclared(final Mutable<A, D, E> stmt) {
83         delegate.onFullDefinitionDeclared(stmt);
84     }
85
86     @Override
87     public boolean hasArgumentSpecificSupports() {
88         return delegate.hasArgumentSpecificSupports();
89     }
90
91     @Override
92     public StatementSupport<?, ?, ?> getSupportSpecificForArgument(final String argument) {
93         return delegate.getSupportSpecificForArgument(argument);
94     }
95
96     @Override
97     protected SubstatementValidator getSubstatementValidator() {
98         return delegate.getSubstatementValidator();
99     }
100
101     @Override
102     public String toString() {
103         return delegate.toString();
104     }
105 }