BUG 6396 groupbasedpolicy project migration to blueprint 23/43023/10
authorMatej Perina <mperina@cisco.com>
Wed, 17 Aug 2016 16:15:10 +0000 (18:15 +0200)
committerMatej Perina <mperina@cisco.com>
Thu, 18 Aug 2016 11:16:24 +0000 (11:16 +0000)
Change-Id: I0f5c1f16234826093d26dc5848eabb858dd51107
Signed-off-by: Matej Perina <mperina@cisco.com>
21 files changed:
groupbasedpolicy/src/main/config/default-config.xml
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryInstance.java [new file with mode: 0644]
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryModule.java
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryModuleFactory.java
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplInstance.java [new file with mode: 0644]
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplModule.java
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplModuleFactory.java
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyInstance.java [new file with mode: 0644]
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModule.java
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryInstance.java [new file with mode: 0644]
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryModule.java
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryModuleFactory.java
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplInstance.java [new file with mode: 0644]
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplModule.java
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplModuleFactory.java
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImpl.java
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java
groupbasedpolicy/src/main/resources/org/opendaylight/blueprint/groupbasedpolicy.xml [new file with mode: 0644]
groupbasedpolicy/src/main/yang/groupbasedpolicy-cfg.yang
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImplTest.java
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistryTest.java

index 0390945d5ecd05aaf04d195b07dff4e322464e55..53c0184dfe0a227692fd737b29179a7b82ca3c14 100755 (executable)
                         groupbasedpolicy:groupbasedpolicy-impl
                     </type>
                     <name>groupbasedpolicy-impl</name>
-
-                    <data-broker>
-                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
-                        <name>binding-data-broker</name>
-                    </data-broker>
-
-                    <rpc-registry>
-                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
-                        <name>binding-rpc-broker</name>
-                    </rpc-registry>
-
-                    <policy-validator-registry>
-                        <type xmlns:groupbasedpolicy="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">groupbasedpolicy:policy-validator-registry</type>
-                        <name>policy-validator-registry</name>
-                    </policy-validator-registry>
                 </module>
                 <module>
                     <type xmlns:groupbasedpolicy="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">
                         groupbasedpolicy:policy-validator-registry-impl
                     </type>
                     <name>policy-validator-registry</name>
-
-                    <data-broker>
-                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
-                        <name>binding-data-broker</name>
-                    </data-broker>
                 </module>
                 <module>
                     <type xmlns:groupbasedpolicy="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">
                         groupbasedpolicy:ep-renderer-augmentation-registry-impl
                     </type>
                     <name>ep-renderer-augmentation-registry</name>
-
-                    <data-broker>
-                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
-                        <name>binding-data-broker</name>
-                    </data-broker>
-
-                    <rpc-registry>
-                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
-                        <name>binding-rpc-broker</name>
-                    </rpc-registry>
                 </module>
                 <module>
                     <type xmlns:groupbasedpolicy="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">
                         groupbasedpolicy:domain-specific-registry-impl
                     </type>
                     <name>domain-specific-registry</name>
-
-                    <data-broker>
-                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
-                        <name>binding-data-broker</name>
-                    </data-broker>
-
-                    <rpc-registry>
-                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
-                        <name>binding-rpc-broker</name>
-                    </rpc-registry>
                 </module>
                 <module>
                     <type xmlns:groupbasedpolicy="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">
                         groupbasedpolicy:statistics-manager-impl
                     </type>
                     <name>statistics-manager-impl</name>
-
-                    <data-broker>
-                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
-                        <name>binding-data-broker</name>
-                    </data-broker>
                 </module>
             </modules>
 
diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryInstance.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryInstance.java
new file mode 100644 (file)
index 0000000..272ce85
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+
+import java.util.concurrent.Future;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry;
+import org.opendaylight.groupbasedpolicy.api.EndpointAugmentorRegistry;
+import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry;
+import org.opendaylight.groupbasedpolicy.base_endpoint.BaseEndpointServiceImpl;
+import org.opendaylight.groupbasedpolicy.base_endpoint.EndpointAugmentorRegistryImpl;
+import org.opendaylight.groupbasedpolicy.forwarding.NetworkDomainAugmentorRegistryImpl;
+import org.opendaylight.groupbasedpolicy.renderer.RendererManager;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.BaseEndpointService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.RegisterEndpointInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.UnregisterEndpointInput;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+
+public class DomainSpecificRegistryInstance implements DomainSpecificRegistry, BaseEndpointService, AutoCloseable {
+
+    private final EndpointAugmentorRegistryImpl endpointAugmentorRegistryImpl;
+    private final NetworkDomainAugmentorRegistryImpl netDomainAugmentorRegistryImpl;
+    private final BaseEndpointServiceImpl baseEndpointServiceImpl;
+    private final RendererManager rendererManager;
+
+    public DomainSpecificRegistryInstance(DataBroker dataProvider) {
+        endpointAugmentorRegistryImpl = new EndpointAugmentorRegistryImpl();
+        netDomainAugmentorRegistryImpl = new NetworkDomainAugmentorRegistryImpl();
+        baseEndpointServiceImpl = new BaseEndpointServiceImpl(dataProvider, endpointAugmentorRegistryImpl);
+        rendererManager = new RendererManager(dataProvider, netDomainAugmentorRegistryImpl, endpointAugmentorRegistryImpl);
+    }
+
+    @Override
+    public void close() throws Exception {
+        baseEndpointServiceImpl.close();
+        rendererManager.close();
+    }
+
+    @Override
+    public EndpointAugmentorRegistry getEndpointAugmentorRegistry() {
+        return endpointAugmentorRegistryImpl;
+    }
+
+    @Override
+    public NetworkDomainAugmentorRegistry getNetworkDomainAugmentorRegistry() {
+        return netDomainAugmentorRegistryImpl;
+    }
+
+    @Override
+    public Future<RpcResult<Void>> unregisterEndpoint(UnregisterEndpointInput input) {
+        return baseEndpointServiceImpl.unregisterEndpoint(input);
+    }
+
+    @Override
+    public Future<RpcResult<Void>> registerEndpoint(RegisterEndpointInput input) {
+        return baseEndpointServiceImpl.registerEndpoint(input);
+    }
+
+}
index aed35222d879e73b715cb21fb64e603ce03f2e01..e2aca3e64b58d6d4494a91757515945e7bf51d1e 100644 (file)
@@ -8,21 +8,18 @@
 
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
 
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker;
 import org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry;
 import org.opendaylight.groupbasedpolicy.api.EndpointAugmentorRegistry;
 import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry;
