2 * Copyright (c) 2014 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.controller.sal.rest.doc;
10 import org.opendaylight.controller.sal.core.api.Broker;
11 import org.opendaylight.controller.sal.core.api.Provider;
12 import org.opendaylight.controller.sal.core.api.model.SchemaService;
13 import org.opendaylight.controller.sal.rest.doc.impl.ApiDocGenerator;
14 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
15 import org.osgi.framework.BundleActivator;
16 import org.osgi.framework.BundleContext;
17 import org.osgi.framework.ServiceReference;
18 import org.osgi.util.tracker.ServiceTracker;
19 import org.osgi.util.tracker.ServiceTrackerCustomizer;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
23 import java.util.Collection;
24 import java.util.Collections;
27 public class DocProvider implements BundleActivator,
28 ServiceTrackerCustomizer<Broker, Broker>,
32 private Logger _logger = LoggerFactory.getLogger(DocProvider.class);
34 private ServiceTracker<Broker, Broker> brokerServiceTracker;
35 private BundleContext bundleContext;
36 private Broker.ProviderSession session;
39 public void close() throws Exception {
44 public void onSessionInitiated(Broker.ProviderSession providerSession) {
45 SchemaService schemaService = providerSession.getService(SchemaService.class);
46 ApiDocGenerator.getInstance().setSchemaService(schemaService);
48 _logger.debug("Restconf API Explorer started");
53 public Collection<ProviderFunctionality> getProviderFunctionality() {
54 return Collections.emptySet();
58 public void start(BundleContext context) throws Exception {
59 bundleContext = context;
60 brokerServiceTracker = new ServiceTracker(context, Broker.class, this);
61 brokerServiceTracker.open();
65 public void stop(BundleContext context) throws Exception {
66 if (brokerServiceTracker != null)
67 brokerServiceTracker.close();
74 public Broker addingService(ServiceReference<Broker> reference) {
75 Broker broker = bundleContext.getService(reference);
76 session = broker.registerProvider(this, bundleContext);
81 public void modifiedService(ServiceReference<Broker> reference, Broker service) {
85 Broker broker = bundleContext.getService(reference);
86 session = broker.registerProvider(this, bundleContext);
90 public void removedService(ServiceReference<Broker> reference, Broker service) {
91 bundleContext.ungetService(reference);