import java.lang.System.Logger.Level;
import java.util.Objects;
+import org.argeo.init.Service;
import org.argeo.init.logging.ThinLoggerFinder;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
// must be called first
ThinLoggerFinder.lazyInit();
}
- private Logger logger = System.getLogger(Activator.class.getName());
+ private final static Logger logger = System.getLogger(Activator.class.getName());
private Long checkpoint = null;
+ private boolean argeoInit = false;
/** Not null if we created it ourselves. */
private OsgiRuntimeContext runtimeContext;
public void start(final BundleContext bundleContext) throws Exception {
- if (runtimeContext == null) {
- runtimeContext = new OsgiRuntimeContext(bundleContext);
- }
- logger.log(Level.DEBUG, () -> "Argeo init via OSGi activator");
-
- // admin thread
+ // The OSGi runtime was created by us, and therefore already initialized
+ argeoInit = Boolean.parseBoolean(bundleContext.getProperty(Service.PROP_ARGEO_INIT_MAIN));
+ if (!argeoInit) {
+ if (runtimeContext == null) {
+ runtimeContext = new OsgiRuntimeContext(bundleContext);
+ logger.log(Level.DEBUG, () -> "Argeo init via OSGi activator");
+ }
+
+ // admin thread
// Thread adminThread = new AdminThread(bundleContext);
// adminThread.start();
- // bootstrap
+ // bootstrap
// OsgiBoot osgiBoot = new OsgiBoot(bundleContext);
- if (checkpoint == null) {
+ if (checkpoint == null) {
// osgiBoot.bootstrap();
- checkpoint = System.currentTimeMillis();
- } else {
- runtimeContext.update();
- checkpoint = System.currentTimeMillis();
+ checkpoint = System.currentTimeMillis();
+ } else {
+ runtimeContext.update();
+ checkpoint = System.currentTimeMillis();
+ }
}
}
public void stop(BundleContext context) throws Exception {
- Objects.nonNull(runtimeContext);
- runtimeContext.stop(context);
+ if (!argeoInit) {
+ Objects.nonNull(runtimeContext);
+ runtimeContext.stop(context);
+ runtimeContext = null;
+ }
}
+
}