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.core.api.mount.MountService;
13 import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
14 import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
15 import org.opendaylight.yangtools.concepts.ListenerRegistration;
16 import org.osgi.framework.BundleActivator;
17 import org.osgi.framework.BundleContext;
18 import org.osgi.framework.ServiceReference;
19 import org.osgi.util.tracker.ServiceTracker;
20 import org.osgi.util.tracker.ServiceTrackerCustomizer;
22 public class RestconfProvider implements BundleActivator, Provider, ServiceTrackerCustomizer<Broker, Broker> {
24 public final static String NOT_INITALIZED_MSG = "Restconf is not initialized yet. Please try again later";
26 private ListenerRegistration<SchemaServiceListener> listenerRegistration;
27 private ServiceTracker<Broker, Broker> brokerServiceTrancker;
28 private BundleContext bundleContext;
29 private ProviderSession session;
32 public void onSessionInitiated(ProviderSession session) {
33 DataBrokerService dataService = session.getService(DataBrokerService.class);
35 BrokerFacade.getInstance().setContext(session);
36 BrokerFacade.getInstance().setDataService(dataService);
38 SchemaService schemaService = session.getService(SchemaService.class);
39 listenerRegistration = schemaService.registerSchemaServiceListener(ControllerContext.getInstance());
40 ControllerContext.getInstance().setSchemas(schemaService.getGlobalContext());
41 ControllerContext.getInstance().setMountService(session.getService(MountService.class));
45 public void start(BundleContext context) throws Exception {
46 bundleContext = context;
47 brokerServiceTrancker = new ServiceTracker<>(context, Broker.class, this);
48 brokerServiceTrancker.open();
52 public void stop(BundleContext context) {
53 if (listenerRegistration != null) {
55 listenerRegistration.close();
56 } catch (Exception e) {
61 brokerServiceTrancker.close();
65 public Collection<ProviderFunctionality> getProviderFunctionality() {
66 return Collections.emptySet();
70 public Broker addingService(ServiceReference<Broker> reference) {
71 Broker broker = bundleContext.getService(reference);
72 broker.registerProvider(this, bundleContext);
77 public void modifiedService(ServiceReference<Broker> reference, Broker service) {
82 public void removedService(ServiceReference<Broker> reference, Broker service) {
83 bundleContext.ungetService(reference);
84 BrokerFacade.getInstance().setContext(null);
85 BrokerFacade.getInstance().setDataService(null);
86 ControllerContext.getInstance().setSchemas(null);