From 5161a1d334506225a191514b4e6ba03ac4e038ad Mon Sep 17 00:00:00 2001 From: gjoranv Date: Tue, 5 Nov 2019 10:54:05 +0100 Subject: Reapply "Gjoranv/hidden bundles logging" This reverts commit 962ab3348d8ab538bc3a37d085e9be134779763a. --- .../com/yahoo/jdisc/core/BundleCollisionHook.java | 25 ++++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'jdisc_core/src/main') 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 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 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 { -- cgit v1.2.3