2 * Copyright (c) 2016 Cisco and/or its affiliates.
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:
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.v3po2vpp.rev160406;
19 import static io.fd.honeycomb.v3po.translate.util.RWUtils.singletonChildReaderList;
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;
50 final class SubinterfaceStateAugmentationReaderFactory {
52 private SubinterfaceStateAugmentationReaderFactory() {
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));
61 return new CompositeChildReader<>(L2.class,
62 singletonChildReaderList(rewriteReader),
63 new SubInterfaceL2Customizer(futureJvpp, interfaceContext, bridgeDomainContext));
66 private static ChildReader<Ipv4> getIpv4Reader(@Nonnull final FutureJVpp futureJvpp,
67 @Nonnull final NamingContext interfaceContext) {
69 final ChildReader<Address> addressReader = new CompositeListReader<>(Address.class,
70 new SubInterfaceIpv4AddressCustomizer(futureJvpp, interfaceContext));
72 return new CompositeChildReader<>(
74 RWUtils.singletonChildReaderList(addressReader),
75 new ReflexiveChildReaderCustomizer<>(Ipv4Builder.class));
79 static ChildReader<SubinterfaceStateAugmentation> createInstance(
80 @Nonnull final FutureJVpp futureJvpp, @Nonnull final NamingContext interfaceContext,
81 @Nonnull final NamingContext bridgeDomainContext) {
83 List<ChildReader<? extends ChildOf<SubInterface>>> childReaders = new ArrayList<>();
85 // TODO can get rid of that cast?
86 childReaders.add((ChildReader) getL2Reader(futureJvpp, interfaceContext, bridgeDomainContext));
87 childReaders.add((ChildReader) getIpv4Reader(futureJvpp, interfaceContext));
89 final CompositeListReader<SubInterface, SubInterfaceKey, SubInterfaceBuilder> subInterfaceReader =
90 new CompositeListReader<>(SubInterface.class, childReaders, new SubInterfaceCustomizer(futureJvpp,
93 final ChildReader<SubInterfaces> subInterfacesReader = new CompositeChildReader<>(
95 RWUtils.singletonChildReaderList(subInterfaceReader),
96 new ReflexiveChildReaderCustomizer<>(SubInterfacesBuilder.class));
98 final ChildReader<SubinterfaceStateAugmentation> subinterfaceStateAugmentationReader =
99 new CompositeChildReader<>(SubinterfaceStateAugmentation.class,
100 singletonChildReaderList(subInterfacesReader),
101 new ReflexiveAugmentReaderCustomizer<>(
102 SubinterfaceStateAugmentationBuilder.class,
103 SubinterfaceStateAugmentation.class));
105 return subinterfaceStateAugmentationReader;