Java 类org.osgi.framework.ServiceListener 实例源码

项目:gemini.blueprint    文件:MockBundleContextTest.java   
public void testRemoveServiceListener() throws Exception {
    ServiceListener listener = new ServiceListener() {
        public void serviceChanged(ServiceEvent event) {
        }
    };

    Set listeners = mock.getServiceListeners();

    mock.removeServiceListener(null);

    assertEquals(0, listeners.size());

    mock.removeServiceListener(listener);
    assertEquals(0, listeners.size());

    mock.addServiceListener(listener);
    assertEquals(1, listeners.size());

    mock.removeServiceListener(listener);
    assertEquals(0, listeners.size());
}
项目:gemini.blueprint    文件:ListListenerAdapterTest.java   
@SuppressWarnings("rawtypes")
public ServiceRegistration registerService(String[] clazzes, final Object service, Dictionary properties) {
    MockServiceRegistration reg = new MockServiceRegistration(properties);

    MockServiceReference ref = new MockServiceReference(getBundle(), properties, reg, clazzes) {

        @Override
        public Object getProperty(String key) {
            if (SERVICE_PROPERTY.equals(key)) {
                return service;
            } else {
                return super.getProperty(key);
            }
        }

    };
    ServiceEvent event = new ServiceEvent(ServiceEvent.REGISTERED, ref);

    for (Iterator iter = serviceListeners.iterator(); iter.hasNext();) {
        ServiceListener listener = (ServiceListener) iter.next();
        listener.serviceChanged(event);
    }

    return reg;
}
项目:gemini.blueprint    文件:OsgiServiceCollectionProxyFactoryBeanTest.java   
public void testServiceReferenceMemberType() throws Exception {
    serviceFactoryBean.setMemberType(MemberType.SERVICE_REFERENCE);
    serviceFactoryBean.setInterfaces(new Class<?>[] { Runnable.class });
    serviceFactoryBean.afterPropertiesSet();

    Collection col = (Collection) serviceFactoryBean.getObject();

    assertFalse(col.isEmpty());
    assertSame(ref, col.iterator().next());

    Set listeners = bundleContext.getServiceListeners();
    ServiceListener list = (ServiceListener) listeners.iterator().next();
    ServiceReference ref2 = new MockServiceReference();
    list.serviceChanged(new ServiceEvent(ServiceEvent.REGISTERED, ref2));

    assertEquals(2, col.size());
    Iterator iter = col.iterator();
    iter.next();
    assertSame(ref2, iter.next());
}
项目:gemini.blueprint    文件:OsgiServiceDynamicInterceptorListenerTest.java   
public void testUnbind() {
    interceptor.afterPropertiesSet();

    assertEquals(1, SimpleTargetSourceLifecycleListener.BIND);
    assertEquals(0, SimpleTargetSourceLifecycleListener.UNBIND);

    ServiceListener sl = (ServiceListener) bundleContext.getServiceListeners().iterator().next();

    // save old ref and invalidate it so new services are not found
    ServiceReference oldRef = refs[0];
    refs = null;

    sl.serviceChanged(new ServiceEvent(ServiceEvent.UNREGISTERING, oldRef));

    assertEquals(1, SimpleTargetSourceLifecycleListener.BIND);
    assertEquals(1, SimpleTargetSourceLifecycleListener.UNBIND);
}
项目:gemini.blueprint    文件:OsgiServiceDynamicInterceptorListenerTest.java   
public void testStickinessWhenABetterServiceIsAvailable() throws Exception {
    interceptor.setSticky(true);
    interceptor.afterPropertiesSet();

    ServiceListener sl = (ServiceListener) bundleContext.getServiceListeners().iterator().next();

    Dictionary props = new Hashtable();
    // increase service ranking
    props.put(Constants.SERVICE_RANKING, 10);

    ServiceReference ref = new MockServiceReference(null, props, null);
    ServiceEvent event = new ServiceEvent(ServiceEvent.REGISTERED, ref);

    assertEquals(1, SimpleTargetSourceLifecycleListener.BIND);
    assertEquals(0, SimpleTargetSourceLifecycleListener.UNBIND);

    sl.serviceChanged(event);

    assertEquals("the proxy is not sticky", 1, SimpleTargetSourceLifecycleListener.BIND);
    assertEquals(0, SimpleTargetSourceLifecycleListener.UNBIND);
}
项目:gemini.blueprint    文件:OsgiServiceDynamicInterceptorListenerTest.java   
public void testStickinessWhenServiceGoesDown() throws Exception {
    interceptor.setSticky(true);
    interceptor.afterPropertiesSet();

    ServiceListener sl = (ServiceListener) bundleContext.getServiceListeners().iterator().next();

    Dictionary props = new Hashtable();
    // increase service ranking
    props.put(Constants.SERVICE_RANKING, 10);

    ServiceReference higherRankingRef = new MockServiceReference(null, props, null);
    refs = new ServiceReference[] { new MockServiceReference(), higherRankingRef };

    assertTrue(Arrays.equals(bundleContext.getServiceReferences((String)null, null), refs));

    assertEquals(1, SimpleTargetSourceLifecycleListener.BIND);
    assertEquals(0, SimpleTargetSourceLifecycleListener.UNBIND);

    sl.serviceChanged(new ServiceEvent(ServiceEvent.UNREGISTERING, refs[0]));

    assertEquals(2, SimpleTargetSourceLifecycleListener.BIND);
    assertEquals(0, SimpleTargetSourceLifecycleListener.UNBIND);

    assertSame("incorrect backing reference selected", higherRankingRef, ((ServiceReferenceProxy) interceptor
            .getServiceReference()).getTargetServiceReference());
}
项目:gemini.blueprint    文件:OsgiListenerUtilsTest.java   
/**
 * Test method for
 * {@link org.eclipse.gemini.blueprint.util.OsgiListenerUtils#addServiceListener(org.osgi.framework.BundleContext, org.osgi.framework.ServiceListener, java.lang.String)}.
 */
