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

项目:gemini.blueprint    文件:PublishingServiceFactory.java   
public void ungetService(Bundle bundle, ServiceRegistration serviceRegistration, Object service) {

        if (log.isTraceEnabled()) {
            log.trace("Unget service called by bundle " + OsgiStringUtils.nullSafeName(bundle) + " on registration "
                    + OsgiStringUtils.nullSafeToString(serviceRegistration.getReference()));
        }

        Class<?> type = targetResolver.getType();
        // handle SF beans
        if (ServiceFactory.class.isAssignableFrom(type)) {
            ServiceFactory sf = (ServiceFactory) targetResolver.getBean();
            sf.ungetService(bundle, serviceRegistration, service);
        }

        if (createTCCLProxy) {
            synchronized (proxyCache) {
                // trigger purging of unused entries
                proxyCache.size();
            }
        }
    }
项目:gemini.blueprint    文件:OsgiServiceFactoryBeanTest.java   
public void testPrototypeServiceFactoryDestruction() throws Exception {
    ServiceFactory factory = new MockServiceFactory();
    String beanName = "prototype-sf";

    expect(beanFactory.isSingleton(beanName)).andReturn(false).times(2);
    expect(beanFactory.containsBean(beanName)).andReturn(true);
    expect(beanFactory.isPrototype(beanName)).andReturn(true);
    expect(beanFactory.getBean(beanName)).andReturn(factory);
    expect(beanFactory.getType(beanName)).andStubReturn((Class) factory.getClass());


    exporter.setTargetBeanName(beanName);
    exporter.setInterfaces(new Class<?>[]{Serializable.class});
    beanFactoryControl.replay();
    exporter.afterPropertiesSet();
    exporter.destroy();
}
项目:gemini.blueprint    文件:OsgiServiceRegistrationListenerAdapterTest.java   
public void testServiceFactoryListener() throws Exception {
    listener = new OsgiServiceRegistrationListenerAdapter();
    listener.setTarget(new ServiceFactoryListener());
    listener.setRegistrationMethod("registered");
    listener.setUnregistrationMethod("unregistered");
    listener.setBeanFactory(createMockBF());
    listener.afterPropertiesSet();
    Object service = new Object();
    assertEquals(0, ServiceFactoryListener.REG_CALLS);
    assertEquals(0, ServiceFactoryListener.UNREG_CALLS);

    listener.registered(service, props);
    listener.unregistered(service, props);

    assertEquals(0, ServiceFactoryListener.REG_CALLS);
    assertEquals(0, ServiceFactoryListener.UNREG_CALLS);

    ServiceFactory factory = new MockServiceFactory();

    listener.registered(factory, props);
    listener.unregistered(factory, props);
    assertEquals(1, ServiceFactoryListener.REG_CALLS);
    assertEquals(1, ServiceFactoryListener.UNREG_CALLS);
}
项目:AtlasForAndroid    文件:ServiceReferenceImpl.java   
boolean ungetService(Bundle bundle) {
    synchronized (this.useCounters) {
        if (this.service == null) {
            return false;
        }
        Integer num = (Integer) this.useCounters.get(bundle);
        if (num == null) {
            return false;
        } else if (num.intValue() == 1) {
            this.useCounters.remove(bundle);
            if (this.isServiceFactory) {
                ((ServiceFactory) this.service).ungetService(bundle, this.registration, this.cachedServices.get(bundle));
                this.cachedServices.remove(bundle);
            }
            return false;
        } else {
            this.useCounters.put(bundle, Integer.valueOf(num.intValue() - 1));
            return true;
        }
    }
}
项目:spring-osgi    文件:PublishingServiceFactory.java   
public Object getService(Bundle bundle, ServiceRegistration serviceRegistration) {
    Object bn = getBean();
    // handle SF beans
    if (bn instanceof ServiceFactory) {
        bn = ((ServiceFactory) bn).getService(bundle, serviceRegistration);
    }

    if (createTCCLProxy) {
        // check proxy cache
        synchronized (proxyCache) {
               WeakReference value = (WeakReference) proxyCache.get(bn);
            Object proxy = null;
            if (value != null) {
                proxy = value.get();
            }               
            if (proxy == null) {
                proxy = createCLLProxy(bn);
                proxyCache.put(bn, new WeakReference(proxy));
            }
            bn = proxy;
        }
    }

    return bn;
}
项目:spring-osgi    文件:OsgiServiceFactoryBean.java   
/**
 * Registration method.
 * 
 * @param classes
 * @param serviceProperties
 * @return the ServiceRegistration
 */
