From b3eda064b3e5c330bce8657cbe6bfe933bb4b5a1 Mon Sep 17 00:00:00 2001 From: Alexandru Epure Date: Tue, 9 Aug 2016 14:13:02 +0000 Subject: [PATCH] Merged 5.2.N (5.2.1) to HEAD (5.2) 129170 mmuller: Merged RETURN-OF-THE-API (5.2.0) to 5.2.N (5.2.1) 128526 amorarasu: REPO-853: Improve REST fwk: Where parameter with invalid operator like where=(inval=true) - Added proper error message. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@129344 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rest-framework-messages.properties | 1 + .../api/impl/MapBasedQueryWalker.java | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/config/alfresco/messages/rest-framework-messages.properties b/config/alfresco/messages/rest-framework-messages.properties index 3fd1259015..6e64ee6e77 100644 --- a/config/alfresco/messages/rest-framework-messages.properties +++ b/config/alfresco/messages/rest-framework-messages.properties @@ -2,6 +2,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.InvalidProperty=The property ''{0}'' with value ''{1}'' is invalid for {2} comparison. framework.exception.InvalidQuery=An invalid WHERE query was received. {0} framework.exception.InvalidSelect=An invalid {1} query was received. {0} framework.exception.NotFound={0} was not found diff --git a/source/java/org/alfresco/rest/workflow/api/impl/MapBasedQueryWalker.java b/source/java/org/alfresco/rest/workflow/api/impl/MapBasedQueryWalker.java index f0ecdd3fa8..f039506d00 100644 --- a/source/java/org/alfresco/rest/workflow/api/impl/MapBasedQueryWalker.java +++ b/source/java/org/alfresco/rest/workflow/api/impl/MapBasedQueryWalker.java @@ -177,7 +177,7 @@ public class MapBasedQueryWalker extends WalkerCallbackAdapter @Override public void comparison(int type, String propertyName, String propertyValue) { - boolean throwError = false; + boolean throwError = false; if (variablesEnabled && propertyName.startsWith("variables/")) { @@ -193,7 +193,7 @@ public class MapBasedQueryWalker extends WalkerCallbackAdapter } else { - throwError = !handleUnmatchedComparison(type, propertyName, propertyValue); + throwError = !handleUnmatchedComparison(type, propertyName, propertyValue); } } else if (type == WhereClauseParser.MATCHES) @@ -204,7 +204,7 @@ public class MapBasedQueryWalker extends WalkerCallbackAdapter } else { - throwError = !handleUnmatchedComparison(type, propertyName, propertyValue); + throwError = !handleUnmatchedComparison(type, propertyName, propertyValue); } } else if (type == WhereClauseParser.GREATERTHAN) @@ -215,7 +215,7 @@ public class MapBasedQueryWalker extends WalkerCallbackAdapter } else { - throwError = !handleUnmatchedComparison(type, propertyName, propertyValue); + throwError = !handleUnmatchedComparison(type, propertyName, propertyValue); } } else if (type == WhereClauseParser.GREATERTHANOREQUALS) @@ -226,7 +226,7 @@ public class MapBasedQueryWalker extends WalkerCallbackAdapter } else { - throwError = !handleUnmatchedComparison(type, propertyName, propertyValue); + throwError = !handleUnmatchedComparison(type, propertyName, propertyValue); } } else if (type == WhereClauseParser.LESSTHAN) @@ -237,7 +237,7 @@ public class MapBasedQueryWalker extends WalkerCallbackAdapter } else { - throwError = !handleUnmatchedComparison(type, propertyName, propertyValue); + throwError = !handleUnmatchedComparison(type, propertyName, propertyValue); } } else if (type == WhereClauseParser.LESSTHANOREQUALS) @@ -248,7 +248,7 @@ public class MapBasedQueryWalker extends WalkerCallbackAdapter } else { - throwError = !handleUnmatchedComparison(type, propertyName, propertyValue); + throwError = !handleUnmatchedComparison(type, propertyName, propertyValue); } } else @@ -257,7 +257,10 @@ public class MapBasedQueryWalker extends WalkerCallbackAdapter } } - if (throwError) { throw new InvalidArgumentException(type + " is not allowed for 'scope' comparison."); } + if (throwError) + { + throw new InvalidArgumentException("framework.exception.InvalidProperty", new Object[] {propertyName, propertyValue, WhereClauseParser.tokenNames[type]}); + } } public String getProperty(String propertyName, int type)