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
8 package org.opendaylight;
10 import org.opendaylight.controller.config.yang.md.sal.rest.connector.RestConnectorRuntimeRegistration;
11 import org.opendaylight.controller.config.yang.md.sal.rest.connector.RestConnectorRuntimeRegistrator;
12 import org.opendaylight.controller.sal.core.api.Broker;
13 import org.opendaylight.netconf.sal.rest.api.RestConnector;
14 import org.opendaylight.netconf.sal.restconf.impl.RestconfProviderImpl;
15 import org.opendaylight.restconf.RestConnectorProvider;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
19 * Wrapping providers from restconf draft02 and draft18.
22 public class RestconfWrapperProviders implements AutoCloseable, RestConnector {
25 private final RestconfProviderImpl providerDraft02;
27 private final RestConnectorProvider providerDraft18;
30 * Init both providers.
32 * <li>draft02 - {@link RestconfProviderImpl}
33 * <li>draft18 - {@link RestConnectorProvider}
36 * @param port port for web sockets in provider for draft02
38 public RestconfWrapperProviders(final PortNumber port) {
39 // Init draft02 provider
40 this.providerDraft02 = new RestconfProviderImpl();
41 this.providerDraft02.setWebsocketPort(port);
43 this.providerDraft18 = new RestConnectorProvider();
47 * Register both providers, which will use the SAL layer.
49 * <li>draft02 - {@link RestconfProviderImpl}
50 * <li>draft18 - {@link RestConnectorProvider}
56 public void registerProviders(final Broker broker) {
57 // Register draft02 provider
58 broker.registerProvider(this.providerDraft02);
60 // Register draft18 provider
61 broker.registerProvider(this.providerDraft18);
65 * Register runtime beans from restconf draft02 {@link RestconfProviderImpl}.
67 * @param runtimeRegistration for register runtime beans
68 * @return {@link RestConnectorRuntimeRegistration}
70 public RestConnectorRuntimeRegistration runtimeRegistration(
71 final RestConnectorRuntimeRegistrator runtimeRegistration) {
72 return runtimeRegistration.register(this.providerDraft02);
76 public void close() throws Exception {
77 this.providerDraft02.close();
78 this.providerDraft18.close();