package org.marketcetera.util.log;
import java.io.Serializable;
import java.util.Locale;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.ObjectUtils;
import org.marketcetera.util.misc.ClassVersion;
/**
* A bound message implementation, representing the combination of an
* {@link I18NMessage} and its parameters, if any.
*
* @author tlerios@marketcetera.com
* @since 0.5.0
* @version $Id: I18NBoundMessageBase.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
@ClassVersion("$Id: I18NBoundMessageBase.java 16154 2012-07-14 16:34:05Z colin $")
public class I18NBoundMessageBase<T extends I18NMessage>
implements I18NBoundMessage
{
// CLASS DATA.
private static final long serialVersionUID=1L;
/**
* The logging proxy name.
*/
private final static String SELF_PROXY=
I18NBoundMessageBase.class.getName();
// INSTANCE DATA.
private T mMessage;
private Serializable[] mParams;
// CONSTRUCTORS.
/**
* Creates a new bound message with the given message and
* parameters.
*
* @param message The message.
* @param params The parameters. If null, {@link #EMPTY_PARAMS} is
* used instead.
*/
I18NBoundMessageBase
(T message,
Serializable... params)
{
mMessage=message;
if ((params==null) || (params.length==0)) {
mParams=EMPTY_PARAMS;
} else {
mParams=params;
}
}
// I18NBoundMessage.
@Override
public I18NLoggerProxy getLoggerProxy()
{
return getMessage().getLoggerProxy();
}
@Override
public I18NMessageProvider getMessageProvider()
{
return getMessage().getMessageProvider();
}
@Override
public T getMessage()
{
return mMessage;
}
@Override
public Serializable[] getParams()
{
return mParams;
}
@Override
public Object[] getParamsAsObjects()
{
return getParams();
}
@Override
public String getText
(Locale locale)
{
return getMessageProvider().getText
(locale,getMessage(),getParamsAsObjects());
}
@Override
public String getText()
{
return getMessageProvider().getText
(getMessage(),getParamsAsObjects());
}
@Override
public void error
(Object category,
Throwable throwable)
{
getLoggerProxy().errorProxy
(SELF_PROXY,category,throwable,getMessage(),getParamsAsObjects());
}
@Override
public void error
(Object category)
{
getLoggerProxy().errorProxy
(SELF_PROXY,category,getMessage(),getParamsAsObjects());
}
@Override
public void warn
(Object category,
Throwable throwable)
{
getLoggerProxy().warnProxy
(SELF_PROXY,category,throwable,getMessage(),getParamsAsObjects());
}
@Override
public void warn
(Object category)
{
getLoggerProxy().warnProxy
(SELF_PROXY,category,getMessage(),getParamsAsObjects());
}
@Override
public void info
(Object category,
Throwable throwable)
{
getLoggerProxy().infoProxy
(SELF_PROXY,category,throwable,getMessage(),getParamsAsObjects());
}
@Override
public void info
(Object category)
{
getLoggerProxy().infoProxy
(SELF_PROXY,category,getMessage(),getParamsAsObjects());
}
@Override
public void debug
(Object category,
Throwable throwable)
{
getLoggerProxy().debugProxy
(SELF_PROXY,category,throwable,getMessage(),getParamsAsObjects());
}
@Override
public void debug
(Object category)
{
getLoggerProxy().debugProxy
(SELF_PROXY,category,getMessage(),getParamsAsObjects());
}
@Override
public void trace
(Object category,
Throwable throwable)
{
getLoggerProxy().traceProxy
(SELF_PROXY,category,throwable,getMessage(),getParamsAsObjects());
}
@Override
public void trace
(Object category)
{
getLoggerProxy().traceProxy
(SELF_PROXY,category,getMessage(),getParamsAsObjects());
}
// Object.
@Override
public String toString()
{
return getText();
}
@Override
public int hashCode()
{
return (ObjectUtils.hashCode(getMessage())+
ArrayUtils.hashCode(getParams()));
}
@Override
public boolean equals
(Object other)
{
if (this==other) {
return true;
}
if ((other==null) || !getClass().equals(other.getClass())) {
return false;
}
I18NBoundMessageBase<?> o=(I18NBoundMessageBase<?>)other;
return (ObjectUtils.equals(getMessage(),o.getMessage()) &&
ArrayUtils.isEquals(getParams(),o.getParams()));
}
}