Introduced DomainSpecificRegistry service
[groupbasedpolicy.git] / groupbasedpolicy / src / main / java / org / opendaylight / controller / config / yang / config / groupbasedpolicy / DomainSpecificRegistryModule.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
10
11 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
12 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
13 import org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry;
14 import org.opendaylight.groupbasedpolicy.api.EndpointAugmentorRegistry;
15 import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry;
16 import org.opendaylight.groupbasedpolicy.base_endpoint.BaseEndpointServiceImpl;
17 import org.opendaylight.groupbasedpolicy.base_endpoint.EndpointAugmentorRegistryImpl;
18 import org.opendaylight.groupbasedpolicy.forwarding.NetworkDomainAugmentorRegistryImpl;
19 import org.opendaylight.groupbasedpolicy.renderer.RendererManager;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
22
23 public class DomainSpecificRegistryModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractDomainSpecificRegistryModule {
24
25     private static final Logger LOG = LoggerFactory.getLogger(DomainSpecificRegistryModule.class);
26
27     public DomainSpecificRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
28         super(identifier, dependencyResolver);
29     }
30
31     public DomainSpecificRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.groupbasedpolicy.DomainSpecificRegistryModule oldModule, 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         final DataBroker dataProvider = getDataBrokerDependency();
43         final RpcProviderRegistry rpcRegistry = getRpcRegistryDependency();
44         Instance instance = new Instance(dataProvider, rpcRegistry);
45         LOG.info("{} successfully started.", DomainSpecificRegistryModule.class.getCanonicalName());
46         return instance;
47     }
48
49     private static class Instance implements DomainSpecificRegistry, AutoCloseable {
50
51         private final EndpointAugmentorRegistryImpl endpointAugmentorRegistryImpl;
52         private final NetworkDomainAugmentorRegistryImpl netDomainAugmentorRegistryImpl;
53         private final BaseEndpointServiceImpl baseEndpointServiceImpl;
54         private final RendererManager rendererManager;
55
56         Instance(DataBroker dataProvider, RpcProviderRegistry rpcRegistry) {
57             endpointAugmentorRegistryImpl = new EndpointAugmentorRegistryImpl();
58             netDomainAugmentorRegistryImpl = new NetworkDomainAugmentorRegistryImpl();
59             baseEndpointServiceImpl = new BaseEndpointServiceImpl(dataProvider, rpcRegistry, endpointAugmentorRegistryImpl);
60             rendererManager = new RendererManager(dataProvider, netDomainAugmentorRegistryImpl);
61         }
62
63         @Override
64         public void close() throws Exception {
65             baseEndpointServiceImpl.close();
66             rendererManager.close();
67         }
68
69         @Override
70         public EndpointAugmentorRegistry getEndpointAugmentorRegistry() {
71             return endpointAugmentorRegistryImpl;
72         }
73
74         @Override
75         public NetworkDomainAugmentorRegistry getNetworkDomainAugmentorRegistry() {
76             return netDomainAugmentorRegistryImpl;
77         }
78
79     }
80
81 }