public void testAddServiceListenerBundleContextServiceListenerString() {
    final List refs = new ArrayList();

    ServiceListener list = new ServiceListener() {

        public void serviceChanged(ServiceEvent event) {
            if (ServiceEvent.REGISTERED == event.getType())
                refs.add(event.getSource());
        }
    };

    OsgiListenerUtils.addServiceListener(bundleContext, list, (String) null);

    assertFalse(refs.isEmpty());
    assertEquals(3, refs.size());
    assertSame(ref1, refs.get(0));
    assertSame(ref2, refs.get(1));
    assertSame(ref3, refs.get(2));
}
项目:gemini.blueprint    文件:OsgiListenerUtilsTest.java   
/**
 * Test method for
 * {@link org.eclipse.gemini.blueprint.util.OsgiListenerUtils#addSingleServiceListener(org.osgi.framework.BundleContext, org.osgi.framework.ServiceListener, java.lang.String)}.
 */
public void testAddSingleServiceListenerBundleContextServiceListenerString() {
    final List refs = new ArrayList();

    ServiceListener listener = new ServiceListener() {

        public void serviceChanged(ServiceEvent event) {
            if (ServiceEvent.REGISTERED == event.getType())
                refs.add(event.getSource());
        }
    };

    OsgiListenerUtils.addSingleServiceListener(bundleContext, listener, (String) null);

    assertFalse(refs.isEmpty());
    assertEquals(1, refs.size());
    assertSame(ref1, refs.get(0));
}
项目:aries-rsa    文件:RemoteServiceAdminCore.java   
public RemoteServiceAdminCore(BundleContext context, BundleContext apiContext, DistributionProvider provider) {
    this.bctx = context;
    this.apictx = apiContext;
    this.eventProducer = new EventProducer(bctx);
    this.provider = provider;
    // listen for exported services being unregistered so we can close the export
    this.exportedServiceListener = new ServiceListener() {
        public void serviceChanged(ServiceEvent event) {
            if (event.getType() == ServiceEvent.UNREGISTERING) {
                removeServiceExports(event.getServiceReference());
            }
        }
    };
    try {
        String filter = "(" + RemoteConstants.SERVICE_EXPORTED_INTERFACES + "=*)";
        context.addServiceListener(exportedServiceListener, filter);
    } catch (InvalidSyntaxException ise) {
        throw new RuntimeException(ise); // can never happen
    }
}
项目:pentaho-osgi-bundles    文件:PentahoCacheManagerFactoryTest.java   
@Test
public void testListeners() throws Exception {
  Future<PentahoCacheProvidingService> serviceFuture;

  factory.init();
  verify( bundleContext ).addServiceListener( serviceListenerCaptor.capture(), argThat( matchesFilter ) );

  serviceFuture = factory.getProviderService( MOCK_PID );
  assertThat( serviceFuture.isDone(), is( true ) );
  assertThat( serviceFuture.get( 1, TimeUnit.SECONDS ), is( providingService ) );

  ServiceListener serviceListener = serviceListenerCaptor.getValue();

  serviceListener.serviceChanged( new ServiceEvent( ServiceEvent.UNREGISTERING, serviceReference ) );

  serviceFuture = factory.getProviderService( MOCK_PID );
  assertThat( serviceFuture.isDone(), is( false ) );

  serviceListener.serviceChanged( new ServiceEvent( ServiceEvent.REGISTERED, serviceReference ) );

  serviceFuture = factory.getProviderService( MOCK_PID );
  assertThat( serviceFuture.isDone(), is( true ) );
  assertThat( serviceFuture.get( 1, TimeUnit.SECONDS ), is( providingService ) );
}
项目:openeos    文件:LiquibaseBundleTracker.java   
private void registerForServiceNotAvailable(final Bundle bundle, final String filterDataSource) throws InvalidSyntaxException {
    //serviceHideManager.hideService(filterDataSource);
    context.addServiceListener(new ServiceListener() {

        @Override
        public void serviceChanged(ServiceEvent event) {
            if (event.getType() == ServiceEvent.REGISTERED) {

                try {
                    checkAndRunLiquibase(bundle);
                } catch (Exception e) {
                    LOG.error(
                            MessageFormat.format("An error occured while processing bundle {0} for liquibase extender.",
                                    bundle.getSymbolicName()), e);
                }
                context.removeServiceListener(this);
                //serviceHideManager.showService(filterDataSource);
            }
        }
    }, filterDataSource);
}
项目:IoT-Gateway    文件:EventManagerTest.java   
@Before
public void setup() throws Exception {
    serviceReference = context.mock(ServiceReference.class, "serviceReference");
    bundleContext = context.mock(BundleContext.class);
    listener = context.mock(GDEventListener.class);
    eventManager = new EventManager();
    eventManager.setContext(bundleContext);

    timer = new Timer();
    timer.schedule(new ShutdownTask(), 3000);

    context.checking(new Expectations() {
        {
            //oneOf(bundleContext).createFilter(with(aNonNull(String.class)));
            allowing(bundleContext).addServiceListener(with(any(ServiceListener.class)), with(aNonNull(String.class)));
            allowing(bundleContext).removeServiceListener(with(any(ServiceListener.class)));
            allowing(bundleContext).getServiceReferences(with(any(Class.class)), with(any(String.class)));
            allowing(bundleContext).getServiceReferences(with(any(String.class)), with(any(String.class)));
        }
    });

    registerDevice("zwave32");
    registerDevice("zwave31");
    registerDevice("dev");
}
项目:Ptoceti    文件:Activator.java   
/**
 * Called by the framework for initialisation when the Activator class is loaded.
 * The method first get a service reference on the osgi logging service, used for
 * logging whithin the bundle.
 *
 * If the method cannot get a reference to the logging service, a NullPointerException is thrown.
 * @param context
 * @throws BundleException
 */