-import org.opendaylight.groupbasedpolicy.base_endpoint.BaseEndpointServiceImpl;
-import org.opendaylight.groupbasedpolicy.base_endpoint.EndpointAugmentorRegistryImpl;
-import org.opendaylight.groupbasedpolicy.forwarding.NetworkDomainAugmentorRegistryImpl;
-import org.opendaylight.groupbasedpolicy.renderer.RendererManager;
+import org.osgi.framework.BundleContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class DomainSpecificRegistryModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractDomainSpecificRegistryModule {
 
     private static final Logger LOG = LoggerFactory.getLogger(DomainSpecificRegistryModule.class);
+    private BundleContext bundleContext;
 
     public DomainSpecificRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
         super(identifier, dependencyResolver);
@@ -39,43 +36,31 @@ public class DomainSpecificRegistryModule extends org.opendaylight.controller.co
 
     @Override
     public java.lang.AutoCloseable createInstance() {
-        final DataBroker dataProvider = getDataBrokerDependency();
-        final RpcProviderRegistry rpcRegistry = getRpcRegistryDependency();
-        Instance instance = new Instance(dataProvider, rpcRegistry);
-        LOG.info("{} successfully started.", DomainSpecificRegistryModule.class.getCanonicalName());
-        return instance;
-    }
-
-    private static class Instance implements DomainSpecificRegistry, AutoCloseable {
-
-        private final EndpointAugmentorRegistryImpl endpointAugmentorRegistryImpl;
-        private final NetworkDomainAugmentorRegistryImpl netDomainAugmentorRegistryImpl;
-        private final BaseEndpointServiceImpl baseEndpointServiceImpl;
-        private final RendererManager rendererManager;
-
-        Instance(DataBroker dataProvider, RpcProviderRegistry rpcRegistry) {
-            endpointAugmentorRegistryImpl = new EndpointAugmentorRegistryImpl();
-            netDomainAugmentorRegistryImpl = new NetworkDomainAugmentorRegistryImpl();
-            baseEndpointServiceImpl = new BaseEndpointServiceImpl(dataProvider, rpcRegistry, endpointAugmentorRegistryImpl);
-            rendererManager = new RendererManager(dataProvider, netDomainAugmentorRegistryImpl, endpointAugmentorRegistryImpl);
-        }
-
-        @Override
-        public void close() throws Exception {
-            baseEndpointServiceImpl.close();
-            rendererManager.close();
-        }
-
-        @Override
-        public EndpointAugmentorRegistry getEndpointAugmentorRegistry() {
-            return endpointAugmentorRegistryImpl;
-        }
-
-        @Override
-        public NetworkDomainAugmentorRegistry getNetworkDomainAugmentorRegistry() {
-            return netDomainAugmentorRegistryImpl;
+        final WaitingServiceTracker<DomainSpecificRegistry> tracker = WaitingServiceTracker.create(
+                DomainSpecificRegistry.class, bundleContext);
+        final DomainSpecificRegistry service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES);
+
+        final class Instance implements DomainSpecificRegistry, AutoCloseable {
+            @Override
+            public void close() {
+                tracker.close();
+            }
+
+            @Override
+            public EndpointAugmentorRegistry getEndpointAugmentorRegistry() {
+                return service.getEndpointAugmentorRegistry();
+            }
+
+            @Override
+            public NetworkDomainAugmentorRegistry getNetworkDomainAugmentorRegistry() {
+                return service.getNetworkDomainAugmentorRegistry();
+            }
         }
 
+        return new Instance();
     }
 
+    void setBundleContext(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
+    }
 }
