Register the StartupService once the framework is started
diff --git a/startupmanager/src/main/java/org/apache/sling/launchpad/startupmanager/StartupListenerTracker.java b/startupmanager/src/main/java/org/apache/sling/launchpad/startupmanager/StartupListenerTracker.java
index 532acf6..c7d55de 100644
--- a/startupmanager/src/main/java/org/apache/sling/launchpad/startupmanager/StartupListenerTracker.java
+++ b/startupmanager/src/main/java/org/apache/sling/launchpad/startupmanager/StartupListenerTracker.java
@@ -19,6 +19,7 @@
import org.apache.sling.launchpad.api.StartupHandler;
import org.apache.sling.launchpad.api.StartupListener;
import org.apache.sling.launchpad.api.StartupMode;
+import org.apache.sling.launchpad.api.StartupService;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleEvent;
@@ -31,6 +32,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Hashtable;
+
public class StartupListenerTracker implements FrameworkListener, BundleListener {
private static final Logger log = LoggerFactory.getLogger(StartupListenerTracker.class);
@@ -95,6 +98,14 @@
for (StartupListener listener : tracker.getServices(new StartupListener[0])) {
listener.startupFinished(startupMode);
}
+
+ StartupService startupService = new StartupService() {
+ @Override
+ public StartupMode getStartupMode() {
+ return startupMode;
+ }
+ };
+ bundleContext.registerService(StartupService.class, startupService, new Hashtable<String, Object>());
}
}