package org.foo.hub.test; import org.foo.hub.api.Hub; import org.osgi.framework.*; import org.osgi.util.tracker.ServiceTracker; /** * Test bundle that sends a message whenever the hub comes online. */ public class Activator implements BundleActivator { ServiceTracker hubTracker; public void start(final BundleContext ctx) { hubTracker = new ServiceTracker(ctx, Hub.class.getName(), null) { /* * Uncomment A, B ,and C to use the bundle ClassLoader as the Thread Context ClassLoader. */ public Object addingService(ServiceReference reference) { //A// ClassLoader oldTCCL = Thread.currentThread().getContextClassLoader(); try { //B// Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); Hub hub = (Hub) ctx.getService(reference); hub.send(new TextMessage(".*", "Testing Testing 1, 2, 3...")); } catch (Throwable e) { e.printStackTrace(); } finally { //C// Thread.currentThread().setContextClassLoader(oldTCCL); } return null; } }; hubTracker.open(); } public void stop(BundleContext ctx) { hubTracker.close(); hubTracker = null; } }