index f532db474fb65dc4d404150da9aa8ea3d68af652..c030d7d6600340e82e8eb1c706555bbcb025bb7b 100644 (file)
@@ -7,6 +7,26 @@
  */
 
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+
+import org.opendaylight.controller.config.api.DependencyResolver;
+import org.osgi.framework.BundleContext;
+
 public class DomainSpecificRegistryModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractDomainSpecificRegistryModuleFactory {
 
+    @Override
+    public DomainSpecificRegistryModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+            DomainSpecificRegistryModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) {
+        DomainSpecificRegistryModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule,
+                oldInstance, bundleContext);
+        module.setBundleContext(bundleContext);
+        return module;
+    }
+
+    @Override
+    public DomainSpecificRegistryModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+            BundleContext bundleContext) {
+        DomainSpecificRegistryModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext);
+        module.setBundleContext(bundleContext);
+        return module;
+    }
 }
diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplInstance.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplInstance.java
new file mode 100644 (file)
index 0000000..8cda589
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+
+import java.util.concurrent.Future;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation;
+import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;
+import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.EndpointService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.SetEndpointGroupConditionsInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.UnregisterEndpointInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.UnsetEndpointGroupConditionsInput;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+
+public class EpRendererAugmentationRegistryImplInstance implements EpRendererAugmentationRegistry, EndpointService, AutoCloseable{
+
+
+    private final EndpointRpcRegistry endpointRpcRegistry;
+
+    public EpRendererAugmentationRegistryImplInstance(DataBroker dataProvider) {
+        endpointRpcRegistry = new EndpointRpcRegistry(dataProvider);
+    }
+    @Override
+    public void close() throws Exception {
+        endpointRpcRegistry.close();
+    }
+
+    @Override
+    public void register(EpRendererAugmentation epRendererAugmentation) {
+        endpointRpcRegistry.register(epRendererAugmentation);
+    }
+
+    @Override
+    public void unregister(EpRendererAugmentation epRendererAugmentation) {
+        endpointRpcRegistry.unregister(epRendererAugmentation);
+    }
+    @Override
+    public Future<RpcResult<Void>> unsetEndpointGroupConditions(UnsetEndpointGroupConditionsInput input) {
+        return endpointRpcRegistry.unsetEndpointGroupConditions(input);
+    }
+    @Override
+    public Future<RpcResult<Void>> registerEndpoint(RegisterEndpointInput input) {
+        return endpointRpcRegistry.registerEndpoint(input);
+    }
+    @Override
+    public Future<RpcResult<Void>> setEndpointGroupConditions(SetEndpointGroupConditionsInput input) {
+        return endpointRpcRegistry.setEndpointGroupConditions(input);
+    }
+    @Override
+    public Future<RpcResult<Void>> registerL3PrefixEndpoint(RegisterL3PrefixEndpointInput input) {
+        return endpointRpcRegistry.registerL3PrefixEndpoint(input);
+    }
+    @Override
+    public Future<RpcResult<Void>> unregisterEndpoint(UnregisterEndpointInput input) {
+        return endpointRpcRegistry.unregisterEndpoint(input);
+    }
+
+
+}
index 5e2c93566011288542ee91624f20eda52524c402..4aef5cea2184f3d121b8c86109472cd42bbaae0b 100644 (file)
@@ -8,15 +8,17 @@
 
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
 
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
-import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
+import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker;
+import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation;
+import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;
+import org.osgi.framework.BundleContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class EpRendererAugmentationRegistryImplModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractEpRendererAugmentationRegistryImplModule {
 
     private static final Logger LOG = LoggerFactory.getLogger(EpRendererAugmentationRegistryImplModule.class);
+    private BundleContext bundleContext;
 
     public EpRendererAugmentationRegistryImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
         super(identifier, dependencyResolver);
@@ -33,12 +35,31 @@ public class EpRendererAugmentationRegistryImplModule extends org.opendaylight.c
 
     @Override
     public java.lang.AutoCloseable createInstance() {
-        final DataBroker dataProvider = getDataBrokerDependency();
-        final RpcProviderRegistry rpcRegistry = getRpcRegistryDependency();
+        final WaitingServiceTracker<EpRendererAugmentationRegistry> tracker = WaitingServiceTracker.create(
+                EpRendererAugmentationRegistry.class, bundleContext);
+        final EpRendererAugmentationRegistry service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES);
 
-        EndpointRpcRegistry endpointRpcRegistry = new EndpointRpcRegistry(dataProvider, rpcRegistry);
-        LOG.info("{} successfully started.", EpRendererAugmentationRegistryImplModule.class.getCanonicalName());
-        return endpointRpcRegistry;
+        final class Instance implements EpRendererAugmentationRegistry, AutoCloseable {
+            @Override
+            public void close() {
+                tracker.close();
+            }
+
+            @Override
+            public void register(EpRendererAugmentation epRendererAugmentation) {
+                service.register(epRendererAugmentation);
+            }
+
+            @Override
+            public void unregister(EpRendererAugmentation epRendererAugmentation) {
+                service.unregister(epRendererAugmentation);
+            }
+        }
+
+        return new Instance();
     }
 
+    void setBundleContext(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
+    }
 }
