bf1a23d4bc2d90ae8307c3ab6f2998eb0fab716a
[controller.git] / opendaylight / md-sal / compatibility / sal-compatibility / src / main / java / org / opendaylight / controller / sal / compatibility / topology / TopologyProvider.xtend
1 package org.opendaylight.controller.sal.compatibility.topology
2
3 import org.opendaylight.controller.sal.binding.api.data.DataProviderService
4 import org.opendaylight.controller.sal.topology.IPluginOutTopologyService
5 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology
6 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId
7 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology
8 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey
9 import org.opendaylight.yangtools.yang.binding.DataObject
10 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
11 import org.opendaylight.yangtools.concepts.Registration
12 import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler
13 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link
14 import org.slf4j.LoggerFactory
15
16 class TopologyProvider implements AutoCloseable{
17     static val LOG = LoggerFactory.getLogger(TopologyProvider);
18     TopologyCommitHandler commitHandler
19     
20     @Property
21     IPluginOutTopologyService topologyPublisher;
22     
23     @Property
24     DataProviderService dataService;
25     
26     Registration<DataCommitHandler<InstanceIdentifier<? extends DataObject>,DataObject>> commitHandlerRegistration;
27     
28     def void start() {
29         commitHandler = new TopologyCommitHandler(dataService)
30         commitHandler.setTopologyPublisher(topologyPublisher)
31         val InstanceIdentifier<? extends DataObject> path = InstanceIdentifier.builder(NetworkTopology)
32             .child(Topology,new TopologyKey(new TopologyId("flow:1")))
33             .child(Link)
34             .toInstance();
35         commitHandlerRegistration = dataService.registerCommitHandler(path,commitHandler);
36         LOG.info("TopologyProvider started")
37     }
38     
39     override close() throws Exception {
40         commitHandlerRegistration.close
41     }
42     
43     def setTopologyPublisher(IPluginOutTopologyService topologyPublisher) {
44         _topologyPublisher = topologyPublisher;
45         commitHandler.setTopologyPublisher(topologyPublisher);
46     }
47     
48 }