public void start(BundleContext context) throws Exception {
    // TODO Auto-generated method stub
    Activator.bc = context;

    // we construct a listener to detect if the log service appear or disapear.
    String filter = "(objectclass=" + logServiceName + ")";
    ServiceListener logServiceListener = new LogServiceListener();
    try {
        bc.addServiceListener( logServiceListener, filter);
        // in case the service is already registered, we send a REGISTERED event to its listener.
        ServiceReference srLog = bc.getServiceReference( logServiceName );
        if( srLog != null ) {
            logServiceListener.serviceChanged(new ServiceEvent( ServiceEvent.REGISTERED, srLog ));
        }
    } catch ( InvalidSyntaxException e ) {
        throw new BundleException("Error in filter string while registering LogServiceListener." + e.toString());
    }

    piService = new PiService();
}
项目:Ptoceti    文件:Activator.java   
/**
    * Called by the framework for initialisation when the Activator class is
    * loaded. The method first get a service reference on the osgi logging
    * service, used for logging whithin the bundle.
    * 
    * If the method cannot get a reference to the logging service, a
    * NullPointerException is thrown.
    * 
    * @param context
    * @throws BundleException
    */
   public void start(BundleContext context) throws BundleException {

Activator.bc = context;

// we construct a listener to detect if the log service appear or
// disapear.
String logFilter = "(objectclass=" + logServiceName + ")";
ServiceListener logServiceListener = new LogServiceListener();
try {
    bc.addServiceListener(logServiceListener, logFilter);
    // in case the service is already registered, we send a REGISTERED
    // event to its listener.
    ServiceReference srLog = bc.getServiceReference(logServiceName);
    if (srLog != null) {
    logServiceListener.serviceChanged(new ServiceEvent(ServiceEvent.REGISTERED, srLog));
    }
} catch (InvalidSyntaxException e) {
    throw new BundleException("Error in filter string while registering LogServiceListener." + e.toString());
}

log(LogService.LOG_INFO, "Starting version " + bc.getBundle().getHeaders().get("Bundle-Version"));

influxDbFactory.start();
   }