ServiceRegistration registerService(Class[] classes, Dictionary serviceProperties) {
    Assert.notEmpty(
        classes,
        "at least one class has to be specified for exporting (if autoExport is enabled then maybe the object doesn't implement any interface)");

    // create an array of classnames (used for registering the service)
    String[] names = ClassUtils.toStringArray(classes);
    // sort the names in alphabetical order (eases debugging)
    Arrays.sort(names);

    log.info("Publishing service under classes [" + ObjectUtils.nullSafeToString(names) + "]");

    ServiceFactory serviceFactory = new PublishingServiceFactory(classes, target, beanFactory, targetBeanName,
        (contextClassLoader == ExportContextClassLoader.SERVICE_PROVIDER), classLoader, aopClassLoader,
        bundleContext);

    if (isBeanBundleScoped())
        serviceFactory = new OsgiBundleScope.BundleScopeServiceFactory(serviceFactory);

    return bundleContext.registerService(names, serviceFactory, serviceProperties);
}
项目:gemini.blueprint    文件:PublishingServiceFactory.java   
public Object getService(Bundle bundle, ServiceRegistration serviceRegistration) {
    if (log.isTraceEnabled()) {
        log.trace("Get service called by bundle " + OsgiStringUtils.nullSafeName(bundle) + " on registration "
                + OsgiStringUtils.nullSafeToString(serviceRegistration.getReference()));
    }

    targetResolver.activate();
    Object bn = targetResolver.getBean();

    // handle SF beans
    if (bn instanceof ServiceFactory) {
        bn = ((ServiceFactory) bn).getService(bundle, serviceRegistration);
    }

    if (createTCCLProxy) {
        // check proxy cache
        synchronized (proxyCache) {
            WeakReference<Object> value = proxyCache.get(bn);
            Object proxy = null;
            if (value != null) {
                proxy = value.get();
            }
            if (proxy == null) {
                proxy = createCLLProxy(bn);
                proxyCache.put(bn, new WeakReference<Object>(proxy));
            }
            bn = proxy;
        }
    }

    return bn;
}
项目:gemini.blueprint    文件:OsgiServiceFactoryBean.java   
/**
 * Registration method.
 * 
 * @param classes
 * @param serviceProperties
 * @return the ServiceRegistration
 */
