From 6b0e9fd1ac81d50e7acfba4bde03def3caedcd1e Mon Sep 17 00:00:00 2001 From: David Brooks Date: Tue, 9 Mar 2021 14:08:49 +1300 Subject: [PATCH] Catch and send Cypher syntax errors to client as 400 response (#289). --- .../io/scigraph/services/resources/CypherUtilService.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/SciGraph-services/src/main/java/io/scigraph/services/resources/CypherUtilService.java b/SciGraph-services/src/main/java/io/scigraph/services/resources/CypherUtilService.java index 55d00958..d11504e5 100644 --- a/SciGraph-services/src/main/java/io/scigraph/services/resources/CypherUtilService.java +++ b/SciGraph-services/src/main/java/io/scigraph/services/resources/CypherUtilService.java @@ -26,6 +26,7 @@ import java.util.Arrays; import java.util.Iterator; import java.util.List; +import java.util.logging.Logger; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.TimeUnit; @@ -63,6 +64,8 @@ @Produces({MediaType.TEXT_PLAIN}) public class CypherUtilService extends BaseResource { + private static final Logger logger = Logger.getLogger(CypherUtilService.class.getName()); + final private CypherUtil cypherUtil; final private GraphDatabaseService graphDb; final private CurieUtil curieUtil; @@ -131,6 +134,10 @@ public Response execute( } else { return Response.ok(cypherUtil.execute(replacedStartCurie).resultAsString()).cacheControl(null).build(); } + } catch (QueryExecutionException e) { + String errorMsg = "QueryExecutionException: " + e.getMessage(); + logger.warning(errorMsg); + return Response.status(400).entity(errorMsg).build(); } catch (TransactionTerminatedException e) { return Response.ok("The query execution exceeds dbms.transaction.timeout configuration. " + "Consider using the neo4j shell instead of this service.").build();