From 66624e4137965fbd44db5dd01e50ecc78aa72853 Mon Sep 17 00:00:00 2001 From: Jakub Toth Date: Wed, 27 Apr 2016 15:15:57 +0200 Subject: [PATCH] Bug 5526 - Wrap providers of both implementations of restconf. Change-Id: Ic90c49f50d63d6ca99b149e69de236ef3172cb59 Signed-off-by: Jakub Toth --- .../RestconfWrapperProviders.java | 84 +++++++++++++++++++ .../rest/connector/RestConnectorModule.java | 19 ++--- 2 files changed, 91 insertions(+), 12 deletions(-) create mode 100644 restconf/sal-rest-connector/src/main/java/org/opendaylight/RestconfWrapperProviders.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 index 0000000000..33b826b86e --- /dev/null +++ b/restconf/sal-rest-connector/src/main/java/org/opendaylight/RestconfWrapperProviders.java @@ -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: + * + * + * @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: + * + * + * @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(); + } + +} diff --git a/restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java b/restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java index 6b2aedcce4..0b80458b63 100644 --- a/restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java +++ b/restconf/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java @@ -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; } } -- 2.36.6