Repository: camel Updated Branches: refs/heads/camel-2.18.x 83e8e1fc7 -> 70d4750fb refs/heads/master 6eb5b8f4e -> 309374689
CAMEL-10699: Simple - Add short error message Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/30937468 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/30937468 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/30937468 Branch: refs/heads/master Commit: 30937468965ce5e44e8deee77e9648cc8543fe62 Parents: 6eb5b8f Author: Claus Ibsen <davscl...@apache.org> Authored: Thu Jan 12 09:50:46 2017 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Jan 12 09:53:12 2017 +0100 ---------------------------------------------------------------------- .../types/SimpleIllegalSyntaxException.java | 10 ++++++++ .../camel/catalog/DefaultCamelCatalog.java | 25 ++++++++++++++++++++ .../camel/catalog/SimpleValidationResult.java | 9 +++++++ .../apache/camel/catalog/CamelCatalogTest.java | 2 ++ 4 files changed, 46 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/30937468/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java b/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java index 0377763..b96db0c 100644 --- a/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java +++ b/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java @@ -48,6 +48,16 @@ public class SimpleIllegalSyntaxException extends ExpressionIllegalSyntaxExcepti return index; } + /** + * Gets a short error message. + */ + public String getShortMessage() { + if (message == null) { + return "[null]"; + } + return message; + } + @Override public String getMessage() { if (message == null) { http://git-wip-us.apache.org/repos/asf/camel/blob/30937468/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java index 8089281..435d60b 100644 --- a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java +++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java @@ -1859,6 +1859,31 @@ public class DefaultCamelCatalog implements CamelCatalog { // ignore } } + + // we need to grab the short message field from this simple syntax exception + if (cause.getClass().getName().equals("org.apache.camel.language.simple.types.SimpleIllegalSyntaxException")) { + try { + Method method = cause.getClass().getMethod("getShortMessage"); + Object result = method.invoke(cause); + if (result != null) { + String msg = (String) result; + answer.setShortError(msg); + } + } catch (Throwable i) { + // ignore + } + + if (answer.getShortError() == null) { + // fallback and try to make existing message short instead + String msg = answer.getError(); + // grab everything before " at location " which would be regarded as the short message + int idx = msg.indexOf(" at location "); + if (idx > 0) { + msg = msg.substring(0, idx); + answer.setShortError(msg); + } + } + } } } http://git-wip-us.apache.org/repos/asf/camel/blob/30937468/platforms/catalog/src/main/java/org/apache/camel/catalog/SimpleValidationResult.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/SimpleValidationResult.java b/platforms/catalog/src/main/java/org/apache/camel/catalog/SimpleValidationResult.java index 87c846e..5032758 100644 --- a/platforms/catalog/src/main/java/org/apache/camel/catalog/SimpleValidationResult.java +++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/SimpleValidationResult.java @@ -22,6 +22,7 @@ public class SimpleValidationResult implements Serializable { private final String simple; private String error; + private String shortError; private int index; public SimpleValidationResult(String simple) { @@ -44,6 +45,14 @@ public class SimpleValidationResult implements Serializable { return error; } + public String getShortError() { + return shortError; + } + + public void setShortError(String shortError) { + this.shortError = shortError; + } + public int getIndex() { return index; } http://git-wip-us.apache.org/repos/asf/camel/blob/30937468/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java b/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java index cc6c339..e08e668 100644 --- a/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java +++ b/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java @@ -802,6 +802,7 @@ public class CamelCatalogTest { assertEquals("${body", result.getSimple()); LOG.info(result.getError()); assertTrue(result.getError().startsWith("expected symbol functionEnd but was eol at location 5")); + assertEquals("expected symbol functionEnd but was eol", result.getShortError()); assertEquals(5, result.getIndex()); } @@ -816,6 +817,7 @@ public class CamelCatalogTest { assertEquals("${body} > ${header.size", result.getSimple()); LOG.info(result.getError()); assertTrue(result.getError().startsWith("expected symbol functionEnd but was eol at location 22")); + assertEquals("expected symbol functionEnd but was eol", result.getShortError()); assertEquals(22, result.getIndex()); }