(Heavily modified) patch from Dave to allow varargs key/value logging bits to

be supplied to ComplainingListener.


git-svn-id: https://samskivert.googlecode.com/svn/trunk@2462 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
samskivert
2008-10-25 00:52:40 +00:00
parent f0d55037d1
commit 67d0140701
@@ -28,16 +28,32 @@ import java.util.logging.Level;
public class ComplainingListener<T> public class ComplainingListener<T>
implements ResultListener<T> implements ResultListener<T>
{ {
public ComplainingListener (Logger logger, String errorText) /**
* Creates a listener that will log failures to the supplied logger.
*
* @param logger the logger to which to log failures.
* @param errorText the text to log when the error is received.
* @param arguments to log along with the error text. See {@link Logger#format} for info on how
* they will be formatted.
*/
public ComplainingListener (Logger logger, String errorText, Object... args)
{ {
this(errorText, args);
_slogger = logger; _slogger = logger;
_errorText = errorText;
} }
public ComplainingListener (java.util.logging.Logger logger, String errorText) /**
* Creates a listener that will log failures to the supplied logger.
*
* @param logger the logger to which to log failures.
* @param errorText the text to log when the error is received.
* @param arguments to log along with the error text. See {@link Logger#format} for info on how
* they will be formatted.
*/
public ComplainingListener (java.util.logging.Logger logger, String errorText, Object... args)
{ {
this(errorText, args);
_jlogger = logger; _jlogger = logger;
_errorText = errorText;
} }
// documentation inherited from interface ResultListener // documentation inherited from interface ResultListener
@@ -46,15 +62,27 @@ public class ComplainingListener<T>
// documentation inherited from interface ResultListener // documentation inherited from interface ResultListener
public void requestFailed (Exception cause) public void requestFailed (Exception cause)
{ {
Object[] args = _args != null ? ArrayUtil.append(_args, cause) : new Object[] { cause };
if (_slogger != null) { if (_slogger != null) {
_slogger.warning(_errorText, cause); _slogger.warning(_errorText, args);
} else if (_jlogger != null) { } else if (_jlogger != null) {
_jlogger.log(Level.WARNING, _errorText, cause); _jlogger.log(Level.WARNING, Logger.format(_errorText, args), cause);
} else { } else {
System.err.println(_errorText + " [cause=" + cause + "]."); System.err.println(Logger.format(_errorText, args));
} }
} }
protected ComplainingListener (String errorText, Object[] args)
{
if (args != null && args.length % 2 == 1) {
throw new IllegalArgumentException(
"Got odd number of arguments (" + args.length + "). " +
"args must be a list of key/value pairs.");
}
_errorText = errorText;
_args = args;
}
/** The log to which we'll log our error, may be null. */ /** The log to which we'll log our error, may be null. */
protected Logger _slogger; protected Logger _slogger;
@@ -63,4 +91,7 @@ public class ComplainingListener<T>
/** The text to output if the error happens. */ /** The text to output if the error happens. */
protected String _errorText; protected String _errorText;
/** Key-value pairs for extra information about the error. */
protected Object[] _args;
} }