use of org.osgi.framework.InvalidSyntaxException in project aries by apache.
the class BundleRepositoryManagerImpl method getAllBundleRepositories.
public Collection<BundleRepository> getAllBundleRepositories() {
LOGGER.debug(LOG_ENTRY, "getAllBundleRepositories");
ServiceCollection<BundleRepository> providers = new ArrayServiceList<BundleRepository>(bc);
try {
ServiceReference[] refs = bc.getServiceReferences(BundleRepository.class.getName(), null);
if (refs != null) {
for (ServiceReference ref : refs) {
providers.addService(ref);
}
}
} catch (InvalidSyntaxException e) {
LOGGER.error(LOG_EXCEPTION, e);
}
LOGGER.debug(LOG_EXIT, "getAllBundleRepositories");
return providers;
}
use of org.osgi.framework.InvalidSyntaxException in project aries by apache.
the class AriesRepositoryGenerator method getOsgiService.
private Object getOsgiService(BundleContext bc, String className) {
ServiceTracker tracker = null;
try {
String flt = "(" + Constants.OBJECTCLASS + "=" + className + ")";
Filter osgiFilter = FrameworkUtil.createFilter(flt);
tracker = new ServiceTracker(bc, osgiFilter, null);
tracker.open();
// add tracker to the list of trackers we close at tear down
srs.add(tracker);
Object x = tracker.waitForService(DEFAULT_TIMEOUT);
if (x == null) {
throw new RuntimeException("Gave up waiting for service " + flt);
}
return x;
} catch (InvalidSyntaxException e) {
throw new IllegalArgumentException("Invalid filter", e);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
use of org.osgi.framework.InvalidSyntaxException in project aries by apache.
the class AbstractServiceReferenceRecipe method start.
public void start(SatisfactionListener listener) {
if (listener == null)
throw new NullPointerException("satisfactionListener is null");
if (started.compareAndSet(false, true)) {
try {
satisfactionListener = listener;
satisfied.set(optional);
// though this may not be sufficient because we don't control ordering of those events
synchronized (tracked) {
getBundleContextForServiceLookup().addServiceListener(this, getOsgiFilter());
ServiceReference[] references = getBundleContextForServiceLookup().getServiceReferences((String) null, getOsgiFilter());
tracked.setInitial(references != null ? references : new ServiceReference[0]);
}
tracked.trackInitial();
satisfied.set(optional || !tracked.isEmpty());
retrack();
LOGGER.debug("Found initial references {} for OSGi service {}", getServiceReferences(), getOsgiFilter());
} catch (InvalidSyntaxException e) {
throw new ComponentDefinitionException(e);
}
}
}
use of org.osgi.framework.InvalidSyntaxException 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.framework.InvalidSyntaxException in project karaf by apache.
the class Dump method dump.
public static void dump(BundleContext bundleContext, DumpDestination destination, boolean noThreadDump, boolean noHeapDump) {
List<DumpProvider> providers = new ArrayList<>();
providers.add(new EnvironmentDumpProvider(bundleContext));
providers.add(new MemoryDumpProvider());
if (!noThreadDump)
providers.add(new ThreadDumpProvider());
if (!noHeapDump)
providers.add(new HeapDumpProvider());
providers.add(new BundleDumpProvider(bundleContext));
for (DumpProvider provider : providers) {
try {
provider.createDump(destination);
} catch (Throwable t) {
// Ignore
}
}
try {
for (ServiceReference<DumpProvider> ref : bundleContext.getServiceReferences(DumpProvider.class, null)) {
DumpProvider provider = bundleContext.getService(ref);
try {
provider.createDump(destination);
} catch (Throwable t) {
// Ignore
} finally {
bundleContext.ungetService(ref);
}
}
} catch (InvalidSyntaxException e) {
// Ignore
}
try {
destination.save();
} catch (Throwable t) {
// Ignore
}
}
Aggregations