项目:spring-osgi    文件:MockBundleContextTest.java   
public void testRemoveServiceListener() throws Exception {
    ServiceListener listener = new ServiceListener() {
        public void serviceChanged(ServiceEvent event) {
        }
    };

    Set listeners = mock.getServiceListeners();

    mock.removeServiceListener(null);

    assertEquals(0, listeners.size());

    mock.removeServiceListener(listener);
    assertEquals(0, listeners.size());

    mock.addServiceListener(listener);
    assertEquals(1, listeners.size());

    mock.removeServiceListener(listener);
    assertEquals(0, listeners.size());
}
项目:spring-osgi    文件:OsgiServiceCollectionProxyFactoryBeanTest.java   
public void testMandatoryServiceUnAvailableWhileWorking() {
    serviceFactoryBean.setInterfaces(new Class[] { Serializable.class });
    serviceFactoryBean.afterPropertiesSet();

    Collection col = (Collection) serviceFactoryBean.getObject();

    assertFalse(col.isEmpty());
    Set listeners = bundleContext.getServiceListeners();

    ServiceListener list = (ServiceListener) listeners.iterator().next();
    list.serviceChanged(new ServiceEvent(ServiceEvent.UNREGISTERING, ref));

    try {
        // disable filter
        col.isEmpty();
        fail("should have thrown exception");
    }
    catch (ServiceUnavailableException ex) {
        // expected
    }
}
项目:spring-osgi    文件:OsgiServiceDynamicInterceptorListenerTest.java   
public void testUnbind() {
    interceptor.afterPropertiesSet();

    assertEquals(1, SimpleTargetSourceLifecycleListener.BIND);
    assertEquals(0, SimpleTargetSourceLifecycleListener.UNBIND);

    ServiceListener sl = (ServiceListener) bundleContext.getServiceListeners().iterator().next();

    // save old ref and invalidate it so new services are not found
    ServiceReference oldRef = refs[0];
    refs = null;

    sl.serviceChanged(new ServiceEvent(ServiceEvent.UNREGISTERING, oldRef));

    assertEquals(1, SimpleTargetSourceLifecycleListener.BIND);
    assertEquals(1, SimpleTargetSourceLifecycleListener.UNBIND);
}
项目:spring-osgi    文件:AbstractOsgiCollectionTest.java   
protected void removeService(Object service) {
    ServiceReference ref = new MockServiceReference();

    for (Iterator iter = services.entrySet().iterator(); iter.hasNext();) {
        Map.Entry entry = (Map.Entry) iter.next();
        if (entry.getValue().equals(service)) {
            ref = (ServiceReference) entry.getKey();
            continue;
        }
    }

    services.remove(ref);

    ServiceEvent event = new ServiceEvent(ServiceEvent.UNREGISTERING, ref);

    for (Iterator iter = context.getServiceListeners().iterator(); iter.hasNext();) {
        ServiceListener listener = (ServiceListener) iter.next();
        listener.serviceChanged(event);
    }

}
项目:spring-osgi    文件:OsgiListenerUtilsTest.java   
/**
 * Test method for
 * {@link org.springframework.osgi.util.OsgiListenerUtils#addServiceListener(org.osgi.framework.BundleContext, org.osgi.framework.ServiceListener, java.lang.String)}.
 */
public void testAddServiceListenerBundleContextServiceListenerString() {
    final List refs = new ArrayList();

    ServiceListener list = new ServiceListener() {

        public void serviceChanged(ServiceEvent event) {
            if (ServiceEvent.REGISTERED == event.getType())
                refs.add(event.getSource());
        }
    };

    OsgiListenerUtils.addServiceListener(bundleContext, list, (String) null);

    assertFalse(refs.isEmpty());
    assertEquals(3, refs.size());
    assertSame(ref1, refs.get(0));
    assertSame(ref2, refs.get(1));
    assertSame(ref3, refs.get(2));
}
项目:spring-osgi    文件:OsgiListenerUtilsTest.java   
/**
 * Test method for
 * {@link org.springframework.osgi.util.OsgiListenerUtils#addSingleServiceListener(org.osgi.framework.BundleContext, org.osgi.framework.ServiceListener, java.lang.String)}.
 */
public void testAddSingleServiceListenerBundleContextServiceListenerString() {
    final List refs = new ArrayList();

    ServiceListener listener = new ServiceListener() {

        public void serviceChanged(ServiceEvent event) {
            if (ServiceEvent.REGISTERED == event.getType())
                refs.add(event.getSource());
        }
    };

    OsgiListenerUtils.addSingleServiceListener(bundleContext, listener, (String) null);

    assertFalse(refs.isEmpty());
    assertEquals(1, refs.size());
    assertSame(ref1, refs.get(0));
}
项目:service-jockey    文件:ActivatorTest.java   
public void testActivator() throws Exception {
    ServiceRegistration sreg = mock(ServiceRegistration.class);
    BundleContext bc = mock(BundleContext.class);
    when(bc.registerService(anyString(), anyObject(), any(Dictionary.class))).thenReturn(sreg); 

    Activator a = new Activator();
    a.start(bc);

    verify(bc).registerService(eq(EventHook.class.getName()), isA(HidingEventHook.class), any(Dictionary.class));
    verify(bc).registerService(eq(FindHook.class.getName()), isA(HidingFindHook.class), any(Dictionary.class));
    verify(bc).addServiceListener(isA(ServiceJockeyListener.class));

    verify(bc, never()).removeServiceListener((ServiceListener) anyObject());
    verify(sreg, never()).unregister();
    a.stop(bc);
    verify(bc).removeServiceListener(isA(ServiceJockeyListener.class));
    verify(sreg, times(2)).unregister();
}
项目:Component-Bindings-Provider    文件:ComponentBindingsProviderFactoryImpl.java   
/**
 * Executed when the service is activated.
 * 
 * @param context
 *            the service's context
 * @throws InvalidSyntaxException
 */
