package org.richfaces.resource.plugin; import java.util.Locale; import org.apache.maven.plugin.logging.Log; import org.richfaces.l10n.BundleLoader; import org.richfaces.l10n.InterpolationException; import org.richfaces.l10n.MessageInterpolator; import org.richfaces.log.Logger; public class LoggerWrapper implements Logger { private MessageInterpolator messageInterpolator; private Log log; public LoggerWrapper(Log log) { this.log = log; messageInterpolator = new MessageInterpolator(new BundleLoader()); } @Override public boolean isDebugEnabled() { return log.isDebugEnabled(); } public void debug(CharSequence content) { log(Level.DEBUG, content); } public void debug(Enum<?> messageKey, Object... args) { log(Level.DEBUG, messageKey, args); } public void debug(CharSequence content, Throwable thrown) { log(Level.DEBUG, content, thrown); } public void debug(Throwable error, Enum<?> messageKey, Object... args) { log(Level.DEBUG, error, messageKey, args); } public void debug(Throwable thrown) { log(Level.DEBUG, thrown); } public boolean isInfoEnabled() { return isLogEnabled(Level.INFO); } public void info(CharSequence content) { log(Level.INFO, content); } public void info(Enum<?> messageKey, Object... args) { log(Level.INFO, messageKey, args); } public void info(CharSequence content, Throwable thrown) { log(Level.INFO, content, thrown); } public void info(Throwable error, Enum<?> messageKey, Object... args) { log(Level.INFO, error, messageKey, args); } public void info(Throwable thrown) { log(Level.INFO, thrown); } public boolean isWarnEnabled() { return isLogEnabled(Level.WARNING); } public void warn(CharSequence content) { log(Level.WARNING, content); } public void warn(Enum<?> messageKey, Object... args) { log(Level.WARNING, messageKey, args); } public void warn(CharSequence content, Throwable thrown) { log(Level.WARNING, content, thrown); } public void warn(Throwable error, Enum<?> messageKey, Object... args) { log(Level.WARNING, error, messageKey, args); } public void warn(Throwable thrown) { log(Level.WARNING, thrown); } public boolean isErrorEnabled() { return isLogEnabled(Level.ERROR); } public void error(CharSequence content) { log(Level.ERROR, content); } public void error(Enum<?> messageKey, Object... args) { log(Level.ERROR, messageKey, args); } public void error(CharSequence content, Throwable thrown) { log(Level.ERROR, content, thrown); } public void error(Throwable error, Enum<?> messageKey, Object... args) { log(Level.ERROR, error, messageKey, args); } public void error(Throwable thrown) { log(Level.ERROR, thrown); } public boolean isLogEnabled(Level level) { switch (level) { case DEBUG: return log.isDebugEnabled(); case INFO: return log.isInfoEnabled(); case WARNING: return log.isWarnEnabled(); case ERROR: return log.isErrorEnabled(); } throw new IllegalStateException("Unknown Logger Level"); } public void log(Level level, CharSequence content) { if (isLogEnabled(level)) { switch (level) { case DEBUG: log.debug(content); break; case INFO: log.info(content); break; case WARNING: log.warn(content); break; case ERROR: log.error(content); break; } } } public void log(Level level, Enum<?> messageKey, Object... args) { log(level, interpolate(messageKey, args)); } public void log(Level level, CharSequence content, Throwable thrown) { if (isLogEnabled(level)) { switch (level) { case DEBUG: log.debug(content, thrown); break; case INFO: log.info(content, thrown); break; case WARNING: log.warn(content, thrown); break; case ERROR: log.error(content, thrown); break; } } } public void log(Level level, Throwable thrown, Enum<?> messageKey, Object... args) { log(level, interpolate(messageKey, args), thrown); } public void log(Level level, Throwable thrown) { if (isLogEnabled(level)) { switch (level) { case DEBUG: log.debug(thrown); break; case INFO: log.info(thrown); break; case WARNING: log.warn(thrown); break; case ERROR: log.error(thrown); break; } } } private String interpolate(Enum<?> messageKey, Object... args) { try { return messageInterpolator.interpolate(Locale.getDefault(), messageKey, args); } catch (InterpolationException e) { return "???" + e.getMessageKey() + "???"; } } }