- // Start the framework asynchronously
- ForkJoinPool.commonPool().execute(() -> {
- frameworkStartLevel.setStartLevel(activeStartLevel, (FrameworkEvent event) -> {
- if (OsgiBootUtils.isDebug())
- OsgiBootUtils.debug("Framework event: " + event);
- int initialStartLevel = frameworkStartLevel.getInitialBundleStartLevel();
- int startLevel = frameworkStartLevel.getStartLevel();
- if (OsgiBootUtils.isDebug())
- OsgiBootUtils
- .debug("Framework start level: " + startLevel + " (initial: " + initialStartLevel + ")");
+ // Start the framework level after level
+ stages: for (int stage = initialStartLevel; stage <= activeStartLevel; stage++) {
+ OsgiBootUtils.info("Starting stage " + stage + "...");
+ final int nextStage = stage;
+ final CompletableFuture<FrameworkEvent> stageCompleted = new CompletableFuture<>();
+ ForkJoinPool.commonPool().execute(() -> {
+ frameworkStartLevel.setStartLevel(nextStage, (FrameworkEvent event) -> {
+ stageCompleted.complete(event);
+ });