protected void activate(final ComponentContext context)
        throws InvalidSyntaxException {
    log.info("activate");

    bundleContext = context.getBundleContext();

    sl = new ServiceListener() {
        public void serviceChanged(ServiceEvent event) {
            if (event.getType() == ServiceEvent.UNREGISTERING) {
                cache.unregisterComponentBindingsProvider(event
                        .getServiceReference());
            } else if (event.getType() == ServiceEvent.REGISTERED) {
                cache.registerComponentBindingsProvider(event
                        .getServiceReference());
            }
        }
    };
    bundleContext.addServiceListener(sl, "(" + Constants.OBJECTCLASS + "="
            + ComponentBindingsProvider.class.getName() + ")");
    reloadCache();
    log.info("Activation successful");
}
项目:gemini.blueprint    文件:ServiceAvailableDuringUnregistrationTest.java   
public void testServiceAliveDuringUnregistration() throws Exception {
    service = new Polygon();

    ServiceRegistration reg = bundleContext.registerService(Shape.class.getName(), service, null);

    String filter = OsgiFilterUtils.unifyFilter(Shape.class, null);

    ServiceListener listener = new ServiceListener() {

        public void serviceChanged(ServiceEvent event) {
            if (ServiceEvent.UNREGISTERING == event.getType()) {
                ServiceReference ref = event.getServiceReference();
                Object aliveService = bundleContext.getService(ref);
                assertNotNull("services not available during unregistration", aliveService);
                assertSame(service, aliveService);
            }
        }
    };

    try {
        bundleContext.addServiceListener(listener, filter);
        reg.unregister();
    }
    finally {
        bundleContext.removeServiceListener(listener);
    }
}
项目:gemini.blueprint    文件:MockBundleContext.java   
/**
 * Constructs a new <code>MockBundleContext</code> instance allowing both
 * the bundle and the context properties to be specified.
 * 
 * @param bundle associated bundle
 * @param props context properties
 */
public MockBundleContext(Bundle bundle, Properties props) {
    this.bundle = (bundle == null ? new MockBundle(this) : bundle);
    properties = new Properties(DEFAULT_PROPERTIES);
    if (props != null)
        properties.putAll(props);

       // make sure the order is preserved
       this.serviceListeners = new LinkedHashSet<ServiceListener>(2);
       this.bundleListeners = new LinkedHashSet<BundleListener>(2);
}
项目:gemini.blueprint    文件:MockBundleContext.java   
public void addServiceListener(ServiceListener listener) {
    try {
        addServiceListener(listener, null);
    } catch (InvalidSyntaxException ex) {
        throw new IllegalStateException("exception should not occur");
    }
}
项目:gemini.blueprint    文件:MockBundleContextTest.java   
public void testAddServiceListener() throws Exception {
    ServiceListener listener = new ServiceListener() {
        public void serviceChanged(ServiceEvent event) {
        }
    };
    mock.addServiceListener(listener);

    assertEquals(1, mock.getServiceListeners().size());
    assertSame(listener, mock.getServiceListeners().iterator().next());
}
项目:gemini.blueprint    文件:OsgiListenerUtils.java   
private static void registerListener(BundleContext context, ServiceListener listener, String filter) {
    Assert.notNull(context);
    Assert.notNull(listener);

    try {
        // add listener
        context.addServiceListener(listener, filter);
    }
    catch (InvalidSyntaxException isex) {
        throw (RuntimeException) new IllegalArgumentException("Invalid filter").initCause(isex);
    }
}
项目:gemini.blueprint    文件:OsgiListenerUtils.java   
private static void dispatchServiceRegistrationEvents(ServiceReference[] alreadyRegistered, ServiceListener listener) {
    if (log.isTraceEnabled())
        log.trace("Calling listener for already registered services: "
                + ObjectUtils.nullSafeToString(alreadyRegistered));

    if (alreadyRegistered != null) {
        for (int i = 0; i < alreadyRegistered.length; i++) {
            listener.serviceChanged(new ServiceEvent(ServiceEvent.REGISTERED, alreadyRegistered[i]));
        }
    }
}
项目:gemini.blueprint    文件:OsgiListenerUtils.java   
/**
 * Removes a service listener from the given bundle context. This method
 * simply takes care of any exceptions that might be thrown (in case the
 * context is invalid).
 * 
 * @param context bundle context to unregister the listener from
 * @param listener service listener to unregister
 * @return true if the listener unregistration has succeeded, false
 * otherwise (for example if the bundle context is invalid)
 */
