From 78dbf3a53e3bf67343350d975ee8fcd5877bcf56 Mon Sep 17 00:00:00 2001 From: Dariusz Chrzascik Date: Mon, 12 Jun 2017 15:30:00 +0200 Subject: [PATCH] Issue #125 Passing exception message to ArangoDBException --- src/main/java/com/arangodb/ArangoDBException.java | 4 ++++ .../java/com/arangodb/entity/ErrorEntity.java | 9 +++++++++ .../java/com/arangodb/ArangoDatabaseTest.java | 15 +++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/src/main/java/com/arangodb/ArangoDBException.java b/src/main/java/com/arangodb/ArangoDBException.java index cd4b5c5f1..06dc2a71f 100644 --- a/src/main/java/com/arangodb/ArangoDBException.java +++ b/src/main/java/com/arangodb/ArangoDBException.java @@ -49,6 +49,10 @@ public String getErrorMessage() { return entity != null ? entity.getErrorMessage() : null; } + public String getException() { + return entity != null ? entity.getException() : null; + } + public int getResponseCode() { return entity != null ? entity.getCode() : null; } diff --git a/src/main/java/com/arangodb/entity/ErrorEntity.java b/src/main/java/com/arangodb/entity/ErrorEntity.java index cf0cd8c25..70431c61a 100644 --- a/src/main/java/com/arangodb/entity/ErrorEntity.java +++ b/src/main/java/com/arangodb/entity/ErrorEntity.java @@ -27,6 +27,7 @@ public class ErrorEntity { private String errorMessage; + private String exception; private int code; private int errorNum; @@ -41,6 +42,14 @@ public String getErrorMessage() { return errorMessage; } + /** + * @return the exception message, passed when transaction fails + * @return + */ + public String getException() { + return exception; + } + /** * @return the status code */ diff --git a/src/test/java/com/arangodb/ArangoDatabaseTest.java b/src/test/java/com/arangodb/ArangoDatabaseTest.java index ad8069d9a..bbc4614fe 100644 --- a/src/test/java/com/arangodb/ArangoDatabaseTest.java +++ b/src/test/java/com/arangodb/ArangoDatabaseTest.java @@ -28,6 +28,7 @@ import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.IOException; @@ -1060,6 +1061,20 @@ public void getDocument() { } } + @Test + public void shouldIncludeExceptionMessage() { + final String exceptionMessage = "My error context"; + final String action = "function (params) {" + + "throw '" + exceptionMessage + "';" + + "}"; + try { + db.transaction(action, VPackSlice.class, null); + fail(); + } catch (final ArangoDBException e) { + assertTrue(e.getException().contains(exceptionMessage)); + } + } + @Test(expected = ArangoDBException.class) public void getDocumentWrongId() { db.getDocument("123", BaseDocument.class);