ServiceRegistration registerService(Class<?>[] classes, final Dictionary serviceProperties) {
    Assert.notEmpty(classes, "at least one class has to be specified for exporting "
            + "(if autoExport is enabled then maybe the object doesn't implement any interface)");

    // create an array of classnames (used for registering the service)
    final String[] names = ClassUtils.toStringArray(classes);
    // sort the names in alphabetical order (eases debugging)
    Arrays.sort(names);

    log.info("Publishing service under classes [" + ObjectUtils.nullSafeToString(names) + "]");

    ServiceFactory serviceFactory =
            new PublishingServiceFactory(resolver, classes, (ExportContextClassLoaderEnum.SERVICE_PROVIDER
                    .equals(contextClassLoader)), classLoader, aopClassLoader, bundleContext);

    if (isBeanBundleScoped())
        serviceFactory = new OsgiBundleScope.BundleScopeServiceFactory(serviceFactory);

    if (System.getSecurityManager() != null) {
        AccessControlContext acc = SecurityUtils.getAccFrom(beanFactory);
        final ServiceFactory serviceFactoryFinal = serviceFactory;
        return AccessController.doPrivileged(new PrivilegedAction<ServiceRegistration>() {
            public ServiceRegistration run() {
                return bundleContext.registerService(names, serviceFactoryFinal, serviceProperties);
            }
        }, acc);
    } else {
        return bundleContext.registerService(names, serviceFactory, serviceProperties);
    }
}
项目:gemini.blueprint    文件:OsgiServiceFactoryBeanTest.java   
public void testRegisterService() throws Exception {
    Class<?>[] clazz =
            new Class<?>[]{Serializable.class, HashMap.class, Cloneable.class, Map.class, LinkedHashMap.class};

    String[] names = new String[clazz.length];

    for (int i = 0; i < clazz.length; i++) {
        names[i] = clazz[i].getName();
    }

    final Properties props = new Properties();
    final ServiceRegistration reg = new MockServiceRegistration();

    exporter.setBundleContext(new MockBundleContext() {

        public ServiceRegistration registerService(String[] clazzes, Object service, Dictionary properties) {
            assertTrue(service instanceof ServiceFactory);
            return reg;
        }
    });

    Object proxy = createMock(ServiceFactory.class);
    exporter.setTarget(proxy);
    exporter.setInterfaces(new Class<?>[]{ServiceFactory.class});
    String beanName = "boo";
    exporter.setTargetBeanName(beanName);

    expect(beanFactory.isSingleton(beanName)).andReturn(true);
    expect(beanFactory.isPrototype(beanName)).andReturn(false);
    expect(beanFactory.containsBean(beanName)).andReturn(true);
    expect(beanFactory.getBean(beanName)).andReturn(proxy);
    expect(beanFactory.getType(beanName)).andStubReturn((Class) ServiceFactory.class);
    beanFactoryControl.replay();

    exporter.afterPropertiesSet();
    assertSame(reg, exporter.registerService(clazz, props));
}
项目:gemini.blueprint    文件:OsgiServiceFactoryBeanTest.java   
public void testServiceFactory() throws Exception {
    ServiceFactory factory = new MockServiceFactory();

    ctx = new MockBundleContext();
    exporter.setBundleContext(ctx);
    exporter.setBeanFactory(beanFactory);
    exporter.setInterfaces(new Class<?>[]{Serializable.class, Cloneable.class});
    exporter.setTarget(factory);
    beanFactoryControl.replay();
    exporter.afterPropertiesSet();
}
项目:gemini.blueprint    文件:OsgiServiceFactoryBeanTest.java   
public void testPrototypeServiceFactory() throws Exception {
    ServiceFactory factory = new MockServiceFactory();
    String beanName = "prototype-sf";
    expect(beanFactory.isSingleton(beanName)).andReturn(false);
    expect(beanFactory.isPrototype(beanName)).andReturn(true);
    expect(beanFactory.containsBean(beanName)).andReturn(true);
    expect(beanFactory.getBean(beanName)).andReturn(factory);
    expect(beanFactory.getType(beanName)).andStubReturn((Class) factory.getClass());

    exporter.setTargetBeanName(beanName);
    exporter.setInterfaces(new Class<?>[]{Serializable.class});
    beanFactoryControl.replay();
    exporter.afterPropertiesSet();
}
项目:gemini.blueprint    文件:OsgiServiceFactoryBeanTest.java   
public void testNonSingletonServiceFactoryRegistration() throws Exception {
    TestRegistrationListener listener = new TestRegistrationListener();

    ServiceFactory factory = new MockServiceFactory();
    String beanName = "prototype-sf";
    expect(beanFactory.isSingleton(beanName)).andReturn(false).times(3);
    expect(beanFactory.containsBean(beanName)).andReturn(true);
    expect(beanFactory.isPrototype(beanName)).andReturn(false);
    expect(beanFactory.getBean(beanName)).andReturn(factory);
    expect(beanFactory.getType(beanName)).andStubReturn((Class) factory.getClass());


    exporter.setTargetBeanName(beanName);
    exporter.setInterfaces(new Class<?>[]{Serializable.class});
    exporter.setListeners(new OsgiServiceRegistrationListener[]{listener});

    beanFactoryControl.replay();
    assertEquals(0, listener.registered.size());
    assertEquals(0, listener.unregistered.size());

    exporter.afterPropertiesSet();

    assertEquals(1, listener.registered.size());
    assertEquals(0, listener.unregistered.size());

    assertNull(listener.registered.keySet().iterator().next());
    exporter.destroy();
    assertEquals(1, listener.unregistered.size());
    assertNull(listener.unregistered.keySet().iterator().next());
}
项目:gemini.blueprint    文件:OsgiServiceRegistrationListenerAdapterTest.java   
public void testExtServiceFactoryListener() throws Exception {

        listener = new OsgiServiceRegistrationListenerAdapter();
        listener.setTarget(new ExtServiceFactoryListener());
        listener.setRegistrationMethod("registered");
        listener.setUnregistrationMethod("unregistered");
        listener.setBeanFactory(createMockBF());
        listener.afterPropertiesSet();
        Object service = new Object();
        assertEquals(0, ServiceFactoryListener.REG_CALLS);
        assertEquals(0, ServiceFactoryListener.UNREG_CALLS);

        listener.registered(service, props);
        listener.unregistered(service, props);

        assertEquals(0, ServiceFactoryListener.REG_CALLS);
        assertEquals(0, ServiceFactoryListener.UNREG_CALLS);

        ServiceFactory factory = new MockServiceFactory();

        listener.registered(factory, props);
        listener.unregistered(factory, props);

        assertEquals(1, ServiceFactoryListener.REG_CALLS);
        assertEquals(1, ServiceFactoryListener.UNREG_CALLS);

        ServiceFactory extFactory = new MockExtendedServiceFactory();

        listener.registered(extFactory, props);
        listener.unregistered(extFactory, props);

        assertEquals(3, ServiceFactoryListener.REG_CALLS);
        assertEquals(3, ServiceFactoryListener.UNREG_CALLS);
    }
