ca05b392baa7045fdacc21612c0a9d34ae46c694
[hc2vpp.git] /
1 package org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.v3po2vpp.rev160406;
2
3 import static org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.v3po2vpp.rev160406.InterfacesHoneycombWriterModule.ACL_ID;
4
5 import io.fd.honeycomb.v3po.translate.impl.write.GenericListWriter;
6 import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
7 import io.fd.honeycomb.v3po.translate.v3po.vppclassifier.ClassifySessionWriter;
8 import io.fd.honeycomb.v3po.translate.v3po.vppclassifier.ClassifyTableWriter;
9 import io.fd.honeycomb.v3po.translate.write.WriterFactory;
10 import io.fd.honeycomb.v3po.translate.write.registry.ModifiableWriterRegistryBuilder;
11 import javax.annotation.Nonnull;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.rev150603.VppClassifier;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.rev150603.classify.table.base.attributes.ClassifySession;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.classifier.rev150603.vpp.classifier.ClassifyTable;
15 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
16 import org.openvpp.jvpp.future.FutureJVpp;
17
18 public class VppClassifierHoneycombWriterModule extends
19     org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.v3po2vpp.rev160406.AbstractVppClassifierHoneycombWriterModule {
20
21
22     public static final InstanceIdentifier<ClassifyTable> CLASSIFY_TABLE_ID =
23         InstanceIdentifier.create(VppClassifier.class).child(ClassifyTable.class);
24
25     public static final InstanceIdentifier<ClassifySession> CLASSIFY_SESSION_ID =
26         CLASSIFY_TABLE_ID.child(ClassifySession.class);
27
28
29     public VppClassifierHoneycombWriterModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier,
30                                               org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
31         super(identifier, dependencyResolver);
32     }
33
34     public VppClassifierHoneycombWriterModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier,
35                                               org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
36                                               org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.v3po2vpp.rev160406.VppClassifierHoneycombWriterModule oldModule,
37                                               java.lang.AutoCloseable oldInstance) {
38         super(identifier, dependencyResolver, oldModule, oldInstance);
39     }
40
41     @Override
42     public void customValidation() {
43         // add custom validation form module attributes here.
44     }
45
46     @Override
47     public java.lang.AutoCloseable createInstance() {
48         return new VppClassifierHoneycombWriterFactory(
49             getVppJvppDependency(),
50             getClassifyTableContextDependency());
51     }
52
53     private static final class VppClassifierHoneycombWriterFactory implements WriterFactory, AutoCloseable {
54         private final FutureJVpp jvpp;
55         private final NamingContext classifyTableContext;
56
57         public VppClassifierHoneycombWriterFactory(@Nonnull final FutureJVpp jvpp,
58                                                    @Nonnull final NamingContext classifyTableContext) {
59             this.jvpp = jvpp;
60             this.classifyTableContext = classifyTableContext;
61         }
62
63         @Override
64         public void close() throws Exception {
65             // unregister is not supported in ModifiableWriterRegistry (not really needed though)
66         }
67
68         @Override
69         public void init(final ModifiableWriterRegistryBuilder registry) {
70
71             registry.addBefore(
72                 new GenericListWriter<>(CLASSIFY_TABLE_ID, new ClassifyTableWriter(jvpp, classifyTableContext)),
73                 ACL_ID);
74
75             registry.addBefore(
76                 new GenericListWriter<>(CLASSIFY_SESSION_ID, new ClassifySessionWriter(jvpp, classifyTableContext)),
77                 CLASSIFY_TABLE_ID);
78         }
79     }
80 }