public static boolean removeServiceListener(BundleContext context, ServiceListener listener) {
    if (context == null || listener == null)
        return false;

    try {
        context.removeServiceListener(listener);
        return true;
    }
    catch (IllegalStateException e) {
        // Bundle context is no longer valid
    }

    return false;
}
项目:gemini.blueprint    文件:OsgiServiceCollectionProxyFactoryBeanTest.java   
public void testMandatoryServiceUnAvailableWhileWorking() {
    serviceFactoryBean.setInterfaces(new Class<?>[] { Runnable.class });
    serviceFactoryBean.afterPropertiesSet();

    Collection col = (Collection) serviceFactoryBean.getObject();

    assertFalse(col.isEmpty());
    Set listeners = bundleContext.getServiceListeners();

    ServiceListener list = (ServiceListener) listeners.iterator().next();
    // disable filter
    list.serviceChanged(new ServiceEvent(ServiceEvent.UNREGISTERING, ref));
    col.isEmpty();
}
项目:gemini.blueprint    文件:OsgiServiceDynamicInterceptorListenerTest.java   
public void testRebindWhenServiceGoesDownButAReplacementIsFound() {
    interceptor.afterPropertiesSet();

    assertEquals(1, SimpleTargetSourceLifecycleListener.BIND);
    assertEquals(0, SimpleTargetSourceLifecycleListener.UNBIND);

    ServiceListener sl = (ServiceListener) bundleContext.getServiceListeners().iterator().next();

    // unregister the old service
    sl.serviceChanged(new ServiceEvent(ServiceEvent.UNREGISTERING, refs[0]));

    // a new one is found since the mock context will return one again
    assertEquals(2, SimpleTargetSourceLifecycleListener.BIND);
    assertEquals(0, SimpleTargetSourceLifecycleListener.UNBIND);
}
项目:gemini.blueprint    文件:OsgiListenerUtilsTest.java   
/**
 * Test method for
 * {@link org.eclipse.gemini.blueprint.util.OsgiListenerUtils#removeServiceListener(org.osgi.framework.BundleContext, org.osgi.framework.ServiceListener)}.
 */
public void testRemoveServiceListenerBundleContextServiceListener() {
    ServiceListener listener = new ServiceListener() {

        public void serviceChanged(ServiceEvent event) {
        }
    };

    OsgiListenerUtils.addSingleServiceListener(bundleContext, listener, (String) null);
    assertEquals(1, bundleContext.getServiceListeners().size());
    OsgiListenerUtils.removeServiceListener(bundleContext, listener);
}
项目:gemini.blueprint    文件:AbstractSynchronizedOsgiTests.java   
/**
 * Waits for a <em>Spring powered</em> bundle, given by its symbolic name,
 * to be fully started.
 * 
 * <p/>Forces the current (test) thread to wait for the a Spring application
 * context to be published under the given symbolic name. This method allows
 * waiting for full initialization of Spring OSGi bundles before starting
 * the actual test execution.
 * 
 * @param context bundle context to use for service lookup
 * @param forBundleWithSymbolicName bundle symbolic name
 * @param timeout maximum time to wait (in seconds) for the application
 * context to be published
 */
