1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.internal.impl.slf4j;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import org.eclipse.aether.spi.locator.Service;
26 import org.eclipse.aether.spi.locator.ServiceLocator;
27 import org.eclipse.aether.spi.log.Logger;
28 import org.eclipse.aether.spi.log.LoggerFactory;
29 import org.eclipse.sisu.Nullable;
30 import org.slf4j.ILoggerFactory;
31 import org.slf4j.spi.LocationAwareLogger;
32
33
34
35
36
37
38 @Singleton
39 @Named("slf4j")
40 @Deprecated
41 public class Slf4jLoggerFactory implements LoggerFactory, Service {
42
43 private static final boolean AVAILABLE;
44
45 static {
46 boolean available;
47 try {
48 Slf4jLoggerFactory.class.getClassLoader().loadClass("org.slf4j.ILoggerFactory");
49 available = true;
50 } catch (Exception | LinkageError e) {
51 available = false;
52 }
53 AVAILABLE = available;
54 }
55
56 public static boolean isSlf4jAvailable() {
57 return AVAILABLE;
58 }
59
60 private ILoggerFactory factory;
61
62
63
64
65 public Slf4jLoggerFactory() {
66
67 }
68
69 @Inject
70 Slf4jLoggerFactory(@Nullable ILoggerFactory factory) {
71 setLoggerFactory(factory);
72 }
73
74 public void initService(ServiceLocator locator) {
75 setLoggerFactory(locator.getService(ILoggerFactory.class));
76 }
77
78 public Slf4jLoggerFactory setLoggerFactory(ILoggerFactory factory) {
79 this.factory = factory;
80 return this;
81 }
82
83 public Logger getLogger(String name) {
84 org.slf4j.Logger logger = getFactory().getLogger(name);
85 if (logger instanceof LocationAwareLogger) {
86 return new Slf4jLoggerEx((LocationAwareLogger) logger);
87 }
88 return new Slf4jLogger(logger);
89 }
90
91 private ILoggerFactory getFactory() {
92 if (factory == null) {
93 factory = org.slf4j.LoggerFactory.getILoggerFactory();
94 }
95 return factory;
96 }
97
98 private static final class Slf4jLogger implements Logger {
99
100 private final org.slf4j.Logger logger;
101
102 Slf4jLogger(org.slf4j.Logger logger) {
103 this.logger = logger;
104 }
105
106 public boolean isDebugEnabled() {
107 return logger.isDebugEnabled();
108 }
109
110 public void debug(String msg) {
111 logger.debug(msg);
112 }
113
114 public void debug(String msg, Throwable error) {
115 logger.debug(msg, error);
116 }
117
118 public boolean isWarnEnabled() {
119 return logger.isWarnEnabled();
120 }
121
122 public void warn(String msg) {
123 logger.warn(msg);
124 }
125
126 public void warn(String msg, Throwable error) {
127 logger.warn(msg, error);
128 }
129 }
130
131 private static final class Slf4jLoggerEx implements Logger {
132
133 private static final String FQCN = Slf4jLoggerEx.class.getName();
134
135 private final LocationAwareLogger logger;
136
137 Slf4jLoggerEx(LocationAwareLogger logger) {
138 this.logger = logger;
139 }
140
141 public boolean isDebugEnabled() {
142 return logger.isDebugEnabled();
143 }
144
145 public void debug(String msg) {
146 logger.log(null, FQCN, LocationAwareLogger.DEBUG_INT, msg, null, null);
147 }
148
149 public void debug(String msg, Throwable error) {
150 logger.log(null, FQCN, LocationAwareLogger.DEBUG_INT, msg, null, error);
151 }
152
153 public boolean isWarnEnabled() {
154 return logger.isWarnEnabled();
155 }
156
157 public void warn(String msg) {
158 logger.log(null, FQCN, LocationAwareLogger.WARN_INT, msg, null, null);
159 }
160
161 public void warn(String msg, Throwable error) {
162 logger.log(null, FQCN, LocationAwareLogger.WARN_INT, msg, null, error);
163 }
164 }
165 }