9e182b1fe17b538b945fdf104b8d39754f6c67c6
[hc2vpp.git] /
1 /*
2  * Copyright (c) 2016 Cisco and/or its affiliates.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.v3po2vpp.rev160406;
18
19 import static io.fd.honeycomb.v3po.translate.util.RWUtils.singletonChildReaderList;
20
21 import io.fd.honeycomb.v3po.translate.impl.read.CompositeChildReader;
22 import io.fd.honeycomb.v3po.translate.impl.read.CompositeListReader;
23 import io.fd.honeycomb.v3po.translate.read.ChildReader;
24 import io.fd.honeycomb.v3po.translate.util.RWUtils;
25 import io.fd.honeycomb.v3po.translate.util.read.ReflexiveAugmentReaderCustomizer;
26 import io.fd.honeycomb.v3po.translate.util.read.ReflexiveChildReaderCustomizer;
27 import io.fd.honeycomb.v3po.translate.v3po.interfacesstate.RewriteCustomizer;
28 import io.fd.honeycomb.v3po.translate.v3po.interfacesstate.SubInterfaceCustomizer;
29 import io.fd.honeycomb.v3po.translate.v3po.interfacesstate.SubInterfaceL2Customizer;
30 import io.fd.honeycomb.v3po.translate.v3po.interfacesstate.ip.SubInterfaceIpv4AddressCustomizer;
31 import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
32 import java.util.ArrayList;
33 import java.util.List;
34 import javax.annotation.Nonnull;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.SubinterfaceStateAugmentation;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.SubinterfaceStateAugmentationBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces.state._interface.SubInterfaces;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces.state._interface.SubInterfacesBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces.state._interface.sub.interfaces.SubInterface;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces.state._interface.sub.interfaces.SubInterfaceBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces.state._interface.sub.interfaces.SubInterfaceKey;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.L2;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.l2.Rewrite;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.ip4.attributes.Ipv4;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.ip4.attributes.Ipv4Builder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.ip4.attributes.ipv4.Address;
47 import org.opendaylight.yangtools.yang.binding.ChildOf;
48 import org.openvpp.jvpp.future.FutureJVpp;
49
50 final class SubinterfaceStateAugmentationReaderFactory {
51
52     private SubinterfaceStateAugmentationReaderFactory() {
53     }
54
55     private static ChildReader<L2> getL2Reader(@Nonnull final FutureJVpp futureJvpp,
56                                                  @Nonnull final NamingContext interfaceContext,
57                                                  @Nonnull final NamingContext bridgeDomainContext) {
58         final ChildReader<Rewrite> rewriteReader = new CompositeChildReader<>(
59             Rewrite.class, new RewriteCustomizer(futureJvpp, interfaceContext));
60
61         return new CompositeChildReader<>(L2.class,
62                 singletonChildReaderList(rewriteReader),
63                 new SubInterfaceL2Customizer(futureJvpp, interfaceContext, bridgeDomainContext));
64     }
65
66     private static ChildReader<Ipv4> getIpv4Reader(@Nonnull final FutureJVpp futureJvpp,
67                                                    @Nonnull final NamingContext interfaceContext) {
68
69         final ChildReader<Address> addressReader = new CompositeListReader<>(Address.class,
70             new SubInterfaceIpv4AddressCustomizer(futureJvpp, interfaceContext));
71
72         return new CompositeChildReader<>(
73             Ipv4.class,
74             RWUtils.singletonChildReaderList(addressReader),
75             new ReflexiveChildReaderCustomizer<>(Ipv4Builder.class));
76
77     }
78
79     static ChildReader<SubinterfaceStateAugmentation> createInstance(
80         @Nonnull final FutureJVpp futureJvpp, @Nonnull final NamingContext interfaceContext,
81         @Nonnull final NamingContext bridgeDomainContext) {
82
83         List<ChildReader<? extends ChildOf<SubInterface>>> childReaders = new ArrayList<>();
84
85         // TODO can get rid of that cast?
86         childReaders.add((ChildReader) getL2Reader(futureJvpp, interfaceContext, bridgeDomainContext));
87         childReaders.add((ChildReader) getIpv4Reader(futureJvpp, interfaceContext));
88
89         final CompositeListReader<SubInterface, SubInterfaceKey, SubInterfaceBuilder> subInterfaceReader =
90             new CompositeListReader<>(SubInterface.class, childReaders, new SubInterfaceCustomizer(futureJvpp,
91                 interfaceContext));
92
93         final ChildReader<SubInterfaces> subInterfacesReader = new CompositeChildReader<>(
94             SubInterfaces.class,
95             RWUtils.singletonChildReaderList(subInterfaceReader),
96             new ReflexiveChildReaderCustomizer<>(SubInterfacesBuilder.class));
97
98         final ChildReader<SubinterfaceStateAugmentation> subinterfaceStateAugmentationReader =
99             new CompositeChildReader<>(SubinterfaceStateAugmentation.class,
100                 singletonChildReaderList(subInterfacesReader),
101                 new ReflexiveAugmentReaderCustomizer<>(
102                     SubinterfaceStateAugmentationBuilder.class,
103                     SubinterfaceStateAugmentation.class));
104
105         return subinterfaceStateAugmentationReader;
106     }
107 }