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