making service for PolicyResolver and EndpointRpcRegistry
[groupbasedpolicy.git] / groupbasedpolicy / src / main / java / org / opendaylight / controller / config / yang / config / groupbasedpolicy / GroupbasedpolicyModule.java
1 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
2
3 import com.google.common.base.Preconditions;
4 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
5 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
6 import org.opendaylight.groupbasedpolicy.sf.SubjectFeatureDefinitionProvider;
7 import org.opendaylight.groupbasedpolicy.sf.SupportedActionDefinitionListener;
8 import org.opendaylight.groupbasedpolicy.sf.SupportedClassifierDefinitionListener;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11
12 public class GroupbasedpolicyModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractGroupbasedpolicyModule {
13
14     private static final Logger LOG = LoggerFactory.getLogger(GroupbasedpolicyModule.class);
15
16     public GroupbasedpolicyModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
17         super(identifier, dependencyResolver);
18     }
19
20     public GroupbasedpolicyModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.groupbasedpolicy.GroupbasedpolicyModule oldModule, java.lang.AutoCloseable oldInstance) {
21         super(identifier, dependencyResolver, oldModule, oldInstance);
22     }
23
24     @Override
25     public void customValidation() {
26         // add custom validation form module attributes here.
27     }
28
29     /**
30      * On module start, creates SubjectFeatureDefinitionProvider instance, in order to put known Subject Feature Definitions to operational Datastore
31      *
32      * @return SubjectFeatureDefinitionProvider
33      */
34     @Override
35     public java.lang.AutoCloseable createInstance() {
36         final DataBroker dataProvider = Preconditions.checkNotNull(getDataBrokerDependency());
37         try {
38             return new AutoCloseable() {
39
40                 SubjectFeatureDefinitionProvider sfdp = new SubjectFeatureDefinitionProvider(dataProvider);
41                 SupportedClassifierDefinitionListener supportedClassifierDefinitionListener =
42                         new SupportedClassifierDefinitionListener(dataProvider);
43                 SupportedActionDefinitionListener supportedActionDefinitionListener =
44                         new SupportedActionDefinitionListener(dataProvider);
45                 @Override
46                 public void close() throws Exception {
47                     sfdp.close();
48                     supportedClassifierDefinitionListener.close();
49                     supportedActionDefinitionListener.close();
50                 }
51             };
52         } catch (TransactionCommitFailedException e) {
53             LOG.error(
54                     "Error creating instance of SubjectFeatureDefinitionProvider; Subject Feature Definitions were not put to Datastore");
55             throw new RuntimeException(e);
56         }
57     }
58
59 }