BUG 6396 groupbasedpolicy project migration to blueprint
[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.config.api.osgi.WaitingServiceTracker;
12 import org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry;
13 import org.opendaylight.groupbasedpolicy.api.EndpointAugmentorRegistry;
14 import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry;
15 import org.osgi.framework.BundleContext;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
18
19 public class DomainSpecificRegistryModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractDomainSpecificRegistryModule {
20
21     private static final Logger LOG = LoggerFactory.getLogger(DomainSpecificRegistryModule.class);
22     private BundleContext bundleContext;
23
24     public DomainSpecificRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
25         super(identifier, dependencyResolver);
26     }
27
28     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) {
29         super(identifier, dependencyResolver, oldModule, oldInstance);
30     }
31
32     @Override
33     public void customValidation() {
34         // add custom validation form module attributes here.
35     }
36
37     @Override
38     public java.lang.AutoCloseable createInstance() {
39         final WaitingServiceTracker<DomainSpecificRegistry> tracker = WaitingServiceTracker.create(
40                 DomainSpecificRegistry.class, bundleContext);
41         final DomainSpecificRegistry service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES);
42
43         final class Instance implements DomainSpecificRegistry, AutoCloseable {
44             @Override
45             public void close() {
46                 tracker.close();
47             }
48
49             @Override
50             public EndpointAugmentorRegistry getEndpointAugmentorRegistry() {
51                 return service.getEndpointAugmentorRegistry();
52             }
53
54             @Override
55             public NetworkDomainAugmentorRegistry getNetworkDomainAugmentorRegistry() {
56                 return service.getNetworkDomainAugmentorRegistry();
57             }
58         }
59
60         return new Instance();
61     }
62
63     void setBundleContext(BundleContext bundleContext) {
64         this.bundleContext = bundleContext;
65     }
66 }