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

com.hazelcast.org.jsfr.json.exception.JsonPathCompilerException Maven / Gradle / Ivy

There is a newer version: 5.5.0
Show newest version
package com.hazelcast.org.jsfr.json.exception;

import com.hazelcast.org.antlr.v4.runtime.RecognitionException;
import com.hazelcast.org.antlr.v4.runtime.Token;

public class JsonPathCompilerException extends JsonSurfingException {

    public JsonPathCompilerException(String message) {
        super(message);
    }

    public JsonPathCompilerException(Throwable cause) {
        super(cause);
    }

    public JsonPathCompilerException(String message, Throwable cause) {
        super(message, cause);
    }

    public static JsonPathCompilerException from(RuntimeException e) {
        if (e instanceof JsonPathCompilerException) {
            return (JsonPathCompilerException) e;
        }
        if (e.getCause() instanceof RecognitionException) {
            return fromInputMismatchException((RecognitionException) e.getCause());
        }
        if (e instanceof RecognitionException) {
            return fromInputMismatchException((RecognitionException) e);
        }
        return new JsonPathCompilerException(e);
    }

    private static JsonPathCompilerException fromInputMismatchException(RecognitionException e) {
        Token token = e.getOffendingToken();
        int startColumn = token.getCharPositionInLine();
        int endColumn = startColumn + token.getStopIndex() - token.getStartIndex() + 1;
        String msg;
        if (startColumn == endColumn) {
            msg = String.format("Unexpected token at line %d, column %d", token.getLine(), startColumn);
        } else {
            msg = String.format("Unexpected token at line %d, columns %d to %d", token.getLine(), startColumn, endColumn);
        }

        if (e.getMessage() != null) {
            msg += ": " + e.getMessage();
        }

        return new JsonPathCompilerException(msg, e);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy