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