2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
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
9 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
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;
23 public class DomainSpecificRegistryModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractDomainSpecificRegistryModule {
25 private static final Logger LOG = LoggerFactory.getLogger(DomainSpecificRegistryModule.class);
27 public DomainSpecificRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
28 super(identifier, dependencyResolver);
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);
36 public void customValidation() {
37 // add custom validation form module attributes here.
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());
49 private static class Instance implements DomainSpecificRegistry, AutoCloseable {
51 private final EndpointAugmentorRegistryImpl endpointAugmentorRegistryImpl;
52 private final NetworkDomainAugmentorRegistryImpl netDomainAugmentorRegistryImpl;
53 private final BaseEndpointServiceImpl baseEndpointServiceImpl;
54 private final RendererManager rendererManager;
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, endpointAugmentorRegistryImpl);
64 public void close() throws Exception {
65 baseEndpointServiceImpl.close();
66 rendererManager.close();
70 public EndpointAugmentorRegistry getEndpointAugmentorRegistry() {
71 return endpointAugmentorRegistryImpl;
75 public NetworkDomainAugmentorRegistry getNetworkDomainAugmentorRegistry() {
76 return netDomainAugmentorRegistryImpl;