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(
035 "net.htmlparser.jericho.LoggerFactory");
036
037 Method method = ReflectionUtil.getDeclaredMethod(
038 clazz, "getDefaultLoggerProvider");
039
040 LoggerProvider loggerProvider = (LoggerProvider)method.invoke(null);
041
042 CachedLoggerProvider cachedLoggerProvider = new CachedLoggerProvider(
043 loggerProvider);
044
045 Config.LoggerProvider = cachedLoggerProvider;
046 }
047
048 public CachedLoggerProvider(LoggerProvider loggerProvider) {
049 _loggerProvider = loggerProvider;
050 }
051
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 }