From 57b98bcf7041142aace36bf5f00b45fc065eaae8 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Fri, 9 Mar 2018 09:51:50 +0100 Subject: [PATCH] [#7171] Better exception formatting (adding ... around abbreviated SQL strings) --- jOOQ/src/main/java/org/jooq/impl/ParserException.java | 10 ++++++---- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 7 ++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserException.java b/jOOQ/src/main/java/org/jooq/impl/ParserException.java index 86bcb6292e..983a16ef3c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserException.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserException.java @@ -37,8 +37,6 @@ */ package org.jooq.impl; -import static org.jooq.exception.SQLStateSubclass.C42000_NO_SUBCLASS; - import org.jooq.DSLContext; import org.jooq.exception.DataAccessException; import org.jooq.exception.SQLStateSubclass; @@ -65,7 +63,7 @@ public final class ParserException extends DataAccessException { } public ParserException(String sql, String message) { - this(sql, message, C42000_NO_SUBCLASS); + this(sql, message, null); } public ParserException(String sql, String message, SQLStateSubclass state) { @@ -73,7 +71,11 @@ public final class ParserException extends DataAccessException { } public ParserException(String sql, String message, SQLStateSubclass state, Throwable cause) { - super(state + ": " + (message == null ? "" : message + ": ") + sql, cause); + super( + (state == null ? "" : state + ": ") + + (message == null ? "" : message + ": ") + + sql, cause + ); this.sql = sql; } diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 750310078b..678e0d6bb6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -7338,7 +7338,12 @@ final class ParserImpl implements Parser { String mark() { int[] line = line(); - return "[" + line[0] + ":" + line[1] + "] " + sqlString.substring(Math.max(0, position - 50), position) + "[*]" + sqlString.substring(position, Math.min(sqlString.length(), position + 80)); + return "[" + line[0] + ":" + line[1] + "] " + + (position > 50 ? "..." : "") + + sqlString.substring(Math.max(0, position - 50), position) + + "[*]" + + sqlString.substring(position, Math.min(sqlString.length(), position + 80)) + + (sqlString.length() > position + 80 ? "..." : ""); } @Override