/******************************************************************************* * Copyright (c) 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package test.filter.a; import java.util.Hashtable; import org.osgi.framework.*; import org.osgi.util.tracker.ServiceTracker; import org.osgi.util.tracker.ServiceTrackerCustomizer; public class Activator implements BundleActivator { public void start(BundleContext context) throws Exception { final boolean[] serviceChanged = {false}; ServiceListener listener = new ServiceListener() { public void serviceChanged(ServiceEvent event) { serviceChanged[0] = true; } }; context.addServiceListener(listener, "(&(objectClass=java.lang.String)(test=*))"); final boolean[] modifiedService = {false}; ServiceTracker tracker = new ServiceTracker(context, FrameworkUtil.createFilter("(&(objectClass=java.lang.String)(test=*))"), new ServiceTrackerCustomizer() { public Object addingService(ServiceReference reference) { return reference; } public void modifiedService(ServiceReference reference, Object service) { modifiedService[0] = true; } public void removedService(ServiceReference reference, Object service) { // TODO Auto-generated method stub } }); tracker.open(); Hashtable props = new Hashtable(); props.put("test", "value1"); ServiceRegistration registration = context.registerService(String.class.getName(), "test", props); props.put("test", "value2"); registration.setProperties(props); if (!serviceChanged[0]) throw new Exception("did not call service listener"); if (!modifiedService[0]) throw new Exception("did not call tracker customer"); } public void stop(BundleContext context) throws Exception { //nothing; framework will clean up our listeners } }