/******************************************************************************* * 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 org.eclipse.equinox.useradmin.tests; import static org.junit.Assert.assertFalse; import java.util.Dictionary; import java.util.Hashtable; import org.eclipse.equinox.compendium.tests.Activator; import org.junit.*; import org.osgi.framework.ServiceReference; import org.osgi.framework.ServiceRegistration; import org.osgi.service.event.*; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.UserAdmin; public class UserAdminEventAdapterTest { private UserAdmin userAdmin; private ServiceReference<UserAdmin> userAdminReference; boolean locked = false; Object lock = new Object(); @Before public void setUp() throws Exception { Activator.getBundle(Activator.BUNDLE_EVENT).start(); Activator.getBundle(Activator.BUNDLE_USERADMIN).start(); userAdminReference = Activator.getBundleContext().getServiceReference(UserAdmin.class); userAdmin = Activator.getBundleContext().getService(userAdminReference); } @After public void tearDown() throws Exception { Activator.getBundleContext().ungetService(userAdminReference); Activator.getBundle(Activator.BUNDLE_USERADMIN).stop(); Activator.getBundle(Activator.BUNDLE_EVENT).stop(); } @Test public void testUserAdminEvent() throws Exception { EventHandler handler = new EventHandler() { public void handleEvent(Event event) { synchronized (lock) { locked = false; lock.notify(); } } }; String[] topics = new String[] {"org/osgi/service/useradmin/UserAdmin/*"}; //$NON-NLS-1$ Dictionary<String, Object> handlerProps = new Hashtable<String, Object>(); handlerProps.put(EventConstants.EVENT_TOPIC, topics); ServiceRegistration<EventHandler> reg = Activator.getBundleContext().registerService(EventHandler.class, handler, handlerProps); synchronized (lock) { userAdmin.createRole("testRole", Role.USER); //$NON-NLS-1$ locked = true; lock.wait(5000); assertFalse(locked); } synchronized (lock) { userAdmin.removeRole("testRole"); //$NON-NLS-1$ locked = true; lock.wait(5000); assertFalse(locked); } reg.unregister(); } }