From 0779769e84fad3a821cfea7f68f373272953c547 Mon Sep 17 00:00:00 2001 From: Ancuta Morarasu Date: Wed, 11 May 2016 12:08:05 +0000 Subject: [PATCH] Merged HEAD (5.2) to 5.2.N (5.2.1) 126554 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2) 124208 gjames: RA-892: Improved the error message handling git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126900 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rest-framework-messages.properties | 2 +- .../parameters/InvalidSelectException.java | 4 ++-- .../where/InvalidQueryException.java | 12 ++++++++-- .../webscripts/ResourceWebScriptHelper.java | 9 +++++--- .../core/ResourceWebScriptHelperTests.java | 22 ++++++++++++++----- 5 files changed, 35 insertions(+), 14 deletions(-) diff --git a/config/alfresco/messages/rest-framework-messages.properties b/config/alfresco/messages/rest-framework-messages.properties index 0061d2c2a7..1c8624d5a5 100644 --- a/config/alfresco/messages/rest-framework-messages.properties +++ b/config/alfresco/messages/rest-framework-messages.properties @@ -3,7 +3,7 @@ framework.exception.ApiDefault=Unknown error calling the Rest API framework.exception.ConstraintViolated=A constraint was violated framework.exception.InvalidArgument=An invalid argument was received {0} framework.exception.InvalidQuery=An invalid WHERE query was received. {0} -framework.exception.InvalidSelect=An invalid SELECT query was received. {0} +framework.exception.InvalidSelect=An invalid {1} query was received. {0} framework.exception.NotFound={0} was not found framework.exception.EntityNotFound=The entity with id: {0} was not found framework.exception.RelationshipNotFound=The relationship resource was not found for the entity with id: {0} and a relationship id of {1} diff --git a/source/java/org/alfresco/rest/framework/resource/parameters/InvalidSelectException.java b/source/java/org/alfresco/rest/framework/resource/parameters/InvalidSelectException.java index 848eb8faf8..63c8b7d659 100755 --- a/source/java/org/alfresco/rest/framework/resource/parameters/InvalidSelectException.java +++ b/source/java/org/alfresco/rest/framework/resource/parameters/InvalidSelectException.java @@ -38,8 +38,8 @@ public class InvalidSelectException extends InvalidArgumentException public static String DEFAULT_MESSAGE_ID = "framework.exception.InvalidSelect"; - public InvalidSelectException(Object queryParam) + public InvalidSelectException(String paramName, Object queryParam) { - super(DEFAULT_MESSAGE_ID, new Object[] {queryParam}); + super(DEFAULT_MESSAGE_ID, new Object[] {queryParam, paramName}); } } diff --git a/source/java/org/alfresco/rest/framework/resource/parameters/where/InvalidQueryException.java b/source/java/org/alfresco/rest/framework/resource/parameters/where/InvalidQueryException.java index 5ba70c7d95..b33e776b47 100644 --- a/source/java/org/alfresco/rest/framework/resource/parameters/where/InvalidQueryException.java +++ b/source/java/org/alfresco/rest/framework/resource/parameters/where/InvalidQueryException.java @@ -36,13 +36,21 @@ public class InvalidQueryException extends InvalidArgumentException { private static final long serialVersionUID = 8825573452685077660L; public static String DEFAULT_MESSAGE_ID = "framework.exception.InvalidQuery"; - + private Object queryParam; + public InvalidQueryException() { super(DEFAULT_MESSAGE_ID); } - + public InvalidQueryException(Object queryParam) { super(DEFAULT_MESSAGE_ID, new Object[] {queryParam}); + this.queryParam = queryParam; } + + public Object getQueryParam() + { + return queryParam; + } + } diff --git a/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptHelper.java b/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptHelper.java index 79a5c1058e..0ab850963b 100644 --- a/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptHelper.java +++ b/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptHelper.java @@ -267,7 +267,7 @@ public class ResourceWebScriptHelper if (selectedPropsTree instanceof CommonErrorNode) { logger.debug("Error parsing the "+paramName+" clause "+selectedPropsTree); - throw new InvalidSelectException(selectedPropsTree); + throw new InvalidSelectException(paramName, selectedPropsTree); } if (selectedPropsTree.getChildCount() == 0 && !selectedPropsTree.getText().isEmpty()) { @@ -292,9 +292,12 @@ public class ResourceWebScriptHelper { logger.debug("Error parsing the \"+paramName+\" clause: "+param); } - + catch (InvalidQueryException iqe) + { + throw new InvalidSelectException(paramName, iqe.getQueryParam()); + } //Default to throw out an invalid query - throw new InvalidSelectException(param); + throw new InvalidSelectException(paramName, param); } /** diff --git a/source/test-java/org/alfresco/rest/framework/tests/core/ResourceWebScriptHelperTests.java b/source/test-java/org/alfresco/rest/framework/tests/core/ResourceWebScriptHelperTests.java index a6a73164d8..437bbce807 100644 --- a/source/test-java/org/alfresco/rest/framework/tests/core/ResourceWebScriptHelperTests.java +++ b/source/test-java/org/alfresco/rest/framework/tests/core/ResourceWebScriptHelperTests.java @@ -225,7 +225,7 @@ public class ResourceWebScriptHelperTests theClause = getClause(paramName, "x/,z"); fail("Should throw an InvalidSelectException"); } - catch (InvalidArgumentException error) + catch (InvalidSelectException error) { //this is correct } @@ -235,7 +235,7 @@ public class ResourceWebScriptHelperTests theClause = getClause(paramName, "/x'n,/z"); fail("Should throw an InvalidSelectException"); } - catch (InvalidArgumentException error) + catch (InvalidSelectException error) { //this is correct } @@ -245,7 +245,7 @@ public class ResourceWebScriptHelperTests theClause = getClause(paramName, "/foo/0"); fail("Should throw an InvalidSelectException. Legal identifiers must start with a letter not zero"); } - catch (InvalidArgumentException error) + catch (InvalidSelectException error) { //this is correct } @@ -255,11 +255,21 @@ public class ResourceWebScriptHelperTests theClause = getClause(paramName, "/"); fail("Should throw an InvalidSelectException. No identifier specified."); } - catch (InvalidArgumentException error) + catch (InvalidSelectException error) { //this is correct - } - + } + + try + { + theClause = getClause(paramName, "path, isLink"); + fail("Should throw an InvalidSelectException. No identifier specified."); + } + catch (InvalidSelectException error) + { + //this is correct + } + theClause = getClause(paramName, "king/kong"); assertTrue("has a valid "+paramName, theClause.size() == 1); assertEquals("king/kong",theClause.get(0));