StreamReadException.java

package tools.jackson.core.exc;

import tools.jackson.core.*;

/**
 * Intermediate base class for all read-side streaming processing problems, including
 * parsing and input value coercion problems.
 */
public class StreamReadException
    extends JacksonException
{
    private final static long serialVersionUID = 3L;

    public StreamReadException(String msg) {
        super(msg);
    }

    public StreamReadException(JsonParser p, String msg) {
        this(p, msg, _loc(p));
    }

    public StreamReadException(JsonParser p, String msg, Throwable rootCause) {
        this(p, msg, _loc(p), rootCause);
    }

    public StreamReadException(JsonParser p, String msg, TokenStreamLocation loc) {
        super(p, msg, loc);
    }

    public StreamReadException(JsonParser p, String msg, TokenStreamLocation loc,
            Throwable rootCause) {
        super(p, msg, loc, rootCause);
    }

    private static TokenStreamLocation _loc(JsonParser p) {
        return(p == null) ? null : p.currentLocation();    
    }

    /**
     * Fluent method that may be used to assign originating {@link JsonParser},
     * to be accessed using {@link #processor()}.
     *<p>
     * NOTE: {@code this} instance is modified and no new instance is constructed.
     *
     * @param p Parser instance to assign to this exception
     *
     * @return This exception instance to allow call chaining
     */
    public StreamReadException withParser(JsonParser p) {
        _processor = p;
        return this;
    }

    // Overridden for co-variance
    @Override
    public JsonParser processor() {
        return (JsonParser) _processor;
    }
}