1 package org
.argeo
.init
.osgi
;
4 import java
.util
.Optional
;
5 import java
.util
.ServiceLoader
;
7 import org
.argeo
.init
.RuntimeContext
;
8 import org
.osgi
.framework
.BundleContext
;
9 import org
.osgi
.framework
.BundleException
;
10 import org
.osgi
.framework
.launch
.Framework
;
11 import org
.osgi
.framework
.launch
.FrameworkFactory
;
13 public class OsgiRuntimeContext
implements RuntimeContext
{
14 private Map
<String
, String
> config
;
15 private Framework framework
;
16 private OsgiBoot osgiBoot
;
18 public OsgiRuntimeContext(Map
<String
, String
> config
) {
24 ServiceLoader
<FrameworkFactory
> sl
= ServiceLoader
.load(FrameworkFactory
.class);
25 Optional
<FrameworkFactory
> opt
= sl
.findFirst();
27 throw new IllegalStateException("Cannot find OSGi framework");
28 framework
= opt
.get().newFramework(config
);
31 BundleContext bundleContext
= framework
.getBundleContext();
32 osgiBoot
= new OsgiBoot(bundleContext
);
34 } catch (BundleException e
) {
35 throw new IllegalStateException("Cannot start OSGi framework", e
);
40 public void waitForStop(long timeout
) throws InterruptedException
{
41 if (framework
== null)
42 throw new IllegalStateException("Framework is not initialised");
43 framework
.waitForStop(timeout
);
47 public void close() throws Exception
{
48 if (framework
!= null)