001
014
015 package com.liferay.portal.jericho;
016
017 import com.liferay.portal.kernel.util.ReflectionUtil;
018
019 import java.lang.reflect.Method;
020
021 import java.util.Map;
022 import java.util.concurrent.ConcurrentHashMap;
023
024 import net.htmlparser.jericho.Config;
025 import net.htmlparser.jericho.Logger;
026 import net.htmlparser.jericho.LoggerProvider;
027
028
031 public class CachedLoggerProvider implements LoggerProvider {
032
033 public static void install() throws Exception {
034 Class<?> clazz = Class.forName("net.htmlparser.jericho.LoggerFactory");
035
036 Method method = ReflectionUtil.getDeclaredMethod(
037 clazz, "getDefaultLoggerProvider");
038
039 LoggerProvider loggerProvider = (LoggerProvider)method.invoke(null);
040
041 CachedLoggerProvider cachedLoggerProvider = new CachedLoggerProvider(
042 loggerProvider);
043
044 Config.LoggerProvider = cachedLoggerProvider;
045 }
046
047 public CachedLoggerProvider(LoggerProvider loggerProvider) {
048 _loggerProvider = loggerProvider;
049 }
050
051 @Override
052 public Logger getLogger(String name) {
053 Logger logger = _loggers.get(name);
054
055 if (logger == null) {
056 logger = _loggerProvider.getLogger(name);
057
058 _loggers.put(name, logger);
059 }
060
061 return logger;
062 }
063
064 private LoggerProvider _loggerProvider;
065 private Map<String, Logger> _loggers =
066 new ConcurrentHashMap<String, Logger>();
067
068 }