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(); } }