index 3e27189acba6343437aad8e76f42a74bbf205540..f0efe0a007e6f54d06f76f4e4a9c3f29a9bb5436 100644 (file)
 * Do not modify this file unless it is present under src/main directory
 */
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+
+import org.opendaylight.controller.config.api.DependencyResolver;
+import org.osgi.framework.BundleContext;
+
 public class EpRendererAugmentationRegistryImplModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractEpRendererAugmentationRegistryImplModuleFactory {
 
+    @Override
+    public EpRendererAugmentationRegistryImplModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+            EpRendererAugmentationRegistryImplModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) {
+        EpRendererAugmentationRegistryImplModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule,
+                oldInstance, bundleContext);
+        module.setBundleContext(bundleContext);
+        return module;
+    }
+
+    @Override
+    public EpRendererAugmentationRegistryImplModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+            BundleContext bundleContext) {
+        EpRendererAugmentationRegistryImplModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext);
+        module.setBundleContext(bundleContext);
+        return module;
+    }
 }
diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyInstance.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyInstance.java
new file mode 100644 (file)
index 0000000..1b2e1ef
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
+import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry;
+import org.opendaylight.groupbasedpolicy.location.resolver.LocationResolver;
+import org.opendaylight.groupbasedpolicy.resolver.ForwardingResolver;
+import org.opendaylight.groupbasedpolicy.sf.SubjectFeatureDefinitionProvider;
+import org.opendaylight.groupbasedpolicy.sf.SupportedActionDefinitionListener;
+import org.opendaylight.groupbasedpolicy.sf.SupportedClassifierDefinitionListener;
+
+public class GroupbasedpolicyInstance implements AutoCloseable {
+
+    private final SubjectFeatureDefinitionProvider sfdp;
+    private final SupportedClassifierDefinitionListener supportedClassifierDefinitionListener;
+    private final SupportedActionDefinitionListener supportedActionDefinitionListener;
+    private final LocationResolver locationResolver;
+    private final ForwardingResolver forwardingResolver;
+
+    public GroupbasedpolicyInstance(DataBroker dataProvider, PolicyValidatorRegistry validatorRegistry)
+            throws TransactionCommitFailedException {
+        sfdp = new SubjectFeatureDefinitionProvider(dataProvider);
+        supportedClassifierDefinitionListener =
+                new SupportedClassifierDefinitionListener(dataProvider, validatorRegistry);
+        supportedActionDefinitionListener = new SupportedActionDefinitionListener(dataProvider);
+        locationResolver = new LocationResolver(dataProvider);
+        forwardingResolver = new ForwardingResolver(dataProvider);
+    }
+
+    @Override
+    public void close() throws Exception {
+        sfdp.close();
+        supportedClassifierDefinitionListener.close();
+        supportedActionDefinitionListener.close();
+        locationResolver.close();
+        forwardingResolver.close();
+    }
+}
index 5c82b0a0cbc01d2f0003c97d7fbd3e59d05f00d7..77e2522af82743a7b7a6e3b20c9a751d0decea16 100644 (file)
@@ -8,14 +8,7 @@
 
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
 
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry;
-import org.opendaylight.groupbasedpolicy.location.resolver.LocationResolver;
-import org.opendaylight.groupbasedpolicy.resolver.ForwardingResolver;
-import org.opendaylight.groupbasedpolicy.sf.SubjectFeatureDefinitionProvider;
-import org.opendaylight.groupbasedpolicy.sf.SupportedActionDefinitionListener;
-import org.opendaylight.groupbasedpolicy.sf.SupportedClassifierDefinitionListener;
+import org.opendaylight.controller.sal.common.util.NoopAutoCloseable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -43,44 +36,6 @@ public class GroupbasedpolicyModule extends org.opendaylight.controller.config.y
      */
     @Override
     public java.lang.AutoCloseable createInstance() {
-        DataBroker dataProvider = getDataBrokerDependency();
-        PolicyValidatorRegistry validatorRegistry = getPolicyValidatorRegistryDependency();
-
-        try {
-            Instance instance = new Instance(dataProvider, validatorRegistry);
-            LOG.info("{} successfully started.", GroupbasedpolicyModule.class.getCanonicalName());
-            return instance;
-        } catch (TransactionCommitFailedException e) {
-            LOG.error(
-                    "Error creating instance of SubjectFeatureDefinitionProvider; Subject Feature Definitions were not put to Datastore");
-            throw new RuntimeException(e);
-        }
+        return NoopAutoCloseable.INSTANCE;
     }
-
-    private static class Instance implements AutoCloseable {
-
-        private final SubjectFeatureDefinitionProvider sfdp;
-        private final SupportedClassifierDefinitionListener supportedClassifierDefinitionListener;
-        private final SupportedActionDefinitionListener supportedActionDefinitionListener;
-        private final LocationResolver locationResolver;
-        private final ForwardingResolver forwardingResolver;
-
-        Instance(DataBroker dataProvider, PolicyValidatorRegistry validatorRegistry) throws TransactionCommitFailedException {
-            sfdp = new SubjectFeatureDefinitionProvider(dataProvider);
-            supportedClassifierDefinitionListener = new SupportedClassifierDefinitionListener(dataProvider, validatorRegistry);
-            supportedActionDefinitionListener = new SupportedActionDefinitionListener(dataProvider);
-            locationResolver = new LocationResolver(dataProvider);
-            forwardingResolver = new ForwardingResolver(dataProvider);
-        }
-
-        @Override
-        public void close() throws Exception {
-            sfdp.close();
-            supportedClassifierDefinitionListener.close();
-            supportedActionDefinitionListener.close();
-            locationResolver.close();
-            forwardingResolver.close();
-        }
-    }
-
 }
diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryInstance.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryInstance.java
new file mode 100644 (file)
index 0000000..1a7bc1d
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry;
+import org.opendaylight.groupbasedpolicy.api.Validator;
+import org.opendaylight.groupbasedpolicy.resolver.PolicyResolver;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionDefinitionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierDefinitionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance;
+
+public class PolicyValidatorRegistryInstance implements PolicyValidatorRegistry, AutoCloseable {
+
+    private final PolicyResolver policyResolver;
+
+    public PolicyValidatorRegistryInstance (DataBroker dataBroker) {
+        this.policyResolver = new PolicyResolver(dataBroker);
+    }
+
+    @Override
+    public void close() throws Exception {
+        policyResolver.close();
+    }
+
+    @Override
+    public void register(ActionDefinitionId actionDefinitionId, Validator<ActionInstance> validator) {
+        policyResolver.register(actionDefinitionId, validator);
+    }
+
+    @Override
+    public void unregister(ActionDefinitionId actionDefinitionId, Validator<ActionInstance> validator) {
+        policyResolver.unregister(actionDefinitionId, validator);
+    }
+
+    @Override
+    public void register(ClassifierDefinitionId classifierDefinitionId, Validator<ClassifierInstance> validator) {
+        policyResolver.register(classifierDefinitionId, validator);
+    }
+
+    @Override
+    public void unregister(ClassifierDefinitionId classifierDefinitionId, Validator<ClassifierInstance> validator) {
+        policyResolver.unregister(classifierDefinitionId, validator);
+    }
+}
index e81f89baa8d3b571f204f5a4f4894bd2af6156fd..8f72579280853c96d1f16c06317688366f23b74b 100644 (file)
@@ -8,14 +8,21 @@
 
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
 
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.groupbasedpolicy.resolver.PolicyResolver;
+import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker;
+import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry;
+import org.opendaylight.groupbasedpolicy.api.Validator;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionDefinitionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierDefinitionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance;
+import org.osgi.framework.BundleContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class PolicyValidatorRegistryModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractPolicyValidatorRegistryModule {
 
     private static final Logger LOG = LoggerFactory.getLogger(PolicyValidatorRegistryModule.class);
+    private BundleContext bundleContext;
 
     public PolicyValidatorRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
         super(identifier, dependencyResolver);
@@ -32,11 +39,43 @@ public class PolicyValidatorRegistryModule extends org.opendaylight.controller.c
 
     @Override
     public java.lang.AutoCloseable createInstance() {
-        final DataBroker dataProvider = getDataBrokerDependency();
+        final WaitingServiceTracker<PolicyValidatorRegistry> tracker = WaitingServiceTracker.create(
+                PolicyValidatorRegistry.class, bundleContext);
+        final PolicyValidatorRegistry service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES);
 
-        PolicyResolver policyResolver = new PolicyResolver(dataProvider);
-        LOG.info("{} successfully started.", PolicyValidatorRegistryModule.class.getCanonicalName());
-        return policyResolver;
+        final class Instance implements PolicyValidatorRegistry, AutoCloseable {
+            @Override
+            public void close() {
+                tracker.close();
+            }
+
+            @Override
+            public void register(ActionDefinitionId actionDefinitionId, Validator<ActionInstance> validator) {
+                service.register(actionDefinitionId, validator);
+            }
+
+            @Override
+            public void unregister(ActionDefinitionId actionDefinitionId, Validator<ActionInstance> validator) {
+                service.unregister(actionDefinitionId, validator);
+            }
+
+            @Override
+            public void register(ClassifierDefinitionId classifierDefinitionId,
+                    Validator<ClassifierInstance> validator) {
+                service.register(classifierDefinitionId, validator);
+            }
+
+            @Override
+            public void unregister(ClassifierDefinitionId classifierDefinitionId,
+                    Validator<ClassifierInstance> validator) {
+                service.unregister(classifierDefinitionId, validator);
+            }
+        }
+
+        return new Instance();
     }
 
+    void setBundleContext(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
+    }
 }
index 65b99e445e3e989ea75a994360e0a0470bfd82a8..5a1e25ec2a3fb19144a2b96c57487703dc67504d 100644 (file)
 * Do not modify this file unless it is present under src/main directory
 */
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+
+import org.opendaylight.controller.config.api.DependencyResolver;
+import org.osgi.framework.BundleContext;
+
 public class PolicyValidatorRegistryModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractPolicyValidatorRegistryModuleFactory {
 
+    @Override
+    public PolicyValidatorRegistryModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+            PolicyValidatorRegistryModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) {
+        PolicyValidatorRegistryModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule,
+                oldInstance, bundleContext);
+        module.setBundleContext(bundleContext);
+        return module;
+    }
+
+    @Override
+    public PolicyValidatorRegistryModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+            BundleContext bundleContext) {
+        PolicyValidatorRegistryModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext);
+        module.setBundleContext(bundleContext);
+        return module;
+    }
 }
diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplInstance.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplInstance.java
new file mode 100644 (file)
index 0000000..bf9ec72
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.groupbasedpolicy.api.StatisticsManager;
+import org.opendaylight.groupbasedpolicy.statistics.StatisticsManagerImpl;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.statistics.rev151215.statistic.records.StatRecords;
+
+public class StatisticsManagerImplInstance implements StatisticsManager, AutoCloseable {
+
+    private final StatisticsManagerImpl statsManager;
+
+    public StatisticsManagerImplInstance (DataBroker dataBroker) {
+        statsManager = new StatisticsManagerImpl(dataBroker);
+    }
+
+    @Override
+    public void close() throws Exception {
+        statsManager.close();
+    }
+
+    @Override
+    public boolean writeStat(StatRecords record) {
+        return statsManager.writeStat(record);
+    }
+
+    @Override
+    public StatRecords readStats() {
+        return statsManager.readStats();
+    }
+
+}
index 81f0d6179d57c91449120939ab334c03e4a5429d..fb8bd263bf425f1184c0b82b25aed708f975c3df 100644 (file)
 */
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
 
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.groupbasedpolicy.statistics.StatisticsManagerImpl;
+import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker;
+import org.opendaylight.groupbasedpolicy.api.StatisticsManager;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.statistics.rev151215.statistic.records.StatRecords;
+import org.osgi.framework.BundleContext;
 
 public class StatisticsManagerImplModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractStatisticsManagerImplModule {
+
+    private BundleContext bundleContext;
+
     public StatisticsManagerImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
         super(identifier, dependencyResolver);
     }
@@ -36,9 +41,32 @@ public class StatisticsManagerImplModule extends org.opendaylight.controller.con
 
     @Override
     public java.lang.AutoCloseable createInstance() {
-        DataBroker broker = getDataBrokerDependency();
-        StatisticsManagerImpl manager = new StatisticsManagerImpl(broker);
-        return manager;
+        final WaitingServiceTracker<StatisticsManager> tracker = WaitingServiceTracker.create(
+                StatisticsManager.class, bundleContext);
+        final StatisticsManager service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES);
+
+        final class Instance implements StatisticsManager, AutoCloseable {
+            @Override
+            public void close() {
+                tracker.close();
+            }
+
+            @Override
+            public boolean writeStat(StatRecords record) {
+                return service.writeStat(record);
+            }
+
+            @Override
+            public StatRecords readStats() {
+                return service.readStats();
+            }
+        }
+
+        return new Instance();
+    }
+
+    void setBundleContext(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
     }
 
 }
index 71e4e02c21a874ed8ae3311bf43191d959506372..585636f2d13a7ae0680243a9bf001c42c2647588 100644 (file)
 * Do not modify this file unless it is present under src/main directory
 */
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+
+import org.opendaylight.controller.config.api.DependencyResolver;
+import org.osgi.framework.BundleContext;
+
 public class StatisticsManagerImplModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractStatisticsManagerImplModuleFactory {
 
+    @Override
+    public StatisticsManagerImplModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+            StatisticsManagerImplModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) {
+        StatisticsManagerImplModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule,
+                oldInstance, bundleContext);
+        module.setBundleContext(bundleContext);
+        return module;
+    }
+
+    @Override
+    public StatisticsManagerImplModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+            BundleContext bundleContext) {
+        StatisticsManagerImplModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext);
+        module.setBundleContext(bundleContext);
+        return module;
+    }
 }
index 9609b65103e3bfb3f7d15cab7ce1183f12b42e86..00c492073120db6408c103716a4e3baa85d07f17 100644 (file)
@@ -18,8 +18,6 @@ import javax.annotation.Nullable;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.groupbasedpolicy.api.EndpointAugmentor;
 import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
 import org.opendaylight.groupbasedpolicy.util.EndpointUtils;
@@ -65,7 +63,6 @@ public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseab
 
     private static final Logger LOG = LoggerFactory.getLogger(BaseEndpointServiceImpl.class);
     private final DataBroker dataProvider;
-    private final BindingAwareBroker.RpcRegistration<BaseEndpointService> rpcRegistration;
     private final EndpointAugmentorRegistryImpl epAugRegistry;
 
     private static final Function<Void, RpcResult<Void>> TO_SUCCESS_RPC_RESULT = new Function<Void, RpcResult<Void>>() {
@@ -76,12 +73,9 @@ public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseab
         }
     };
 
