1 package org.opendaylight.controller.sal.rest.impl;
3 import java.util.Collection;
4 import java.util.Collections;
6 import org.opendaylight.controller.sal.core.api.Broker;
7 import org.opendaylight.controller.sal.core.api.Broker.ProviderSession;
8 import org.opendaylight.controller.sal.core.api.Provider;
9 import org.opendaylight.controller.sal.core.api.data.DataBrokerService;
10 import org.opendaylight.controller.sal.core.api.model.SchemaService;
11 import org.opendaylight.controller.sal.core.api.model.SchemaServiceListener;
12 import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
13 import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
14 import org.opendaylight.yangtools.concepts.ListenerRegistration;
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;
21 public class RestconfProvider implements BundleActivator, Provider, ServiceTrackerCustomizer<Broker, Broker> {
23 public final static String NOT_INITALIZED_MSG = "Restcof is not initialized yet. Please try again later";
25 private ListenerRegistration<SchemaServiceListener> listenerRegistration;
26 private ServiceTracker<Broker, Broker> brokerServiceTrancker;
27 private BundleContext bundleContext;
28 private ProviderSession session;
31 public void onSessionInitiated(ProviderSession session) {
32 DataBrokerService dataService = session.getService(DataBrokerService.class);
34 BrokerFacade.getInstance().setContext(session);
35 BrokerFacade.getInstance().setDataService(dataService);
37 SchemaService schemaService = session.getService(SchemaService.class);
38 listenerRegistration = schemaService.registerSchemaServiceListener(ControllerContext.getInstance());
39 ControllerContext.getInstance().setSchemas(schemaService.getGlobalContext());
43 public void start(BundleContext context) throws Exception {
44 bundleContext = context;
45 brokerServiceTrancker = new ServiceTracker<>(context, Broker.class, this);
46 brokerServiceTrancker.open();
50 public void stop(BundleContext context) {
51 if (listenerRegistration != null) {
53 listenerRegistration.close();
54 } catch (Exception e) {
59 brokerServiceTrancker.close();
63 public Collection<ProviderFunctionality> getProviderFunctionality() {
64 return Collections.emptySet();
68 public Broker addingService(ServiceReference<Broker> reference) {
69 Broker broker = bundleContext.getService(reference);
70 broker.registerProvider(this, bundleContext);
75 public void modifiedService(ServiceReference<Broker> reference, Broker service) {
80 public void removedService(ServiceReference<Broker> reference, Broker service) {
81 bundleContext.ungetService(reference);
82 BrokerFacade.getInstance().setContext(null);
83 BrokerFacade.getInstance().setDataService(null);
84 ControllerContext.getInstance().setSchemas(null);