blob: 329b4717dcf23f5a343e9ca40510527913d22747 [file] [log] [blame]
package org.codehaus.jackson;
/**
* Intermediate base class for all problems encountered when
* processing (parsing, generating) JSON content
* that are not pure I/O problems.
* Regular {@link java.io.IOException}s will be passed through as is.
* Sub-class of {@link java.io.IOException} for convenience.
*/
public class JsonProcessingException
extends java.io.IOException
{
final static long serialVersionUID = 123; // Stupid eclipse...
protected JsonLocation mLocation;
protected JsonProcessingException(String msg, JsonLocation loc, Throwable rootCause)
{
/* Argh. IOException(Throwable,String) is only available starting
* with JDK 1.6...
*/
super(msg);
if (rootCause != null) {
initCause(rootCause);
}
mLocation = loc;
}
protected JsonProcessingException(String msg)
{
super(msg);
}
protected JsonProcessingException(String msg, JsonLocation loc)
{
this(msg, loc, null);
}
protected JsonProcessingException(String msg, Throwable rootCause)
{
this(msg, null, rootCause);
}
protected JsonProcessingException(Throwable rootCause)
{
this(null, null, rootCause);
}
public JsonLocation getLocation()
{
return mLocation;
}
/**
* Default method overridden so that we can add location information
*/
@Override
public String getMessage()
{
String msg = super.getMessage();
if (msg == null) {
msg = "N/A";
}
JsonLocation loc = getLocation();
if (loc != null) {
StringBuilder sb = new StringBuilder();
sb.append(msg);
sb.append('\n');
sb.append(" at ");
sb.append(loc.toString());
return sb.toString();
}
return msg;
}
@Override
public String toString() {
return getClass().getName()+": "+getMessage();
}
}