Search in sources :

Example 11 with FrameworkListener

use of org.osgi.framework.FrameworkListener in project bnd by bndtools.

the class EmbeddedActivator method refresh.

/*
	 * Refresh the stopped bundles
	 */
void refresh(BundleContext context, List<Bundle> toStop) throws InterruptedException {
    Bundle bundle = context.getBundle(0);
    FrameworkWiring framework = bundle.adapt(FrameworkWiring.class);
    final Semaphore s = new Semaphore(0);
    framework.refreshBundles(toStop, new FrameworkListener() {

        @Override
        public void frameworkEvent(FrameworkEvent event) {
            s.release();
        }
    });
    s.tryAcquire(10, TimeUnit.SECONDS);
}
Also used : FrameworkEvent(org.osgi.framework.FrameworkEvent) Bundle(org.osgi.framework.Bundle) FrameworkWiring(org.osgi.framework.wiring.FrameworkWiring) Semaphore(java.util.concurrent.Semaphore) FrameworkListener(org.osgi.framework.FrameworkListener)

Example 12 with FrameworkListener

use of org.osgi.framework.FrameworkListener in project bnd by bndtools.

the class AgentDispatcher method createFramework.

/**
	 * Create a new framework. This is reflectively called from the Envoy
	 */
public static Descriptor createFramework(String name, Map<String, Object> configuration, final File storage, final File shacache) throws Exception {
    //
    // Use the service loader for loading a framework
    //
    ClassLoader loader = AgentServer.class.getClassLoader();
    ServiceLoader<FrameworkFactory> sl = ServiceLoader.load(FrameworkFactory.class, loader);
    FrameworkFactory ff = null;
    for (FrameworkFactory fff : sl) {
        ff = fff;
    // break;
    }
    if (ff == null)
        throw new IllegalArgumentException("No framework on runpath");
    //
    // Create the framework
    //
    @SuppressWarnings({ "unchecked", "rawtypes" }) Framework framework = ff.newFramework((Map) configuration);
    framework.init();
    framework.getBundleContext().addFrameworkListener(new FrameworkListener() {

        @Override
        public void frameworkEvent(FrameworkEvent event) {
        // System.err.println("FW Event " + event);
        }
    });
    framework.start();
    Descriptor d = new Descriptor();
    //
    // create a new descriptor. This is returned
    // to the envoy side as an Object and we will
    // get this back later in toAgent. The envoy
    // maintains a list of name -> framework
    //
    d.framework = framework;
    d.shaCache = shacache;
    d.storage = storage;
    d.configuration = configuration;
    d.name = name;
    String embedded = (String) configuration.get("biz.aQute.remote.embedded");
    if (embedded != null && !(embedded = embedded.trim()).isEmpty()) {
        String[] activators = embedded.trim().split("\\s*,\\s*");
        for (String activator : activators) try {
            Class<?> activatorClass = loader.loadClass(activator);
            if (BundleActivator.class.isAssignableFrom(activatorClass)) {
                // TODO check immediate
                BundleActivator ba = (BundleActivator) activatorClass.getConstructor().newInstance();
                ba.start(framework.getBundleContext());
                d.activators.add(ba);
            }
        } catch (Exception e) {
            // TODO
            System.out.println("IGNORED");
            e.printStackTrace();
        }
    }
    return d;
}
Also used : FrameworkEvent(org.osgi.framework.FrameworkEvent) BundleActivator(org.osgi.framework.BundleActivator) IOException(java.io.IOException) BundleException(org.osgi.framework.BundleException) FrameworkFactory(org.osgi.framework.launch.FrameworkFactory) FrameworkListener(org.osgi.framework.FrameworkListener) Framework(org.osgi.framework.launch.Framework)

Aggregations

FrameworkListener (org.osgi.framework.FrameworkListener)12 FrameworkEvent (org.osgi.framework.FrameworkEvent)11 IOException (java.io.IOException)5 Bundle (org.osgi.framework.Bundle)5 FrameworkWiring (org.osgi.framework.wiring.FrameworkWiring)5 CountDownLatch (java.util.concurrent.CountDownLatch)4 BundleContext (org.osgi.framework.BundleContext)4 BundleException (org.osgi.framework.BundleException)4 Semaphore (java.util.concurrent.Semaphore)3 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)3 File (java.io.File)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 ServiceReference (org.osgi.framework.ServiceReference)2 Framework (org.osgi.framework.launch.Framework)2 FrameworkFactory (org.osgi.framework.launch.FrameworkFactory)2 MiniFramework (aQute.launcher.minifw.MiniFramework)1 FileInputStream (java.io.FileInputStream)1 InputStream (java.io.InputStream)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1