-    public BaseEndpointServiceImpl(DataBroker dataProvider, RpcProviderRegistry rpcRegistry,
-            EndpointAugmentorRegistryImpl epAugRegistry) {
+    public BaseEndpointServiceImpl(DataBroker dataProvider, EndpointAugmentorRegistryImpl epAugRegistry) {
         this.epAugRegistry = Preconditions.checkNotNull(epAugRegistry);
         this.dataProvider = Preconditions.checkNotNull(dataProvider);
-        Preconditions.checkNotNull(rpcRegistry);
-        this.rpcRegistration = rpcRegistry.addRpcImplementation(BaseEndpointService.class, this);
     }
 
     /**
@@ -315,10 +309,7 @@ public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseab
     }
 
     @Override
-    public void close() throws Exception {
-        if (rpcRegistration != null) {
-            rpcRegistration.close();
-        }
+    public void close() {
     }
 
     private <T> List<T> nullToEmpty(@Nullable List<T> list) {
index d3bcaa9ae4fb924dbe721d73b77336da4741596e..b0e1dafa1a208ea1c20510493743cae001b52f79 100644 (file)
@@ -18,8 +18,6 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation;
 import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;
 import org.opendaylight.groupbasedpolicy.util.IidFactory;
@@ -70,9 +68,6 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat
     private static final Logger LOG = LoggerFactory.getLogger(EndpointRpcRegistry.class);
 
     private final DataBroker dataProvider;
-    private final RpcProviderRegistry rpcRegistry;
-
-    private final BindingAwareBroker.RpcRegistration<EndpointService> rpcRegistration;
 
     final static ConcurrentMap<String, EpRendererAugmentation> registeredRenderers =
             new ConcurrentHashMap<String, EpRendererAugmentation>();
@@ -110,17 +105,9 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat
      * Constructor
      *
      * @param dataProvider the {@link DataBroker}
-     * @param rpcRegistry the {@link RpcProviderRegistry}
      */
-    public EndpointRpcRegistry(DataBroker dataProvider, RpcProviderRegistry rpcRegistry) {
+    public EndpointRpcRegistry(DataBroker dataProvider) {
         this.dataProvider = dataProvider;
-        this.rpcRegistry = rpcRegistry;
-        if (this.rpcRegistry != null) {
-            rpcRegistration = this.rpcRegistry.addRpcImplementation(EndpointService.class, this);
-            LOG.debug("Added RPC Implementation Correctly");
-        } else {
-            rpcRegistration = null;
-        }
 
         if (dataProvider != null) {
             InstanceIdentifier<Endpoints> iid = InstanceIdentifier.builder(Endpoints.class).build();
@@ -146,10 +133,7 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat
     }
 
     @Override
-    public void close() throws Exception {
-        if (rpcRegistration != null) {
-            rpcRegistration.close();
-        }
+    public void close() {
     }
 
     /**
diff --git a/groupbasedpolicy/src/main/resources/org/opendaylight/blueprint/groupbasedpolicy.xml b/groupbasedpolicy/src/main/resources/org/opendaylight/blueprint/groupbasedpolicy.xml
new file mode 100644 (file)
index 0000000..72a3e52
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
+           odl:use-default-for-reference-types="true">
+
+    <reference id="dataBroker" interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"/>
+
+    <!-- Modules /-->
+    <bean id="groupbasedpolicy" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.GroupbasedpolicyInstance"
+        destroy-method="close">
+        <argument ref="dataBroker"/>
+        <argument ref="policyValidatorRegistry"/>
+    </bean>
+    <bean id="domainSpecificRegistry" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.DomainSpecificRegistryInstance"
+        destroy-method="close">
+        <argument ref="dataBroker"/>
+    </bean>
+    <bean id="epRendererAugmentationRegistry" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.EpRendererAugmentationRegistryImplInstance"
+        destroy-method="close">
+        <argument ref="dataBroker"/>
+    </bean>
+    <bean id="statisticsManagerImpl" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.StatisticsManagerImplInstance"
+        destroy-method="close">
+        <argument ref="dataBroker"/>
+    </bean>
+    <bean id="policyValidatorRegistry" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.PolicyValidatorRegistryInstance"
+        destroy-method="close">
+        <argument ref="dataBroker"/>
+    </bean>
+
+    <!-- Services -->
+    <service ref="domainSpecificRegistry" interface="org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry" odl:type="default"/>
+    <service ref="epRendererAugmentationRegistry" interface="org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry" odl:type="default"/>
+    <service ref="policyValidatorRegistry" interface="org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry" odl:type="default"/>
+    <service ref="statisticsManagerImpl" interface="org.opendaylight.groupbasedpolicy.api.StatisticsManager" odl:type="default"/>
+
+    <!-- RPC implementations -->
+    <odl:rpc-implementation ref="domainSpecificRegistry"/>
+    <odl:rpc-implementation ref="epRendererAugmentationRegistry"/>
+</blueprint>
\ No newline at end of file
index 7cbce21e5ba12379e1e51e7277bc61f6d7b0f24b..d00e207da1acee7cf6e852c80549f9553a11a7cf 100644 (file)
@@ -24,35 +24,43 @@ module groupbasedpolicy-cfg {
     }
 
     identity ep-renderer-augmentation-registry {
+        status deprecated;
         description
             "ep-renderer-augmentation-registry service definition";
 
         base "config:service-type";
         config:java-class "org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry";
+        config:disable-osgi-service-registration;
     }
 
     identity domain-specific-registry {
+        status deprecated;
         description
             "domain-specific-registry service definition";
 
         base "config:service-type";
         config:java-class "org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry";
+        config:disable-osgi-service-registration;
     }
 
     identity policy-validator-registry {
+        status deprecated;
         description
             "policy-validator-registry service definition";
 
         base "config:service-type";
         config:java-class "org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry";
+        config:disable-osgi-service-registration;
     }
 
     identity statistics-manager {
+        status deprecated;
         description
             "statistics-manager service definition";
 
         base "config:service-type";
         config:java-class "org.opendaylight.groupbasedpolicy.api.StatisticsManager";
+        config:disable-osgi-service-registration;
     }
 
     identity policy-validator-registry-impl {
@@ -93,103 +101,18 @@ module groupbasedpolicy-cfg {
     augment "/config:modules/config:module/config:configuration" {
         case groupbasedpolicy-impl {
             when "/config:modules/config:module/config:type = 'groupbasedpolicy-impl'";
-
-            //wires in the data-broker service
-            container data-broker {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-async-data-broker;
-                    }
-                }
-            }
-            //RPC Registry
-            container rpc-registry {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-rpc-registry;
-                    }
-                }
-            }
-            // EpRendererAugmentationRegistry service
-            container policy-validator-registry {
-                uses config:service-ref {
-                    refine type {
-                        config:required-identity policy-validator-registry;
-                    }
-                }
-            }
         }
         case policy-validator-registry-impl {
             when "/config:modules/config:module/config:type = 'policy-validator-registry-impl'";
-
-            //wires in the data-broker service
-            container data-broker {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-async-data-broker;
-                    }
-                }
-            }
         }
         case ep-renderer-augmentation-registry-impl {
             when "/config:modules/config:module/config:type = 'ep-renderer-augmentation-registry-impl'";
-
-            //wires in the data-broker service
-            container data-broker {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-async-data-broker;
-                    }
-                }
-            }
-            //RPC Registry
-            container rpc-registry {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-rpc-registry;
-                    }
-                }
-            }
         }
         case domain-specific-registry-impl {
             when "/config:modules/config:module/config:type = 'domain-specific-registry-impl'";
-
-            //wires in the data-broker service
-            container data-broker {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-async-data-broker;
-                    }
-                }
-            }
-            //RPC Registry
-            container rpc-registry {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-rpc-registry;
-                    }
-                }
-            }
         }
         case statistics-manager-impl {
             when "/config:modules/config:module/config:type = 'statistics-manager-impl'";
-
-          //wires in the data-broker service
-            container data-broker {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-async-data-broker;
-                    }
-                }
-            }
         }
     }
 }
index 522d149aa8480f5186e8532c7959348480582af5..d28e9e625b9c3e7e4dc4f12efff6e2cf2c31dcac 100644 (file)
@@ -8,8 +8,6 @@
 
 package org.opendaylight.groupbasedpolicy.base_endpoint;
 
-import static org.mockito.Mockito.mock;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -22,7 +20,6 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.groupbasedpolicy.test.CustomDataBrokerTest;
 import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
 import org.opendaylight.groupbasedpolicy.util.EndpointUtils;
@@ -100,17 +97,15 @@ public class BaseEndpointServiceImplTest extends CustomDataBrokerTest {
     @Before
     public void init() {
         dataProvider = getDataBroker();
-        RpcProviderRegistry rpcRegistry = mock(RpcProviderRegistry.class);
 
         baseEndpointRpcRegistry =
-                new BaseEndpointServiceImpl(dataProvider, rpcRegistry, new EndpointAugmentorRegistryImpl());
+                new BaseEndpointServiceImpl(dataProvider, new EndpointAugmentorRegistryImpl());
     }
 
     @Test
     public void testConstructor() throws Exception {
-        RpcProviderRegistry rpcRegistry = mock(RpcProviderRegistry.class);
         BaseEndpointServiceImpl registry =
-                new BaseEndpointServiceImpl(dataProvider, rpcRegistry, new EndpointAugmentorRegistryImpl());
+                new BaseEndpointServiceImpl(dataProvider, new EndpointAugmentorRegistryImpl());
         registry.close();
     }
 
@@ -126,7 +121,7 @@ public class BaseEndpointServiceImplTest extends CustomDataBrokerTest {
         ContainmentEndpoint contEp = createBaseContEpBuilder().build();
         RegisterEndpointInputBuilder inputBuilder = new RegisterEndpointInputBuilder();
         setAddrEpsToBuilder(inputBuilder, l2EpWithL3Parent, l3EpWithL2Child);
-        setContEpsToBuilder(inputBuilder, contEp);      
+        setContEpsToBuilder(inputBuilder, contEp);
 
         RpcResult<Void> rpcResult = baseEndpointRpcRegistry.registerEndpoint(inputBuilder.build()).get();
         Assert.assertTrue(rpcResult.isSuccessful());
index fc603d291241b1a57b7110f96650dd0106d7c0ac..4cd1222101202da5d8ddcff26af9cb16c9ad1be1 100755 (executable)
@@ -18,7 +18,6 @@ import static org.mockito.Mockito.when;
 import java.util.ArrayList;
 import java.util.List;
 
-import com.google.common.util.concurrent.CheckedFuture;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -27,7 +26,6 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
@@ -63,6 +61,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.r
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
+import com.google.common.util.concurrent.CheckedFuture;
+
 public class EndpointRpcRegistryTest {
 
     private static final String L2_BD_ID = "l2bdId";
@@ -83,15 +83,13 @@ public class EndpointRpcRegistryTest {
         dataProvider = mock(DataBroker.class);
         epRendererAugmentation = mock(EpRendererAugmentation.class);
         WriteTransaction wt = newWriteTransactionMock();
-        RpcProviderRegistry rpcRegistry = mock(RpcProviderRegistry.class);
 
-        endpointRpcRegistry = new EndpointRpcRegistry(dataProvider, rpcRegistry);
+        endpointRpcRegistry = new EndpointRpcRegistry(dataProvider);
     }
 
     @Test
     public void testConstructor() throws Exception {
-        RpcProviderRegistry rpcRegistry = mock(RpcProviderRegistry.class);
-        EndpointRpcRegistry other = new EndpointRpcRegistry(dataProvider, rpcRegistry);
+        EndpointRpcRegistry other = new EndpointRpcRegistry(dataProvider);
         other.close();
     }