All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fasterxml.jackson.core.JsonProcessingException Maven / Gradle / Ivy

The newest version!
/* 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.
 *

* Since Jackson 2.12 extends intermediate {@link JacksonException} type * instead of directly extending {@link java.io.IOException}. *

* Since Jackson 2.16, handles its content as configured using {@link com.fasterxml.jackson.core.ErrorReportConfiguration}. */ public class JsonProcessingException extends JacksonException { private final static long serialVersionUID = 123; // eclipse complains otherwise protected JsonLocation _location; protected JsonProcessingException(String msg, JsonLocation loc, Throwable rootCause) { super(msg, 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 /********************************************************************** */ @Override 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. * * @return Original message passed in constructor * * @since 2.1 */ @Override 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 */ @Override 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. * * @return Message suffix assigned, if any; {@code null} if none */ protected String getMessageSuffix() { return null; } /* /********************************************************************** /* Overrides of standard methods /********************************************************************** */ /** * Default implementation overridden so that we can add location information * * @return Original {@code message} preceded by optional prefix and followed by * location information, message and location information separated by a linefeed */ @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 - 2024 Weber Informatics LLC | Privacy Policy