项目:gemini.blueprint    文件:OsgiServiceNamespaceHandlerTest.java   
private Object getServiceAtIndex(int index) {
    Object sFactory = services.get(index);
    assertNotNull(sFactory);
    assertTrue(sFactory instanceof ServiceFactory);
    ServiceFactory fact = (ServiceFactory) sFactory;
    return fact.getService(null, null);
}
项目: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();
}
项目:AtlasForAndroid    文件:ServiceReferenceImpl.java   
ServiceReferenceImpl(Bundle bundle, Object obj, Dictionary<String, ?> dictionary, String[] strArr) {
    this.useCounters = new HashMap(0);
    this.cachedServices = null;
    if (obj instanceof ServiceFactory) {
        this.isServiceFactory = true;
    } else {
        this.isServiceFactory = false;
        checkService(obj, strArr);
    }
    this.bundle = bundle;
    this.service = obj;
    this.properties = dictionary == null ? new Hashtable() : new Hashtable(dictionary.size());
    if (dictionary != null) {
        Enumeration keys = dictionary.keys();
        while (keys.hasMoreElements()) {
            String str = (String) keys.nextElement();
            this.properties.put(str, dictionary.get(str));
        }
    }
    this.properties.put(Constants.OBJECTCLASS, strArr);
    Dictionary dictionary2 = this.properties;
    String str2 = Constants.SERVICE_ID;
    long j = nextServiceID + 1;
    nextServiceID = j;
    dictionary2.put(str2, Long.valueOf(j));
    Integer num = dictionary == null ? null : (Integer) dictionary.get(Constants.SERVICE_RANKING);
    this.properties.put(Constants.SERVICE_RANKING, Integer.valueOf(num == null ? 0 : num.intValue()));
    this.registration = new ServiceRegistrationImpl();
}
项目:spring-osgi    文件:PublishingServiceFactory.java   
public void ungetService(Bundle bundle, ServiceRegistration serviceRegistration, Object service) {
    Object bn = getBean();
    // handle SF beans
    if (bn instanceof ServiceFactory) {
        ((ServiceFactory) bn).ungetService(bundle, serviceRegistration, service);
    }

    if (createTCCLProxy) {
        synchronized (proxyCache) {
            proxyCache.values().remove(new WeakReference(service));
        }
    }
}
项目:spring-osgi    文件:OsgiServiceFactoryBeanTest.java   
public void testRegisterService() throws Exception {
    Class[] clazz = new Class[] { Serializable.class, HashMap.class, Cloneable.class, Map.class,
        LinkedHashMap.class };

    String[] names = new String[clazz.length];

    for (int i = 0; i < clazz.length; i++) {
        names[i] = clazz[i].getName();
    }

    final Properties props = new Properties();
    final ServiceRegistration reg = new MockServiceRegistration();

    exporter.setBundleContext(new MockBundleContext() {

        public ServiceRegistration registerService(String[] clazzes, Object service, Dictionary properties) {
            assertTrue(service instanceof ServiceFactory);
            return reg;
        }
    });

    Object proxy = MockControl.createControl(ServiceFactory.class).getMock();
    exporter.setTarget(proxy);
    exporter.setInterfaces(new Class[] { ServiceFactory.class });
    String beanName = "boo";
    exporter.setTargetBeanName(beanName);

    beanFactoryControl.expectAndReturn(beanFactory.isSingleton(beanName), false);
    beanFactoryControl.expectAndReturn(beanFactory.containsBean(beanName), true);
    beanFactoryControl.expectAndReturn(beanFactory.getType(beanName), proxy.getClass());
    beanFactoryControl.replay();

    exporter.afterPropertiesSet();
    assertSame(reg, exporter.registerService(clazz, props));
}
项目:spring-osgi    文件:OsgiServiceNamespaceHandlerTest.java   
private Object getServiceAtIndex(int index) {
    Object sFactory = services.get(index);
    assertNotNull(sFactory);
    assertTrue(sFactory instanceof ServiceFactory);
    ServiceFactory fact = (ServiceFactory) sFactory;
    return fact.getService(null, null);
}
项目:gravia    文件:BundleContextAdaptor.java   
@SuppressWarnings("unchecked")
private <S> S adaptServiceFactory(S service) {
    if (service instanceof ServiceFactory) {
        ServiceFactory<S> factory = (ServiceFactory<S>) service;
        service = (S) new ServiceFactoryAdaptor<S>(factory);
    }
    return service;
}
项目:gemini.blueprint    文件:OsgiBundleScope.java   
public BundleScopeServiceFactory(ServiceFactory serviceFactory) {
    Assert.notNull(serviceFactory);
    this.decoratedServiceFactory = serviceFactory;
}
项目:gemini.blueprint    文件:OsgiServiceFactoryBean.java   
public void afterPropertiesSet() throws Exception {
    Assert.notNull(bundleContext, "required property 'bundleContext' has not been set");

    hasNamedBean = StringUtils.hasText(targetBeanName);

    Assert.isTrue(hasNamedBean || target != null, "Either 'targetBeanName' or 'target' properties have to be set.");

    // if we have a name, we need a bean factory
    if (hasNamedBean) {
        Assert.notNull(beanFactory, "Required property 'beanFactory' has not been set.");
    }

    // initialize bean only when dealing with singletons and named beans
    if (hasNamedBean) {
        Assert.isTrue(beanFactory.containsBean(targetBeanName), "Cannot locate bean named '" + targetBeanName
                + "' inside the running bean factory.");

        if (beanFactory.isSingleton(targetBeanName)) {
            if (beanFactory instanceof ConfigurableListableBeanFactory) {
                ConfigurableListableBeanFactory clbf = (ConfigurableListableBeanFactory) beanFactory;
                BeanDefinition definition = clbf.getBeanDefinition(targetBeanName);
                if (!definition.isLazyInit()) {
                    target = beanFactory.getBean(targetBeanName);
                    targetClass = target.getClass();
                }
            }
        }

        if (targetClass == null) {
            // lazily get the target class
            targetClass = beanFactory.getType(targetBeanName);
        }

        // when running inside a container, add the dependency between this bean and the target one
        addBeanFactoryDependency();
    } else {
        targetClass = target.getClass();
    }

    if (propertiesResolver == null) {
        propertiesResolver = new BeanNameServicePropertiesResolver();
        ((BeanNameServicePropertiesResolver) propertiesResolver).setBundleContext(bundleContext);
    }

    // sanity check
    if (interfaces == null) {
        if (DefaultInterfaceDetector.DISABLED.equals(interfaceDetector))
            throw new IllegalArgumentException(
                    "No service interface(s) specified and auto-export discovery disabled; change at least one of these properties.");
        interfaces = new Class[0];
    }
    // check visibility type
    else {
        if (!ServiceFactory.class.isAssignableFrom(targetClass)) {
            for (int interfaceIndex = 0; interfaceIndex < interfaces.length; interfaceIndex++) {
                Class<?> intf = interfaces[interfaceIndex];
                Assert.isAssignable(intf, targetClass,
                        "Exported service object does not implement the given interface: ");
            }
        }
    }
    // check service properties listener
    if (serviceProperties instanceof ServicePropertiesListenerManager) {
        propertiesListener = new PropertiesMonitor();
        ((ServicePropertiesListenerManager) serviceProperties).addListener(propertiesListener);
    }

    boolean shouldRegisterAtStartup;
    synchronized (lock) {
        shouldRegisterAtStartup = registerAtStartup;
    }

    resolver =
            new LazyTargetResolver(target, beanFactory, targetBeanName, cacheTarget, getNotifier(),
                    getLazyListeners());

    if (shouldRegisterAtStartup) {
        registerService();
    }
}
项目:gemini.blueprint    文件:OsgiServiceRegistrationListenerAdapterTest.java   
public void registered(ServiceFactory service, Map serviceProperties) throws Exception {
    ServiceFactoryListener.REG_CALLS++;
}
项目:gemini.blueprint    文件:OsgiServiceRegistrationListenerAdapterTest.java   
public void unregistered(ServiceFactory service, Map serviceProperties) throws Exception {
    ServiceFactoryListener.UNREG_CALLS++;
}
项目:aries-rsa    文件:DistributionProviderTrackerTest.java   
@SuppressWarnings({
 "unchecked", "rawtypes"
})
@Test
public void testAddingRemoved() 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("");
    EasyMock.expect(providerRef.getProperty(RemoteConstants.REMOTE_CONFIGS_SUPPORTED)).andReturn("");

    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();

    c.reset();
    rsaReg.unregister();
    EasyMock.expectLastCall();
    EasyMock.expect(context.ungetService(providerRef)).andReturn(true);
    c.replay();
    tracker.removedService(providerRef, rsaReg);
    c.verify();
}
项目:aries-jax-rs-whiteboard    文件:JaxrsTest.java   
private ServiceRegistration<Application> registerApplication(
    ServiceFactory<Application> serviceFactory, Object... keyValues) {

    Dictionary<String, Object> properties = new Hashtable<>();

    properties.put(JAX_RS_APPLICATION_BASE, "/test-application");

    for (int i = 0; i < keyValues.length; i = i + 2) {
        properties.put(keyValues[i].toString(), keyValues[i + 1]);
    }

    ServiceRegistration<Application> serviceRegistration =
        bundleContext.registerService(
            Application.class, serviceFactory, properties);

    _registrations.add(serviceRegistration);

    return serviceRegistration;
}
项目:spring-osgi    文件:OsgiBundleScope.java   
public BundleScopeServiceFactory(ServiceFactory serviceFactory) {
    Assert.notNull(serviceFactory);
    this.decoratedServiceFactory = serviceFactory;
}
项目:spring-osgi    文件:OsgiServiceFactoryBean.java   
public void afterPropertiesSet() throws Exception {
    Assert.notNull(bundleContext, "required property 'bundleContext' has not been set");

    hasNamedBean = StringUtils.hasText(targetBeanName);

    Assert.isTrue(hasNamedBean || target != null, "Either 'targetBeanName' or 'target' properties have to be set.");

    // if we have a name, we need a bean factory
    if (hasNamedBean) {
        Assert.notNull(beanFactory, "Required property 'beanFactory' has not been set.");
    }

    // initialize bean only when dealing with singletons and named beans
    if (hasNamedBean) {
        Assert.isTrue(beanFactory.containsBean(targetBeanName), "Cannot locate bean named '" + targetBeanName
                + "' inside the running bean factory.");

        if (beanFactory.isSingleton(targetBeanName)) {
            target = beanFactory.getBean(targetBeanName);
            targetClass = target.getClass();
        }
        else {
            targetClass = beanFactory.getType(targetBeanName);
        }

        // when running inside a container, add the dependency between this bean and the target one
        addBeanFactoryDependency();
    }
    else
        targetClass = target.getClass();

    if (propertiesResolver == null) {
        propertiesResolver = new BeanNameServicePropertiesResolver();
        ((BeanNameServicePropertiesResolver) propertiesResolver).setBundleContext(bundleContext);
    }

    // sanity check
    if (interfaces == null) {
        if (AutoExport.DISABLED.equals(autoExport))
            throw new IllegalArgumentException(
                "No service interface(s) specified and auto-export discovery disabled; change at least one of these properties.");
        interfaces = new Class[0];
    }
    // check visibility type
    else {
        if (!ServiceFactory.class.isAssignableFrom(targetClass)) {
            for (int interfaceIndex = 0; interfaceIndex < interfaces.length; interfaceIndex++) {
                Class intf = interfaces[interfaceIndex];
                Assert.isAssignable(intf, targetClass,
                    "Exported service object does not implement the given interface: ");
            }
        }
    }

    boolean shouldRegisterAtStartup;
    synchronized (lock) {
        shouldRegisterAtStartup = registerAtStartup;
    }

    if (shouldRegisterAtStartup)
        registerService();
}
项目:musicTreePrograms    文件:MyBundleContext.java   
@Override
public <S> ServiceRegistration<S> registerService(Class<S> clazz, ServiceFactory<S> factory,
    Dictionary<String, ?> properties) {
  return null;
}
项目:musicTreePrograms    文件:MyBundleContext.java   
@Override
public <S> ServiceRegistration<S> registerService(Class<S> clazz, ServiceFactory<S> factory,
    Dictionary<String, ?> properties) {
  return null;
}
项目:gravia    文件:BundleContextAdaptor.java   
ServiceFactoryAdaptor(ServiceFactory<S> delegate) {
    IllegalArgumentAssertion.assertNotNull(delegate, "delegate");
    this.delegate = delegate;
}
项目:bartleby    文件:Activator.java   
/**
 *
 * Implements <code>BundleActivator.start()</code> to register a
 * LogServiceFactory.
 *
 * @param bundleContext the framework context for the bundle
 * @throws Exception
 */
public void start(BundleContext bundleContext) throws Exception {

    Properties props = new Properties();
    props.put("description", "An SLF4J LogService implementation.");
    ServiceFactory factory = new LogServiceFactory();
    bundleContext.registerService(LogService.class.getName(), factory, props);
}