2cdf24ce6dce94b4aa63a577f0c015f250fd384b
[hc2vpp.git] /
1 package org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.v3po2vpp.rev160406;
2
3 import com.google.common.collect.Sets;
4 import io.fd.honeycomb.translate.impl.write.GenericListWriter;
5 import io.fd.honeycomb.translate.v3po.util.NamingContext;
6 import io.fd.honeycomb.translate.v3po.vpp.ArpTerminationTableEntryCustomizer;
7 import io.fd.honeycomb.translate.v3po.vpp.BridgeDomainCustomizer;
8 import io.fd.honeycomb.translate.v3po.vpp.L2FibEntryCustomizer;
9 import io.fd.honeycomb.translate.write.WriterFactory;
10 import io.fd.honeycomb.translate.write.registry.ModifiableWriterRegistryBuilder;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.Vpp;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.bridge.domain.attributes.ArpTerminationTable;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.bridge.domain.attributes.arp.termination.table.ArpTerminationTableEntry;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.l2.fib.attributes.L2FibTable;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.l2.fib.attributes.l2.fib.table.L2FibEntry;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.BridgeDomains;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.bridge.domains.BridgeDomain;
18 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
19 import org.openvpp.jvpp.future.FutureJVpp;
20
21 public class VppHoneycombWriterModule extends
22     org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.v3po2vpp.rev160406.AbstractVppHoneycombWriterModule {
23     public VppHoneycombWriterModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier,
24                                     org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
25         super(identifier, dependencyResolver);
26     }
27
28     public VppHoneycombWriterModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier,
29                                     org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
30                                     org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.v3po2vpp.rev160406.VppHoneycombWriterModule oldModule,
31                                     java.lang.AutoCloseable oldInstance) {
32         super(identifier, dependencyResolver, oldModule, oldInstance);
33     }
34
35     @Override
36     public void customValidation() {
37         // add custom validation form module attributes here.
38     }
39
40     @Override
41     public java.lang.AutoCloseable createInstance() {
42         return new VppHoneycombWriterFactory(
43             getVppJvppWriterDependency(),
44             getBridgeDomainContextVppDependency(),
45             getInterfaceContextVppDependency());
46     }
47
48     private static final class VppHoneycombWriterFactory implements WriterFactory, AutoCloseable {
49
50         private final FutureJVpp jvpp;
51         private final NamingContext bdContext;
52         private final NamingContext ifcContext;
53
54         VppHoneycombWriterFactory(final FutureJVpp vppJvppWriterDependency,
55                                   final NamingContext bridgeDomainContextVppDependency,
56                                   final NamingContext interfaceContextVppDependency) {
57             this.jvpp = vppJvppWriterDependency;
58             this.bdContext = bridgeDomainContextVppDependency;
59             this.ifcContext = interfaceContextVppDependency;
60         }
61
62         @Override
63         public void init(final ModifiableWriterRegistryBuilder registry) {
64             // Vpp has no handlers
65             //  BridgeDomains has no handlers
66             //   BridgeDomain =
67             final InstanceIdentifier<BridgeDomain> bdId =
68                 InstanceIdentifier.create(Vpp.class).child(BridgeDomains.class).child(BridgeDomain.class);
69             registry.add(new GenericListWriter<>(bdId, new BridgeDomainCustomizer(jvpp, bdContext)));
70             //    L2FibTable has no handlers
71             //     L2FibEntry(handled after BridgeDomain and L2 of ifc and subifc) =
72             final InstanceIdentifier<L2FibEntry> l2FibEntryId = bdId.child(L2FibTable.class).child(L2FibEntry.class);
73             registry.addAfter(
74                 new GenericListWriter<>(l2FibEntryId, new L2FibEntryCustomizer(jvpp, bdContext, ifcContext)),
75                 Sets.newHashSet(
76                     bdId,
77                     InterfacesHoneycombWriterModule.L2_ID,
78                     SubinterfaceAugmentationWriterFactory.L2_ID));
79             //    ArpTerminationTable has no handlers
80             //     ArpTerminationTableEntry(handled after BridgeDomain) =
81             final InstanceIdentifier<ArpTerminationTableEntry> arpEntryId =
82                 bdId.child(ArpTerminationTable.class).child(ArpTerminationTableEntry.class);
83             registry.addAfter(
84                 new GenericListWriter<>(arpEntryId, new ArpTerminationTableEntryCustomizer(jvpp, bdContext)),
85                 bdId);
86         }
87     }
88 }