import java.util.SortedMap;
import java.util.StringTokenizer;
import java.util.TreeMap;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ForkJoinPool;
import org.argeo.init.a2.A2Source;
import org.argeo.init.a2.ProvisioningManager;
queryPart = source.substring(qmIndex);
source = source.substring(0, qmIndex);
}
+ // TODO centralise in A" package?
if (source.trim().equals(A2Source.DEFAULT_A2_URI)) {
if (Files.exists(homePath))
provisioningManager.registerSource(
A2Source.SCHEME_A2 + "://" + homePath.toString() + "/.local/share/a2" + queryPart);
provisioningManager.registerSource(A2Source.SCHEME_A2 + ":///usr/local/share/a2" + queryPart);
+ provisioningManager.registerSource(A2Source.SCHEME_A2 + ":///usr/local/lib/a2" + queryPart);
provisioningManager.registerSource(A2Source.SCHEME_A2 + ":///usr/share/a2" + queryPart);
+ provisioningManager.registerSource(A2Source.SCHEME_A2 + ":///usr/lib/a2" + queryPart);
} else if (source.trim().equals(A2Source.DEFAULT_A2_REFERENCE_URI)) {
if (Files.exists(homePath))
provisioningManager.registerSource(A2Source.SCHEME_A2_REFERENCE + "://" + homePath.toString()
+ "/.local/share/a2" + queryPart);
provisioningManager
.registerSource(A2Source.SCHEME_A2_REFERENCE + ":///usr/local/share/a2" + queryPart);
+ provisioningManager
+ .registerSource(A2Source.SCHEME_A2_REFERENCE + ":///usr/local/lib/a2" + queryPart);
provisioningManager.registerSource(A2Source.SCHEME_A2_REFERENCE + ":///usr/share/a2" + queryPart);
+ provisioningManager.registerSource(A2Source.SCHEME_A2_REFERENCE + ":///usr/lib/a2" + queryPart);
} else {
provisioningManager.registerSource(source + queryPart);
}
if (OsgiBootUtils.isDebug())
OsgiBootUtils.debug("About to set framework start level to " + activeStartLevel + " ...");
- // Start the framework level after level
- stages: for (int stage = initialStartLevel; stage <= activeStartLevel; stage++) {
- if (OsgiBootUtils.isDebug())
- OsgiBootUtils.debug("Starting stage " + stage + "...");
- final int nextStage = stage;
- final CompletableFuture<FrameworkEvent> stageCompleted = new CompletableFuture<>();
- ForkJoinPool.commonPool().execute(() -> {
- frameworkStartLevel.setStartLevel(nextStage, (FrameworkEvent event) -> {
- stageCompleted.complete(event);
- });
- });
- FrameworkEvent event;
- try {
- event = stageCompleted.get();
- } catch (InterruptedException | ExecutionException e) {
- throw new IllegalStateException("Cannot continue start", e);
- }
- if (event.getThrowable() != null) {
- OsgiBootUtils.error("Stage " + nextStage + " failed, aborting start.", event.getThrowable());
- break stages;
+ frameworkStartLevel.setStartLevel(activeStartLevel, (FrameworkEvent event) -> {
+ if (event.getType() == FrameworkEvent.ERROR) {
+ OsgiBootUtils.error("Start sequence failed", event.getThrowable());
+ } else {
+ if (OsgiBootUtils.isDebug())
+ OsgiBootUtils.debug("Framework started at level " + frameworkStartLevel.getStartLevel());
}
- }
+ });
+
+// // Start the framework level after level
+// int currentStartLevel = frameworkStartLevel.getStartLevel();
+// stages: for (int stage = currentStartLevel + 1; stage <= activeStartLevel; stage++) {
+// if (OsgiBootUtils.isDebug())
+// OsgiBootUtils.debug("Starting stage " + stage + "...");
+// final int nextStage = stage;
+// final CompletableFuture<FrameworkEvent> stageCompleted = new CompletableFuture<>();
+// frameworkStartLevel.setStartLevel(nextStage, (FrameworkEvent event) -> {
+// stageCompleted.complete(event);
+// });
+// FrameworkEvent event;
+// try {
+// event = stageCompleted.get();
+// } catch (InterruptedException | ExecutionException e) {
+// throw new IllegalStateException("Cannot continue start", e);
+// }
+// if (event.getThrowable() != null) {
+// OsgiBootUtils.error("Stage " + nextStage + " failed, aborting start.", event.getThrowable());
+// break stages;
+// }
+// }
}
private static void computeStartLevels(SortedMap<Integer, List<String>> startLevels, Map<String, String> properties,