You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2022/10/31 00:53:17 UTC

[logging-log4j2] 09/13: Add more downcast checks in LoggerContext

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

mattsicker pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 17485c10e646e834313953e0c308c0cac932e665
Author: Matt Sicker <ma...@apache.org>
AuthorDate: Sun Oct 30 18:31:01 2022 -0500

    Add more downcast checks in LoggerContext
    
    This provides a slightly more useful error in contexts where the LoggerContextFactory doesn't seem to be set up right.
    
    Signed-off-by: Matt Sicker <ma...@apache.org>
---
 .../java/org/apache/logging/log4j/core/LoggerContext.java   | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
index ef93e4d08c..af67daffbc 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
@@ -202,6 +202,13 @@ public class LoggerContext extends AbstractLifeCycle
         return listeners;
     }
 
+    private static LoggerContext downcast(final org.apache.logging.log4j.spi.LoggerContext context) {
+        if (context instanceof LoggerContext) {
+            return (LoggerContext) context;
+        }
+        throw new IllegalStateException("Expected org.apache.logging.log4j.core.LoggerContext but got " + context.getClass());
+    }
+
     /**
      * Returns the current LoggerContext.
      * <p>
@@ -221,7 +228,7 @@ public class LoggerContext extends AbstractLifeCycle
      * @see LogManager#getContext()
      */
     public static LoggerContext getContext() {
-        return (LoggerContext) LogManager.getContext();
+        return downcast(LogManager.getContext());
     }
 
     /**
@@ -242,7 +249,7 @@ public class LoggerContext extends AbstractLifeCycle
      * @see LogManager#getContext(boolean)
      */
     public static LoggerContext getContext(final boolean currentContext) {
-        return (LoggerContext) LogManager.getContext(currentContext);
+        return downcast(LogManager.getContext(currentContext));
     }
 
     /**
@@ -267,7 +274,7 @@ public class LoggerContext extends AbstractLifeCycle
      */
     public static LoggerContext getContext(final ClassLoader loader, final boolean currentContext,
             final URI configLocation) {
-        return (LoggerContext) LogManager.getContext(loader, currentContext, configLocation);
+        return downcast(LogManager.getContext(loader, currentContext, configLocation));
     }
 
     @Override