protected void waitOnContextCreation(BundleContext context, String forBundleWithSymbolicName, long timeout) {
    // translate from seconds to milliseconds
    long time = timeout * SECOND;

    // use the counter to make sure the threads block
    final Counter counter = new Counter("waitForContext on bnd=" + forBundleWithSymbolicName);

    counter.increment();

    String filter = "(org.springframework.context.service.name=" + forBundleWithSymbolicName + ")";

    ServiceListener listener = new ServiceListener() {

        public void serviceChanged(ServiceEvent event) {
            if (event.getType() == ServiceEvent.REGISTERED)
                counter.decrement();
        }
    };

    OsgiListenerUtils.addServiceListener(context, listener, filter);

    if (logger.isDebugEnabled())
        logger.debug("Start waiting for Spring/OSGi bundle=" + forBundleWithSymbolicName);

    try {
        if (counter.waitForZero(time)) {
            waitingFailed(forBundleWithSymbolicName);
        }
        else if (logger.isDebugEnabled()) {
            logger.debug("Found applicationContext for bundle=" + forBundleWithSymbolicName);
        }
    }
    finally {
        // inform waiting thread
        context.removeServiceListener(listener);
    }
}
项目:hashsdn-controller    文件:GlobalEventExecutorModuleTest.java   
@SuppressWarnings({ "rawtypes", "unchecked" })
@Before
public void setUp() throws Exception {
    factory = new GlobalEventExecutorModuleFactory();
    super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext,factory));

    Filter mockFilter = mock(Filter.class);
    doReturn("mock").when(mockFilter).toString();
    doReturn(mockFilter).when(mockedContext).createFilter(anyString());
    doNothing().when(mockedContext).addServiceListener(any(ServiceListener.class), anyString());
    ServiceReference mockServiceRef = mock(ServiceReference.class);
    doReturn(new ServiceReference[]{mockServiceRef}).when(mockedContext).
            getServiceReferences(anyString(), anyString());
    doReturn(mock(EventExecutor.class)).when(mockedContext).getService(mockServiceRef);
}
项目:hashsdn-controller    文件:NettyThreadgroupModuleTest.java   
@SuppressWarnings({ "rawtypes", "unchecked" })
@Before
public void setUp() throws Exception {
    factory = new NettyThreadgroupModuleFactory();
    super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext,factory));

    Filter mockFilter = mock(Filter.class);
    doReturn("mock").when(mockFilter).toString();
    doReturn(mockFilter).when(mockedContext).createFilter(anyString());
    doNothing().when(mockedContext).addServiceListener(any(ServiceListener.class), anyString());
    ServiceReference mockServiceRef = mock(ServiceReference.class);
    doReturn(new ServiceReference[]{mockServiceRef}).when(mockedContext).
            getServiceReferences(anyString(), anyString());
    doReturn(mock(EventLoopGroup.class)).when(mockedContext).getService(mockServiceRef);
}
项目:aries-rsa    文件:PublishingEndpointListenerTest.java   
public void testDiscoveryPlugin() throws Exception {
    BundleContext ctx = EasyMock.createMock(BundleContext.class);
    stubCreateFilter(ctx);
    ctx.addServiceListener(EasyMock.isA(ServiceListener.class),
            EasyMock.eq("(objectClass=" + DiscoveryPlugin.class.getName() + ")"));

    ServiceReference<DiscoveryPlugin> sr1 = createAppendPlugin(ctx);
    ServiceReference<DiscoveryPlugin> sr2 = createPropertyPlugin(ctx);

    EasyMock.expect(ctx.getServiceReferences(DiscoveryPlugin.class.getName(), null))
            .andReturn(new ServiceReference[]{sr1, sr2}).anyTimes();
    EasyMock.replay(ctx);

    EndpointDescription endpoint = createEndpoint();

    Map<String, Object> expectedProps = new HashMap<String, Object>(endpoint.getProperties());
    expectedProps.put("endpoint.id", "http://google.de:80/test/sub/appended");
    expectedProps.put("foo", "bar");
    expectedProps.put("service.imported", "true");

    final ZooKeeper zk = EasyMock.createNiceMock(ZooKeeper.class);
    String expectedFullPath = "/osgi/service_registry/org/foo/myClass/some.machine#9876##test";

    EndpointDescription epd = new EndpointDescription(expectedProps);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    new EndpointDescriptionParser().writeEndpoint(epd, bos);
    byte[] data = bos.toByteArray();
    expectCreated(zk, expectedFullPath, EasyMock.aryEq(data));
    EasyMock.replay(zk);

    PublishingEndpointListener eli = new PublishingEndpointListener(zk, ctx);

    List<EndpointDescription> endpoints = getEndpoints(eli);
    assertEquals("Precondition", 0, endpoints.size());
    eli.endpointAdded(endpoint, null);
    assertEquals(1, endpoints.size());

    //TODO enable
    //EasyMock.verify(zk);
}
项目:aries-rsa    文件:DistributionProviderTrackerTest.java   
@Test
public void testAddingWithNullValues() throws InvalidSyntaxException {
    IMocksControl c = EasyMock.createControl();
    DistributionProvider provider = c.createMock(DistributionProvider.class);

    ServiceReference<DistributionProvider> providerRef = c.createMock(ServiceReference.class);
    EasyMock.expect(providerRef.getProperty(RemoteConstants.REMOTE_INTENTS_SUPPORTED)).andReturn(null);
    EasyMock.expect(providerRef.getProperty(RemoteConstants.REMOTE_CONFIGS_SUPPORTED)).andReturn(null);

    BundleContext context = c.createMock(BundleContext.class);
    String filterSt = String.format("(objectClass=%s)", DistributionProvider.class.getName());
    Filter filter = FrameworkUtil.createFilter(filterSt);
    EasyMock.expect(context.createFilter(filterSt)).andReturn(filter);
    EasyMock.expect(context.getService(providerRef)).andReturn(provider);
    ServiceRegistration rsaReg = c.createMock(ServiceRegistration.class);
    EasyMock.expect(context.registerService(EasyMock.isA(String.class), EasyMock.isA(ServiceFactory.class),
                                            EasyMock.isA(Dictionary.class)))
        .andReturn(rsaReg).atLeastOnce();

    context.addServiceListener(EasyMock.isA(ServiceListener.class), EasyMock.isA(String.class));
    EasyMock.expectLastCall();

    final BundleContext apiContext = c.createMock(BundleContext.class);
    c.replay();
    DistributionProviderTracker tracker = new DistributionProviderTracker(context) {
        protected BundleContext getAPIContext() {
            return apiContext;
        };
    };
    tracker.addingService(providerRef);
    c.verify();
}
项目:aries-rsa    文件:RemoteServiceAdminCoreTest.java   
@Test
public void testDontExportOwnServiceProxies() throws InvalidSyntaxException {
    IMocksControl c = EasyMock.createControl();
    Bundle b = c.createMock(Bundle.class);
    BundleContext bc = c.createMock(BundleContext.class);

    EasyMock.expect(bc.getBundle()).andReturn(b).anyTimes();
    bc.addServiceListener(EasyMock.<ServiceListener>anyObject(), EasyMock.<String>anyObject());
    EasyMock.expectLastCall().anyTimes();
    bc.removeServiceListener(EasyMock.<ServiceListener>anyObject());
    EasyMock.expectLastCall().anyTimes();

    Dictionary<String, String> d = new Hashtable<String, String>();
    EasyMock.expect(b.getHeaders()).andReturn(d).anyTimes();

    ServiceReference sref = c.createMock(ServiceReference.class);
    EasyMock.expect(sref.getBundle()).andReturn(b).anyTimes();
    EasyMock.expect(sref.getPropertyKeys())
        .andReturn(new String[]{"objectClass", "service.exported.interfaces"}).anyTimes();
    EasyMock.expect(sref.getProperty("objectClass")).andReturn(new String[] {"a.b.C"}).anyTimes();
    EasyMock.expect(sref.getProperty(RemoteConstants.SERVICE_IMPORTED)).andReturn(true).anyTimes();
    EasyMock.expect(sref.getProperty("service.exported.interfaces")).andReturn("*").anyTimes();

    DistributionProvider provider = c.createMock(DistributionProvider.class);

    c.replay();

    RemoteServiceAdminCore rsaCore = new RemoteServiceAdminCore(bc, bc, provider);

    // must return an empty List as sref if from the same bundle
    List<ExportRegistration> exRefs = rsaCore.exportService(sref, null);

    assertNotNull(exRefs);
    assertEquals(0, exRefs.size());

    // must be empty
    assertEquals(rsaCore.getExportedServices().size(), 0);

    c.verify();
}
项目:incubator-taverna-osgi    文件:OsgiLauncher.java   
/**
 * Starts the OSGi framework, installs and starts the bundles.
 *
 * @throws BundleException
 *             if the framework could not be started
 */
