Blame SOURCES/0004-Invoke-logback-via-reflection.patch

cd807c
From ee59ac079ca7c945c4284fc078526ff3faeadfa1 Mon Sep 17 00:00:00 2001
cd807c
From: Michael Simacek <msimacek@redhat.com>
cd807c
Date: Tue, 6 Jun 2017 13:47:43 +0200
cd807c
Subject: [PATCH 4/4] Invoke logback via reflection
cd807c
cd807c
---
cd807c
 .../maven/cli/logging/impl/LogbackConfiguration.java  | 19 ++++++++++++++-----
cd807c
 1 file changed, 14 insertions(+), 5 deletions(-)
cd807c
cd807c
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java
cd807c
index 5d9fab7..ced38cb 100644
cd807c
--- a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java
cd807c
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java
cd807c
@@ -35,22 +35,31 @@ public class LogbackConfiguration
cd807c
     @Override
cd807c
     public void setRootLoggerLevel( Level level )
cd807c
     {
cd807c
-        ch.qos.logback.classic.Level value;
cd807c
+        String value;
cd807c
         switch ( level )
cd807c
         {
cd807c
             case DEBUG:
cd807c
-                value = ch.qos.logback.classic.Level.DEBUG;
cd807c
+                value = "DEBUG";
cd807c
                 break;
cd807c
 
cd807c
             case INFO:
cd807c
-                value = ch.qos.logback.classic.Level.INFO;
cd807c
+                value = "INFO";
cd807c
                 break;
cd807c
 
cd807c
             default:
cd807c
-                value = ch.qos.logback.classic.Level.ERROR;
cd807c
+                value = "ERROR";
cd807c
                 break;
cd807c
         }
cd807c
-        ( (ch.qos.logback.classic.Logger) LoggerFactory.getLogger( Logger.ROOT_LOGGER_NAME ) ).setLevel( value );
cd807c
+        Logger logger = LoggerFactory.getLogger( Logger.ROOT_LOGGER_NAME );
cd807c
+        try {
cd807c
+            Class levelClass = Class.forName("ch.qos.logback.classic.Level");
cd807c
+            Object logbackLevel = levelClass.getField(value).get(null);
cd807c
+            Class loggerClass = Class.forName("ch.qos.logback.classic.Logger");
cd807c
+            loggerClass.getMethod("setLevel", new Class[] {levelClass})
cd807c
+                .invoke(logger, new Object[] {logbackLevel});
cd807c
+        } catch (Exception e) {
cd807c
+            throw new RuntimeException("Failed to initialize logback configuration", e);
cd807c
+        }
cd807c
     }
cd807c
 
cd807c
     @Override
cd807c
-- 
cd807c
2.9.4
cd807c