use of org.osgi.service.cm.ManagedServiceFactory in project aries by apache.
the class DSLTest method testConfigurationsAndRegistrations.
@Test
public void testConfigurationsAndRegistrations() throws InvalidSyntaxException, IOException, InterruptedException {
ServiceReference<ConfigurationAdmin> serviceReference = bundleContext.getServiceReference(ConfigurationAdmin.class);
ConfigurationAdmin configurationAdmin = bundleContext.getService(serviceReference);
/* For each factory configuration register a service with the property
key set to the value of the property key that comes with the
configuration */
OSGi<ServiceRegistration<Service>> program = configurations("test.configuration").map(d -> d.get("key")).flatMap(key -> register(Service.class, new Service(), new HashMap<String, Object>() {
{
put("key", key);
}
}));
OSGiResult<ServiceRegistration<Service>> result = program.run(bundleContext);
assertEquals(0, bundleContext.getServiceReferences(Service.class, "(test.configuration=*)").size());
CountDownLatch addedLatch = new CountDownLatch(3);
ServiceRegistration<?> addedServiceRegistration = bundleContext.registerService(ManagedServiceFactory.class, new ManagedServiceFactory() {
@Override
public String getName() {
return "";
}
@Override
public void updated(String s, Dictionary<String, ?> dictionary) throws ConfigurationException {
addedLatch.countDown();
}
@Override
public void deleted(String s) {
}
}, new Hashtable<String, Object>() {
{
put("service.pid", "test.configuration");
}
});
CountDownLatch deletedLatch = new CountDownLatch(3);
ServiceRegistration<?> deletedServiceRegistration = bundleContext.registerService(ManagedServiceFactory.class, new ManagedServiceFactory() {
@Override
public String getName() {
return "";
}
@Override
public void updated(String s, Dictionary<String, ?> dictionary) throws ConfigurationException {
}
@Override
public void deleted(String s) {
deletedLatch.countDown();
}
}, new Hashtable<String, Object>() {
{
put("service.pid", "test.configuration");
}
});
Configuration configuration = configurationAdmin.createFactoryConfiguration("test.configuration");
configuration.update(new Hashtable<String, Object>() {
{
put("key", "service one");
}
});
Configuration configuration2 = configurationAdmin.createFactoryConfiguration("test.configuration");
configuration2.update(new Hashtable<String, Object>() {
{
put("key", "service two");
}
});
Configuration configuration3 = configurationAdmin.createFactoryConfiguration("test.configuration");
configuration3.update(new Hashtable<String, Object>() {
{
put("key", "service three");
}
});
assertTrue(addedLatch.await(10, TimeUnit.SECONDS));
assertEquals(1, bundleContext.getServiceReferences(Service.class, "(key=service one)").size());
assertEquals(1, bundleContext.getServiceReferences(Service.class, "(key=service two)").size());
assertEquals(1, bundleContext.getServiceReferences(Service.class, "(key=service three)").size());
configuration3.delete();
configuration2.delete();
configuration.delete();
assertTrue(deletedLatch.await(10, TimeUnit.SECONDS));
assertEquals(0, bundleContext.getServiceReferences(Service.class, "(test.configuration=*)").size());
addedServiceRegistration.unregister();
deletedServiceRegistration.unregister();
result.close();
bundleContext.ungetService(serviceReference);
}
use of org.osgi.service.cm.ManagedServiceFactory in project felix by apache.
the class FactoryConfigurationAdapterImplTest method testInvokePlainUpdatedMethodOk.
@Test
public void testInvokePlainUpdatedMethodOk() throws Exception {
Ensure ensure = createEnsure();
PlainService service = new PlainService(ensure);
FactoryConfigurationAdapterImpl cdi = createConfigurationDependency(service);
((ManagedServiceFactory) cdi.m_component.getInstance()).updated(CONF_PID, (Dictionary<String, ?>) createDictionary());
ensure.waitForStep(1, 1000);
((ManagedServiceFactory) cdi.m_component.getInstance()).deleted(CONF_PID);
ensure.waitForStep(2, 1000);
}
use of org.osgi.service.cm.ManagedServiceFactory in project felix by apache.
the class FactoryConfigurationAdapterImplTest method testInvokeFancyUpdatedMethodOk.
@Test
public void testInvokeFancyUpdatedMethodOk() throws Exception {
Ensure ensure = createEnsure();
FancyService service = new FancyService(ensure);
FactoryConfigurationAdapterImpl cdi = createConfigurationDependency(service, MyConfiguration.class);
((ManagedServiceFactory) cdi.m_component.getInstance()).updated(CONF_PID, (Dictionary<String, ?>) createDictionary());
ensure.waitForStep(1, 1000);
((ManagedServiceFactory) cdi.m_component.getInstance()).deleted(CONF_PID);
ensure.waitForStep(2, 1000);
}
use of org.osgi.service.cm.ManagedServiceFactory in project felix by apache.
the class FactoryConfigurationAdapterImplTest method testDoNotInvokeFancyUpdatedMethodWithWrongSignatureOk.
@Test
public void testDoNotInvokeFancyUpdatedMethodWithWrongSignatureOk() throws Exception {
Ensure ensure = createEnsure();
FancyService service = new FancyService(ensure);
FactoryConfigurationAdapterImpl cdi = createConfigurationDependency(service, Map.class);
ensure.step(1);
((ManagedServiceFactory) cdi.m_component.getInstance()).updated(CONF_PID, (Dictionary<String, ?>) createDictionary());
TimeUnit.SECONDS.sleep(1L);
// Our step shouldn't be changed...
ensure.waitForStep(1, 1000);
}
use of org.osgi.service.cm.ManagedServiceFactory in project felix by apache.
the class FactoryConfigurationAdapterImplTest method testInvokeManagedServiceUpdatedMethodOk.
@Test
public void testInvokeManagedServiceUpdatedMethodOk() throws Exception {
Ensure ensure = createEnsure();
AManagedService service = new AManagedService(ensure);
FactoryConfigurationAdapterImpl cdi = createConfigurationDependency(service);
((ManagedServiceFactory) cdi.m_component.getInstance()).updated(CONF_PID, (Dictionary<String, ?>) createDictionary());
ensure.waitForStep(1, 1000);
((ManagedServiceFactory) cdi.m_component.getInstance()).deleted(CONF_PID);
ensure.waitForStep(2, 1000);
}
Aggregations