ARIES-1958 let implicit extensions work even if no explicit extensions are required
Signed-off-by: Raymond Augé <rotty3000@apache.org>
diff --git a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ExtensionPhase.java b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ExtensionPhase.java
index bb96c21..68028ad 100644
--- a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ExtensionPhase.java
+++ b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ExtensionPhase.java
@@ -53,17 +53,8 @@
@Override
public boolean close() {
try (Syncro open = syncro.open()) {
- if (!extensionTemplates().isEmpty()) {
- if (_extensionTracker != null) {
- _extensionTracker.close();
-
- _extensionTracker = null;
- }
-
- return true;
- }
- else {
- return next.map(
+ if (extensionTemplates().isEmpty()) {
+ next.map(
next -> {
submit(next.closeOp(), next::close).onFailure(
f -> {
@@ -77,6 +68,14 @@
}
).orElse(true);
}
+
+ if (_extensionTracker != null) {
+ _extensionTracker.close();
+
+ _extensionTracker = null;
+ }
+
+ return true;
}
}
@@ -93,29 +92,28 @@
return false;
}
- if (!extensionTemplates().isEmpty()) {
- _extensionTracker = new ServiceTracker<>(
- containerState.bundleContext(), createExtensionFilter(), new ExtensionPhaseCustomizer());
+ _extensionTracker = new ServiceTracker<>(
+ containerState.bundleContext(), createExtensionFilter(), new ExtensionPhaseCustomizer());
- _extensionTracker.open();
+ _extensionTracker.open();
- return true;
+ if (extensionTemplates().isEmpty()) {
+ next.map(
+ next -> {
+ submit(next.openOp(), next::open).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in extension OPEN on {}", bundle(), f));
+
+ error(f);
+ }
+ );
+
+ return true;
+ }
+ ).orElse(true);
}
- else {
- return next.map(
- next -> {
- submit(next.openOp(), next::open).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in extension OPEN on {}", bundle(), f));
- error(f);
- }
- );
-
- return true;
- }
- ).orElse(true);
- }
+ return true;
}
}