Bug 5526 - Wrap providers of both implementations of restconf. 93/36493/42
authorJakub Toth <jatoth@cisco.com>
Wed, 27 Apr 2016 13:15:57 +0000 (15:15 +0200)
committerJakub Toth <jatoth@cisco.com>
Thu, 5 May 2016 18:27:17 +0000 (18:27 +0000)
Change-Id: Ic90c49f50d63d6ca99b149e69de236ef3172cb59
Signed-off-by: Jakub Toth <jatoth@cisco.com>
restconf/sal-rest-connector/src/main/java/org/opendaylight/RestconfWrapperProviders.java [new file with mode: 0644]
restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java

diff --git a/restconf/sal-rest-connector/src/main/java/org/opendaylight/RestconfWrapperProviders.java b/restconf/sal-rest-connector/src/main/java/org/opendaylight/RestconfWrapperProviders.java
new file mode 100644 (file)
index 0000000..33b826b
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  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;
+
+import org.opendaylight.controller.config.yang.md.sal.rest.connector.RestConnectorRuntimeRegistration;
+import org.opendaylight.controller.config.yang.md.sal.rest.connector.RestConnectorRuntimeRegistrator;
+import org.opendaylight.controller.sal.core.api.Broker;
+import org.opendaylight.netconf.sal.rest.api.RestConnector;
+import org.opendaylight.netconf.sal.restconf.impl.RestconfProviderImpl;
+import org.opendaylight.restconf.rest.RestConnectorProvider;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
+
+/**
+ * Wrapping providers from restconf draft02 and draft11.
+ *
+ */
+public class RestconfWrapperProviders implements AutoCloseable, RestConnector {
+
+    // DRAFT02
+    private final RestconfProviderImpl providerDraft02;
+    // DRAFT11
+    private final RestConnectorProvider providerDraft11;
+
+    /**
+     * Init both providers:
+     * <ul>
+     * <li>draft02 - {@link RestconfProviderImpl}
+     * <li>draft11 - {@link RestConnectorProvider}
+     * </ul>
+     *
+     * @param port
+     *            - port for web sockets in provider for draft02
+     */
+    public RestconfWrapperProviders(final PortNumber port) {
+        // Init draft02 provider
+        this.providerDraft02 = new RestconfProviderImpl();
+        this.providerDraft02.setWebsocketPort(port);
+
+        // Init draft11 provider
+        this.providerDraft11 = new RestConnectorProvider();
+    }
+
+    /**
+     * Register both providers, which will use the SAL layer:
+     * <ul>
+     * <li>draft02 - {@link RestconfProviderImpl}
+     * <li>draft11 - {@link RestConnectorProvider}
+     * </ul>
+     *
+     * @param broker
+     *            - {@link Broker}
+     */
+    public void registerProviders(final Broker broker) {
+        // Register draft02 provider
+        broker.registerProvider(this.providerDraft02);
+
+        // Register draft11 provider
+        broker.registerProvider(this.providerDraft11);
+    }
+
+    /**
+     * Register runtime beans from restconf draft02 {@link RestconfProviderImpl}
+     *
+     * @param runtimeRegistration
+     *            - for register runtime beans
+     * @return {@link RestConnectorRuntimeRegistration}
+     */
+    public RestConnectorRuntimeRegistration runtimeRegistration(
+            final RestConnectorRuntimeRegistrator runtimeRegistration) {
+        return runtimeRegistration.register(this.providerDraft02);
+    }
+
+    @Override
+    public void close() throws Exception {
+        this.providerDraft02.close();
+        this.providerDraft11.close();
+    }
+
+}
index 6b2aedcce459f7796831b175e06675eb46bb8157..0b80458b639c82b4e618fbe12e2599b7fa08e699 100644 (file)
@@ -8,18 +8,18 @@
 
 package org.opendaylight.controller.config.yang.md.sal.rest.connector;
 
-import org.opendaylight.netconf.sal.restconf.impl.RestconfProviderImpl;
+import org.opendaylight.RestconfWrapperProviders;
 
 
 public class RestConnectorModule extends org.opendaylight.controller.config.yang.md.sal.rest.connector.AbstractRestConnectorModule {
 
     private static RestConnectorRuntimeRegistration runtimeRegistration;
 
-    public RestConnectorModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+    public RestConnectorModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
         super(identifier, dependencyResolver);
     }
 
-    public RestConnectorModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.md.sal.rest.connector.RestConnectorModule oldModule, java.lang.AutoCloseable oldInstance) {
+    public RestConnectorModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final org.opendaylight.controller.config.yang.md.sal.rest.connector.RestConnectorModule oldModule, final java.lang.AutoCloseable oldInstance) {
         super(identifier, dependencyResolver, oldModule, oldInstance);
     }
 
@@ -30,21 +30,16 @@ public class RestConnectorModule extends org.opendaylight.controller.config.yang
 
     @Override
     public java.lang.AutoCloseable createInstance() {
-        // Create an instance of our provider
-        RestconfProviderImpl instance = new RestconfProviderImpl();
-        // Set its port
-        instance.setWebsocketPort(getWebsocketPort());
-        // Register it with the Broker
-        getDomBrokerDependency().registerProvider(instance);
+        final RestconfWrapperProviders wrapperProviders = new RestconfWrapperProviders(getWebsocketPort());
+        wrapperProviders.registerProviders(getDomBrokerDependency());
 
         if(runtimeRegistration != null){
             runtimeRegistration.close();
         }
 
-        runtimeRegistration =
-            getRootRuntimeBeanRegistratorWrapper().register(instance);
+        runtimeRegistration = wrapperProviders.runtimeRegistration(getRootRuntimeBeanRegistratorWrapper());
 
-        return instance;
+        return wrapperProviders;
     }
 }