package com.fasterxml.jackson.core.exc;

import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.core.util.RequestPayload;

Intermediate base class for all read-side streaming processing problems, including parsing and input value coercion problems.
Since:2.10
/** * Intermediate base class for all read-side streaming processing problems, including * parsing and input value coercion problems. * * @since 2.10 */
public abstract class StreamReadException extends JsonProcessingException { final static long serialVersionUID = 1L; protected transient JsonParser _processor;
Optional payload that can be assigned to pass along for error reporting or handling purposes. Core streaming parser implementations DO NOT initialize this; it is up to using applications and frameworks to populate it.
/** * Optional payload that can be assigned to pass along for error reporting * or handling purposes. Core streaming parser implementations DO NOT * initialize this; it is up to using applications and frameworks to * populate it. */
protected RequestPayload _requestPayload; public StreamReadException(JsonParser p, String msg) { super(msg, (p == null) ? null : p.getCurrentLocation()); _processor = p; } public StreamReadException(JsonParser p, String msg, Throwable root) { super(msg, (p == null) ? null : p.getCurrentLocation(), root); _processor = p; } public StreamReadException(JsonParser p, String msg, JsonLocation loc) { super(msg, loc, null); _processor = p; } protected StreamReadException(String msg, JsonLocation loc, Throwable rootCause) { super(msg); if (rootCause != null) { initCause(rootCause); } _location = loc; }
Fluent method that may be used to assign originating JsonParser, to be accessed using getProcessor().

NOTE: `this` instance is modified and no new instance is constructed.

/** * Fluent method that may be used to assign originating {@link JsonParser}, * to be accessed using {@link #getProcessor()}. *<p> * NOTE: `this` instance is modified and no new instance is constructed. */
public abstract StreamReadException withParser(JsonParser p);
Fluent method that may be used to assign payload to this exception, to let recipient access it for diagnostics purposes.

NOTE: `this` instance is modified and no new instance is constructed.

/** * Fluent method that may be used to assign payload to this exception, * to let recipient access it for diagnostics purposes. *<p> * NOTE: `this` instance is modified and no new instance is constructed. */
public abstract StreamReadException withRequestPayload(RequestPayload p); @Override public JsonParser getProcessor() { return _processor; }
Method that may be called to find payload that was being parsed, if one was specified for parser that threw this Exception.
Returns:request body, if payload was specified; `null` otherwise
/** * Method that may be called to find payload that was being parsed, if * one was specified for parser that threw this Exception. * * @return request body, if payload was specified; `null` otherwise */
public RequestPayload getRequestPayload() { return _requestPayload; }
The method returns the String representation of the request payload if one was specified for parser that threw this Exception.
Returns:request body as String, if payload was specified; `null` otherwise
/** * The method returns the String representation of the request payload if * one was specified for parser that threw this Exception. * * @return request body as String, if payload was specified; `null` otherwise */
public String getRequestPayloadAsString() { return (_requestPayload != null) ? _requestPayload.toString() : null; }
Overriding the getMessage() to include the request body
/** * Overriding the getMessage() to include the request body */
@Override public String getMessage() { String msg = super.getMessage(); if (_requestPayload != null) { msg += "\nRequest payload : " + _requestPayload.toString(); } return msg; } }