com.fasterxml.jackson.core.JsonProcessingException Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ehcache Show documentation
Show all versions of ehcache Show documentation
Ehcache is an open source, standards-based cache used to boost performance,
offload the database and simplify scalability. Ehcache is robust, proven and full-featured and
this has made it the most widely-used Java-based cache.
/* Jackson JSON-processor.
*
* Copyright (c) 2007- Tatu Saloranta, [email protected]
*/
package com.fasterxml.jackson.core;
/**
* 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 _location;
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);
}
_location = 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);
}
/*
/**********************************************************
/* Extended API
/**********************************************************
*/
public JsonLocation getLocation() { return _location; }
/**
* Method that allows to remove context information from this exception's message.
* Useful when you are parsing security-sensitive data and don't want original data excerpts
* to be present in Jackson parser error messages.
*
* @since 2.9
*/
public void clearLocation() { _location = null; }
/**
* Method that allows accessing the original "message" argument,
* without additional decorations (like location information)
* that overridden {@link #getMessage} adds.
*
* @since 2.1
*/
public String getOriginalMessage() { return super.getMessage(); }
/**
* Method that allows accessing underlying processor that triggered
* this exception; typically either {@link JsonParser} or {@link JsonGenerator}
* for exceptions that originate from streaming API.
* Note that it is possible that `null` may be returned if code throwing
* exception either has no access to processor; or has not been retrofitted
* to set it; this means that caller needs to take care to check for nulls.
* Subtypes override this method with co-variant return type, for more
* type-safe access.
*
* @return Originating processor, if available; null if not.
*
* @since 2.7
*/
public Object getProcessor() { return null; }
/*
/**********************************************************
/* Methods for sub-classes to use, override
/**********************************************************
*/
/**
* Accessor that sub-classes can override to append additional
* information right after the main message, but before
* source location information.
*/
protected String getMessageSuffix() { return null; }
/*
/**********************************************************
/* Overrides of standard methods
/**********************************************************
*/
/**
* 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();
String suffix = getMessageSuffix();
// mild optimization, if nothing extra is needed:
if (loc != null || suffix != null) {
StringBuilder sb = new StringBuilder(100);
sb.append(msg);
if (suffix != null) {
sb.append(suffix);
}
if (loc != null) {
sb.append('\n');
sb.append(" at ");
sb.append(loc.toString());
}
msg = sb.toString();
}
return msg;
}
@Override public String toString() { return getClass().getName()+": "+getMessage(); }
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy