1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugin.surefire.log.api;
20
21
22
23
24
25
26
27
28 public final class ConsoleLoggerDecorator implements ConsoleLogger {
29 private final Object logger;
30
31 public ConsoleLoggerDecorator(Object logger) {
32 if (logger == null) {
33 throw new NullPointerException("logger argument is null in " + ConsoleLoggerDecorator.class);
34 }
35 this.logger = logger;
36 }
37
38 @Override
39 public boolean isDebugEnabled() {
40 return invokeReturnedBoolean("isDebugEnabled");
41 }
42
43 @Override
44 public void debug(String message) {
45 invokeWithMessage(message, "debug");
46 }
47
48 @Override
49 public boolean isInfoEnabled() {
50 return invokeReturnedBoolean("isInfoEnabled");
51 }
52
53 @Override
54 public void info(String message) {
55 invokeWithMessage(message, "info");
56 }
57
58 @Override
59 public boolean isWarnEnabled() {
60 return invokeReturnedBoolean("isWarnEnabled");
61 }
62
63 @Override
64 public void warning(String message) {
65 invokeWithMessage(message, "warning");
66 }
67
68 @Override
69 public boolean isErrorEnabled() {
70 return invokeReturnedBoolean("isErrorEnabled");
71 }
72
73 @Override
74 public void error(String message) {
75 invokeWithMessage(message, "error");
76 }
77
78 @Override
79 public void error(String message, Throwable t) {
80 try {
81 logger.getClass().getMethod("error", String.class, Throwable.class).invoke(logger, message, t);
82 } catch (Exception e) {
83 throw new IllegalStateException(e.getLocalizedMessage(), e);
84 }
85 }
86
87 @Override
88 public void error(Throwable t) {
89 try {
90 logger.getClass().getMethod("error", Throwable.class).invoke(logger, t);
91 } catch (Exception e) {
92 throw new IllegalStateException(e.getLocalizedMessage(), e);
93 }
94 }
95
96 private boolean invokeReturnedBoolean(String isErrorEnabled) {
97 try {
98 return (Boolean) logger.getClass().getMethod(isErrorEnabled).invoke(logger);
99 } catch (Exception e) {
100 throw new IllegalStateException(e.getLocalizedMessage(), e);
101 }
102 }
103
104 private void invokeWithMessage(String message, String error) {
105 try {
106 logger.getClass().getMethod(error, String.class).invoke(logger, message);
107 } catch (Exception e) {
108 throw new IllegalStateException(e.getLocalizedMessage(), e);
109 }
110 }
111 }