You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by tj...@apache.org on 2020/11/20 20:24:32 UTC

[felix-dev] 02/02: FELIX-6361 - Avoid IllegalArgumentException for calls to getLogger

This is an automated email from the ASF dual-hosted git repository.

tjwatson pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git

commit 462bfe2b3a398b35ac495473c63e348003545248
Author: Thomas Watson <tj...@us.ibm.com>
AuthorDate: Fri Nov 20 09:15:23 2020 -0600

    FELIX-6361 - Avoid IllegalArgumentException for calls to getLogger
---
 .../org/apache/felix/scr/impl/logger/LogManager.java   | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/scr/src/main/java/org/apache/felix/scr/impl/logger/LogManager.java b/scr/src/main/java/org/apache/felix/scr/impl/logger/LogManager.java
index a5ccd34..027f4a6 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/logger/LogManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/logger/LogManager.java
@@ -109,10 +109,24 @@ class LogManager extends ServiceTracker<Object, Object> implements BundleListene
         synchronized Object getLogger(LoggerFacade facade, Bundle bundle, String name)
         {
             if (factory == null)
+            {
                 return facade.logger = null;
+            }
             else
-                return facade.logger = ((LoggerFactory) factory).getLogger(bundle, name,
-                    Logger.class);
+            {
+                try
+                {
+                    return facade.logger = ((LoggerFactory) factory).getLogger(bundle,
+                        name, Logger.class);
+                }
+                catch (IllegalArgumentException e)
+                {
+                    // The bundle probably got uninstalled or somehow unresolved,
+                    // fallback to the SCR bundle's logger
+                    return ((LoggerFactory) factory).getLogger(context.getBundle(), name,
+                        Logger.class);
+                }
+            }
         }
 
         synchronized LogDomain remove(Bundle bundle)