public void start() throws BundleException {
    logger.info("Loading the OSGi Framework Factory");
    FrameworkFactory frameworkFactory = ServiceLoader.load(FrameworkFactory.class).iterator()
            .next();

    logger.info("Creating the OSGi Framework");
    framework = frameworkFactory.newFramework(frameworkConfiguration);
    logger.info("Starting the OSGi Framework");
    framework.start();

    context = framework.getBundleContext();
    context.addServiceListener(new ServiceListener() {
        public void serviceChanged(ServiceEvent event) {
            ServiceReference serviceReference = event.getServiceReference();
            if (event.getType() == ServiceEvent.REGISTERED) {
                Object property = serviceReference
                        .getProperty("org.springframework.context.service.name");
                if (property != null) {
                    addStartedSpringContext(property.toString());
                }
            }
            logger.fine((event.getType() == ServiceEvent.REGISTERED ? "Registering : "
                    : "Unregistering : ") + serviceReference);
        }
    });

    installedBundles = installBundles(bundlesToInstall);

    List<Bundle> bundlesToStart = new ArrayList<Bundle>();
    for (Bundle bundle : installedBundles) {
        if ("org.springframework.osgi.extender".equals(bundle.getSymbolicName())) {
            springOsgiExtender = bundle;
        } else {
            bundlesToStart.add(bundle);
        }
    }
    startBundles(bundlesToStart);
}
项目:motech    文件:PlatformActivator.java   
private void registerHttpServiceListener() throws InvalidSyntaxException {
    bundleContext.addServiceListener(new ServiceListener() {
        @Override
        public void serviceChanged(ServiceEvent event) {
            if (event.getType() == ServiceEvent.REGISTERED) {
                LOGGER.info("Http service registered");
                httpServiceRegistered();
            }
        }
    }, String.format("(&(%s=%s))", Constants.OBJECTCLASS, HttpService.class.getName()));
}