Package org.knopflerfish.tutorial.dateserviceusertracker.impl

Source Code of org.knopflerfish.tutorial.dateserviceusertracker.impl.Activator

package org.knopflerfish.tutorial.dateserviceusertracker.impl;

import java.util.Date;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceListener;
import org.osgi.framework.ServiceEvent;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;

import org.knopflerfish.tutorial.dateservice.DateService;
import org.knopflerfish.tutorial.common.ServiceUserThread;

public class Activator implements BundleActivator {
  public static BundleContext bc = null;

  ServiceTracker    tracker;
  ServiceUserThread thread;

  public void start(BundleContext bc) throws Exception {
    Activator.bc = bc;
    log("starting");
    tracker =  new ServiceTracker(bc,
                                  DateService.class.getName(),
                                  customizer);
    tracker.open();
  }

  ServiceTrackerCustomizer customizer = new ServiceTrackerCustomizer() {
      public Object addingService(ServiceReference reference) {
        log("addingService");
        DateService service = (DateService) bc.getService(reference);
        if (thread == null) {
          thread = new ServiceUserThread(service, "tracker example");
          thread.start();
          return service;
        } else {
          return service;
        }
      }

      public void modifiedService(ServiceReference reference, Object
                                  serviceObject) {
        thread.stopThread();
        try {
          thread.join();
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        DateService service = (DateService) bc.getService(reference);
        thread = new ServiceUserThread(service, "tracker example");
        thread.start();
      }
      public void removedService(ServiceReference reference, Object
                                 serviceObject) {
        log("removedService");
        thread.stopThread();
        try {
          thread.join();
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        thread = null;
      }
    };
 
 
  public void stop(BundleContext bc) throws Exception {
    log("stopping");
    tracker.close();
    Activator.bc = null;
  }
 
  private void log(String message) {
    System.out.println(Activator.bc.getBundle().getHeaders()
                       .get(Constants.BUNDLE_NAME)
                       + ": " + message);
  }
 
}
TOP

Related Classes of org.knopflerfish.tutorial.dateserviceusertracker.impl.Activator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.