summaryrefslogtreecommitdiffstats
path: root/jdisc_core
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2019-11-05 10:54:05 +0100
committergjoranv <gv@verizonmedia.com>2019-11-05 10:54:05 +0100
commit5161a1d334506225a191514b4e6ba03ac4e038ad (patch)
treecc6d493b647aa4a5f267724feb56dc6ef1472db0 /jdisc_core
parentd75825d503b8566e66d45b0ef726a1d5834970d7 (diff)
Reapply "Gjoranv/hidden bundles logging"
This reverts commit 962ab3348d8ab538bc3a37d085e9be134779763a.
Diffstat (limited to 'jdisc_core')
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/BundleCollisionHook.java25
1 files changed, 18 insertions, 7 deletions
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/BundleCollisionHook.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/BundleCollisionHook.java
index ae1c81195ce..e2167a5cc96 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/BundleCollisionHook.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/BundleCollisionHook.java
@@ -8,6 +8,7 @@ import org.osgi.framework.Version;
import org.osgi.framework.hooks.bundle.CollisionHook;
import org.osgi.framework.hooks.bundle.EventHook;
import org.osgi.framework.hooks.bundle.FindHook;
+import org.osgi.framework.launch.Framework;
import java.util.Collection;
import java.util.HashMap;
@@ -18,9 +19,10 @@ import java.util.Set;
import java.util.logging.Logger;
/**
- * A bundle {@link CollisionHook} that contains a set of bundles that are allowed to collide with
- * bundles that are about to be installed. In order to clean up when bundles are uninstalled, this
- * is also a bundle {@link EventHook}.
+ * A bundle {@link CollisionHook} that contains a set of bundles that are allowed to collide with bundles
+ * that are about to be installed. This class also implements a {@link FindHook} to provide a consistent
+ * view of bundles such that the two sets of duplicate bundles are invisible to each other.
+ * In order to clean up when bundles are uninstalled, this is also a bundle {@link EventHook}.
*
* Thread safe
*
@@ -86,9 +88,6 @@ public class BundleCollisionHook implements CollisionHook, EventHook, FindHook {
* If the given context represents one of the allowed duplicates, this method filters out all bundles
* that are duplicates of the allowed duplicates. Otherwise this method filters out the allowed duplicates,
* so they are not visible to other bundles.
- *
- * NOTE: This hook method is added for a consistent view of the installed bundles, but is not actively
- * used by jdisc. The OSGi framework does not use FindHooks when calculating bundle wiring.
*/
@Override
public synchronized void find(BundleContext context, Collection<Bundle> bundles) {
@@ -107,7 +106,7 @@ public class BundleCollisionHook implements CollisionHook, EventHook, FindHook {
}
}
}
- log.info("Hiding bundles from bundle '" + context.getBundle() + "': " + bundlesToHide);
+ logHiddenBundles(context, bundlesToHide);
bundles.removeAll(bundlesToHide);
}
@@ -115,6 +114,18 @@ public class BundleCollisionHook implements CollisionHook, EventHook, FindHook {
return ! allowedDuplicates.containsKey(bundle) && allowedDuplicates.containsValue(new BsnVersion(bundle));
}
+ private void logHiddenBundles(BundleContext requestingContext, Set<Bundle> hiddenBundles) {
+ if (hiddenBundles.isEmpty()) {
+ log.fine(() -> "No bundles to hide from bundle " + requestingContext.getBundle());
+ } else {
+ if (requestingContext.getBundle() instanceof Framework) {
+ log.fine(() -> "Requesting bundle is the Framework, so hidden bundles will be visible: " + hiddenBundles);
+ } else {
+ log.info("Hiding bundles from bundle '" + requestingContext.getBundle() + "': " + hiddenBundles);
+ }
+ }
+ }
+
static class BsnVersion {