Merge commit 'refs/changes/20/18320/1' of ssh://git.opendaylight.org:29418/alto
[alto.git] / alto-provider / src / main / java / org / opendaylight / controller / config / yang / config / alto_provider / impl / AltoProviderModule.java
1 package org.opendaylight.controller.config.yang.config.alto_provider.impl;
2
3 import org.opendaylight.alto.provider.AltoProvider;
4 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
5 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
6 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
7 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
8 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.AltoServiceService;
10 import org.opendaylight.yangtools.concepts.ListenerRegistration;
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
13
14 public class AltoProviderModule extends AbstractAltoProviderModule {
15     private static final Logger log = LoggerFactory.getLogger(AltoProviderModule.class);
16
17     public AltoProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
18         super(identifier, dependencyResolver);
19     }
20
21     public AltoProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.alto_provider.impl.AltoProviderModule oldModule, java.lang.AutoCloseable oldInstance) {
22         super(identifier, dependencyResolver, oldModule, oldInstance);
23     }
24
25     @Override
26     public void customValidation() {
27         // add custom validation form module attributes here.
28     }
29
30     @Override
31     public java.lang.AutoCloseable createInstance() {
32         final AltoProvider altoProvider = new AltoProvider();
33
34         DataBroker dataBrokerService = getDataBrokerDependency();
35         altoProvider.setDataProvider(dataBrokerService);
36
37         final BindingAwareBroker.RpcRegistration<AltoServiceService> rpcRegistration = getRpcRegistryDependency()
38             .addRpcImplementation(AltoServiceService.class, altoProvider);
39
40         final ListenerRegistration<DataChangeListener> altoDataChangeListenerRegistration =
41             dataBrokerService.registerDataChangeListener(LogicalDatastoreType.CONFIGURATION, AltoProvider.ALTO_IID, altoProvider, DataChangeScope.SUBTREE);
42         final AltoProviderRuntimeRegistration runtimeReg = getRootRuntimeBeanRegistratorWrapper().register(altoProvider);
43
44         final class AutoCloseableAlto implements AutoCloseable {
45             @Override
46             public void close() throws Exception {
47                 rpcRegistration.close();
48                 altoDataChangeListenerRegistration.close();
49                 runtimeReg.close();
50                 altoProvider.close();
51             }
52         }
53
54         return new AutoCloseableAlto();
55     }
56
57 }