You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2022/02/11 02:30:02 UTC

[asterixdb] 05/09: [NO ISSUE][MISC] HTTP error handling, exception message cleanup

This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 81c526671dfca70ee1ebae9c64677e117a212362
Author: Michael Blow <mb...@apache.org>
AuthorDate: Thu Jan 27 10:23:23 2022 -0500

    [NO ISSUE][MISC] HTTP error handling, exception message cleanup
    
    Change-Id: If8fc109aee55571aff4a87029cad2a7a0c516d0c
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15023
    Reviewed-by: Hussain Towaileb <hu...@gmail.com>
    Tested-by: Michael Blow <mb...@apache.org>
---
 .../asterix/translator/util/ValidateUtil.java      |  12 +-
 .../asterix/api/http/server/ClusterApiServlet.java |   2 +-
 .../api/http/server/DiagnosticsApiServlet.java     |   4 +-
 .../asterix/api/http/server/NCUdfApiServlet.java   |  14 +-
 .../asterix/app/translator/QueryTranslator.java    |  10 +-
 .../asterix/test/common/ResultExtractor.java       |   2 +-
 .../src/test/resources/metadata/testsuite.xml      |  20 +-
 .../queries_sqlpp/objects/ObjectsQueries.xml       |  22 +--
 .../request-param-validation-400-BAD.01.regexjson  |   2 +-
 .../warnings-limit/warnings-limit.03.regexadm      |   2 +-
 .../warnings-limit/warnings-limit.06.regexadm      |   2 +-
 .../warnings-limit/warnings-limit.08.regexadm      |   2 +-
 ...stsuite_external_dataset_azure_blob_storage.xml |   8 +-
 .../runtimets/testsuite_external_dataset_s3.xml    |   8 +-
 .../resources/runtimets/testsuite_it_sqlpp.xml     |   2 +-
 .../test/resources/runtimets/testsuite_sqlpp.xml   | 202 ++++++++++-----------
 .../src/main/resources/asx_errormsg/en.properties  |  44 ++---
 hyracks-fullstack/hyracks/hyracks-http/pom.xml     |   5 +
 .../hyracks/http/server/AbstractServlet.java       |  33 ++--
 19 files changed, 207 insertions(+), 189 deletions(-)

diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
index 0d6a452..a2b26e7 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
@@ -236,7 +236,7 @@ public class ValidateUtil {
                         break;
                     default:
                         throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
-                                "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag()
+                                "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag()
                                         + " cannot be indexed using the BTree index.");
                 }
                 break;
@@ -251,14 +251,14 @@ public class ValidateUtil {
                         break;
                     default:
                         throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
-                                "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag()
+                                "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag()
                                         + " cannot be indexed using the RTree index.");
                 }
                 break;
             case LENGTH_PARTITIONED_NGRAM_INVIX:
                 if (fieldType.getTypeTag() != ATypeTag.STRING) {
                     throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
-                            "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag()
+                            "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag()
                                     + " cannot be indexed using the Length Partitioned N-Gram index.");
                 }
                 break;
@@ -270,14 +270,14 @@ public class ValidateUtil {
                         break;
                     default:
                         throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
-                                "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag()
+                                "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag()
                                         + " cannot be indexed using the Length Partitioned Keyword index.");
                 }
                 break;
             case SINGLE_PARTITION_NGRAM_INVIX:
                 if (fieldType.getTypeTag() != ATypeTag.STRING) {
                     throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
-                            "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag()
+                            "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag()
                                     + " cannot be indexed using the N-Gram index.");
                 }
                 break;
@@ -289,7 +289,7 @@ public class ValidateUtil {
                         break;
                     default:
                         throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
-                                "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag()
+                                "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag()
                                         + " cannot be indexed using the Keyword index.");
                 }
                 break;
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java
index bdc1bd7..eaeb082 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java
@@ -83,7 +83,7 @@ public class ClusterApiServlet extends AbstractServlet {
             }
             JSONUtil.writeNode(responseWriter, json);
         } catch (IllegalArgumentException e) { // NOSONAR - exception not logged or rethrown
-            response.setStatus(HttpResponseStatus.NOT_FOUND);
+            sendError(response, HttpResponseStatus.NOT_FOUND);
         } catch (Exception e) {
             LOGGER.log(Level.INFO, "exception thrown for " + request, e);
             response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR);
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java
index 9876eed..5e4b376 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java
@@ -79,10 +79,10 @@ public class DiagnosticsApiServlet extends NodeControllerDetailsApiServlet {
         } catch (RejectedExecutionException e) {
             // we must be shutting down, return 503
             LOGGER.info("RejectedExecutionException while servicing request; returning 503", e);
-            sendError(response, HttpResponseStatus.SERVICE_UNAVAILABLE, null);
+            sendError(response, HttpResponseStatus.SERVICE_UNAVAILABLE);
         } catch (Exception e) {
             LOGGER.warn("exception while servicing request; returning 500", e);
-            sendError(response, HttpResponseStatus.INTERNAL_SERVER_ERROR, e.toString());
+            sendError(response, HttpResponseStatus.INTERNAL_SERVER_ERROR);
         }
         responseWriter.flush();
     }
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java
index 9efb6f8..8cf70b2 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java
@@ -295,7 +295,8 @@ public class NCUdfApiServlet extends AbstractNCUdfServlet {
         responseWriter.flush();
     }
 
-    protected boolean isRequestPermittedForWrite(IServletRequest request, IServletResponse response) {
+    protected boolean isRequestPermittedForWrite(IServletRequest request, IServletResponse response)
+            throws IOException {
         if (!isRequestOnLoopback(request)) {
             rejectForbidden(response);
             return false;
@@ -313,20 +314,21 @@ public class NCUdfApiServlet extends AbstractNCUdfServlet {
         }
     }
 
-    protected static void rejectForbidden(IServletResponse response) {
-        response.setStatus(HttpResponseStatus.FORBIDDEN);
-        response.writer().write("{ \"error\": \"Forbidden\" }");
+    protected void rejectForbidden(IServletResponse response) throws IOException {
+        // TODO: why this JSON format, do we use this anywhere else?
+        sendError(response, HttpUtil.ContentType.APPLICATION_JSON, HttpResponseStatus.FORBIDDEN,
+                "{ \"error\": \"Forbidden\" }");
     }
 
     @Override
-    protected void post(IServletRequest request, IServletResponse response) {
+    protected void post(IServletRequest request, IServletResponse response) throws IOException {
         if (isRequestPermittedForWrite(request, response)) {
             handleModification(request, response, LibraryOperation.UPSERT);
         }
     }
 
     @Override
-    protected void delete(IServletRequest request, IServletResponse response) {
+    protected void delete(IServletRequest request, IServletResponse response) throws IOException {
         if (isRequestPermittedForWrite(request, response)) {
             handleModification(request, response, LibraryOperation.DELETE);
         }
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index eb6c779..f7da31d 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -1248,8 +1248,8 @@ public class QueryTranslator extends AbstractLangTranslator implements IStatemen
                                 // allow overriding the type of the closed-field only if CAST modifier is used
                                 if (!stmtCreateIndex.hasCastDefaultNull()) {
                                     throw new CompilationException(ErrorCode.COMPILATION_ERROR,
-                                            indexedElement.getSourceLocation(), "Typed index on \"" + projectPath
-                                                    + "\" field could be created only for open datatype");
+                                            indexedElement.getSourceLocation(), "Typed index on '" + projectPath
+                                                    + "' field could be created only for open datatype");
                                 }
                             }
                         }
@@ -1631,9 +1631,9 @@ public class QueryTranslator extends AbstractLangTranslator implements IStatemen
                             && !existingIndexKeyFieldTypes.equals(indexKeyFieldTypes)) {
                         throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
                                 "Cannot create index " + index.getIndexName() + " , enforced index "
-                                        + existingIndex.getIndexName() + " on field \""
-                                        + StringUtils.join(indexKeyFieldNames, ',')
-                                        + "\" is already defined with type \"" + existingIndexKeyFieldTypes + "\"");
+                                        + existingIndex.getIndexName() + " on field '"
+                                        + StringUtils.join(indexKeyFieldNames, ',') + "' is already defined with type '"
+                                        + existingIndexKeyFieldTypes + "'");
                     }
                 }
             }
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java
index f83ddb2..091fc20 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java
@@ -227,7 +227,7 @@ public class ResultExtractor {
             final String fieldName = fieldNameIter.next();
             final ResultField fieldKind = ResultField.ofFieldName(fieldName.split("-")[0]);
             if (fieldKind == null) {
-                throw new AsterixException("Unanticipated field \"" + fieldName + "\"");
+                throw new AsterixException("Unanticipated field '" + fieldName + "'");
             }
             if (!resultFields.contains(fieldKind)) {
                 continue;
diff --git a/asterixdb/asterix-app/src/test/resources/metadata/testsuite.xml b/asterixdb/asterix-app/src/test/resources/metadata/testsuite.xml
index dc6ae3d..e642922 100644
--- a/asterixdb/asterix-app/src/test/resources/metadata/testsuite.xml
+++ b/asterixdb/asterix-app/src/test/resources/metadata/testsuite.xml
@@ -498,7 +498,7 @@
     <test-case FilePath="exception">
       <compilation-unit name="issue_255_create_dataset_error_1">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1014: Field "name" is not found (in line 34, at column 1)</expected-error>
+        <expected-error>ASX1014: Field 'name' is not found (in line 34, at column 1)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
@@ -511,56 +511,56 @@
     <test-case FilePath="exception">
       <compilation-unit name="issue_255_create_feed_error">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>org.json.JSONException: JSONObject["summary"] not found</expected-error>
+        <expected-error>org.json.JSONException: JSONObject['summary'] not found</expected-error>
       </compilation-unit>
     </test-case> -->
     <!-- This case should be fixed to return a proper message rather than NPE -->
     <test-case FilePath="exception">
       <compilation-unit name="issue_266_create_dataset_error_1">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1014: Field "point" is not found (in line 34, at column 1)</expected-error>
+        <expected-error>ASX1014: Field 'point' is not found (in line 34, at column 1)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_266_create_dataset_error_2">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1021: The primary key field "id" cannot be nullable (in line 34, at column 1)</expected-error>
+        <expected-error>ASX1021: The primary key field 'id' cannot be nullable (in line 34, at column 1)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_384_create_index_error_1">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the BTree index. (in line 37, at column 33)</expected-error>
+        <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the BTree index. (in line 37, at column 33)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_384_create_index_error_2">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1079: Compilation error: The field "[age]" which is of type integer cannot be indexed using the RTree index. (in line 37, at column 33)</expected-error>
+        <expected-error>ASX1079: Compilation error: The field '[age]' which is of type integer cannot be indexed using the RTree index. (in line 37, at column 33)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_384_create_index_error_3">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the Length Partitioned Keyword index. (in line 37, at column 33)</expected-error>
+        <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the Length Partitioned Keyword index. (in line 37, at column 33)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_384_create_index_error_4">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the Length Partitioned Keyword index. (in line 37, at column 33)</expected-error>
+        <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the Length Partitioned Keyword index. (in line 37, at column 33)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_384_create_index_error_5">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the Length Partitioned N-Gram index. (in line 37, at column 33)</expected-error>
+        <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the Length Partitioned N-Gram index. (in line 37, at column 33)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_384_create_index_error_6">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the Length Partitioned N-Gram index. (in line 37, at column 33)</expected-error>
+        <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the Length Partitioned N-Gram index. (in line 37, at column 33)</expected-error>
       </compilation-unit>
     </test-case>
   </test-group>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml
index 2675c40..bf48a7b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml
@@ -111,7 +111,7 @@
     <compilation-unit name="no_fieldname_constr">
       <output-dir compare="Text">no_fieldname_constr</output-dir>
       <expected-warn>Encountered a cross product join (in line 27, at column 22)</expected-warn>
-      <expected-warn>Duplicate field name "a" (in line 31, at column 24)</expected-warn>
+      <expected-warn>Duplicate field name 'a' (in line 31, at column 24)</expected-warn>
     </compilation-unit>
   </test-case>
   <test-case FilePath="objects">
@@ -199,7 +199,7 @@
   <test-case FilePath="objects" check-warnings="true">
     <compilation-unit name="closed-closed-fieldname-conflict_issue173">
       <output-dir compare="Text">closed-closed-fieldname-conflict_issue173</output-dir>
-      <expected-warn>Duplicate field name "name" (in line 30, at column 16)</expected-warn>
+      <expected-warn>Duplicate field name 'name' (in line 30, at column 16)</expected-warn>
     </compilation-unit>
   </test-case>
   <test-case FilePath="objects" check-warnings="true">
@@ -227,15 +227,15 @@
   <test-case FilePath="objects" check-warnings="true">
     <compilation-unit name="object_duplicate_fields">
       <output-dir compare="Text">object_duplicate_fields</output-dir>
-      <expected-warn>Duplicate field name "name" (in line 27, at column 1)</expected-warn>
-      <expected-warn>Duplicate field name "Name" (in line 29, at column 1)</expected-warn>
-      <expected-warn>Duplicate field name "name" (in line 31, at column 1)</expected-warn>
-      <expected-warn>Duplicate field name "name" (in line 22, at column 30)</expected-warn>
-      <expected-warn>Duplicate field name "id" (in line 22, at column 56)</expected-warn>
-      <expected-warn>Duplicate field name "f1" (in line 22, at column 70)</expected-warn>
-      <expected-warn>Duplicate field name "id" (in line 22, at column 56)</expected-warn>
-      <expected-warn>Duplicate field name "f1" (in line 22, at column 83)</expected-warn>
-      <expected-warn>Duplicate field name "fname1" (in line 25, at column 45)</expected-warn>
+      <expected-warn>Duplicate field name 'name' (in line 27, at column 1)</expected-warn>
+      <expected-warn>Duplicate field name 'Name' (in line 29, at column 1)</expected-warn>
+      <expected-warn>Duplicate field name 'name' (in line 31, at column 1)</expected-warn>
+      <expected-warn>Duplicate field name 'name' (in line 22, at column 30)</expected-warn>
+      <expected-warn>Duplicate field name 'id' (in line 22, at column 56)</expected-warn>
+      <expected-warn>Duplicate field name 'f1' (in line 22, at column 70)</expected-warn>
+      <expected-warn>Duplicate field name 'id' (in line 22, at column 56)</expected-warn>
+      <expected-warn>Duplicate field name 'f1' (in line 22, at column 83)</expected-warn>
+      <expected-warn>Duplicate field name 'fname1' (in line 25, at column 45)</expected-warn>
     </compilation-unit>
   </test-case>
 </test-group>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson
index f444fa1..ad95b7b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson
@@ -1,6 +1,6 @@
 {
 	"errors": [{ 
-		"code": 1,		"msg": "ASX0047: Invalid value for parameter \"format\": foo"	} 
+		"code": 1,		"msg": "ASX0047: Invalid value for parameter 'format': foo"	}
 	],
 	"status": "fatal",
 	"metrics": {
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm
index d67e7a1..519019a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm
@@ -23,7 +23,7 @@
 \s*\Q"warnings": [{\E\s*
 \s*\Q"code": 1,\E\s*\Q"msg": "ASX1107: Unexpected hint: hint. None expected at this location\E[^}]+\Q}\E\s*
 \s*\Q,{\E\s*
-\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name \"a\"\E[^}]+\Q}\E\s*
+\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name 'a'\E[^}]+\Q}\E\s*
 \s*\Q,{\E\s*
 \s*\Q"code": 1,\E\s*\Q"msg": "ASX0002: Type mismatch: function isbitset expects its 2nd input parameter to be of type bigint or array, but the actual input type is string\E[^}]+\Q}\E\s*
 \s*\Q],\E
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm
index 64a3bde..5eeb3df 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm
@@ -6,7 +6,7 @@
 \s*\Q"results": [ {\E.*warnings\Q": [{\E\s*
 \s*\Q"code": 1,\E\s*\Q"msg": "ASX1107: Unexpected hint: hint. None expected at this location\E[^}]+\Q}\E\s*
 \s*\Q,{\E\s*
-\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name \"a\"\E[^}]+\Q}\E\s*
+\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name 'a'\E[^}]+\Q}\E\s*
 \s*\Q],\E
 \s*\Q"status": "success",\E
 \s*\Q"metrics": {\E
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm
index d67e7a1..519019a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm
@@ -23,7 +23,7 @@
 \s*\Q"warnings": [{\E\s*
 \s*\Q"code": 1,\E\s*\Q"msg": "ASX1107: Unexpected hint: hint. None expected at this location\E[^}]+\Q}\E\s*
 \s*\Q,{\E\s*
-\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name \"a\"\E[^}]+\Q}\E\s*
+\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name 'a'\E[^}]+\Q}\E\s*
 \s*\Q,{\E\s*
 \s*\Q"code": 1,\E\s*\Q"msg": "ASX0002: Type mismatch: function isbitset expects its 2nd input parameter to be of type bigint or array, but the actual input type is string\E[^}]+\Q}\E\s*
 \s*\Q],\E
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml
index 2e1a6bf..ae3b2aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml
@@ -218,28 +218,28 @@
       <compilation-unit name="common/include-exclude/bad-name-1">
         <placeholder name="adapter" value="AZUREBLOB" />
         <output-dir compare="Text">common/include-exclude/bad-name-1</output-dir>
-        <expected-error>Invalid format for property "exclude1"</expected-error>
+        <expected-error>Invalid format for property 'exclude1'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
       <compilation-unit name="common/include-exclude/bad-name-2">
         <placeholder name="adapter" value="AZUREBLOB" />
         <output-dir compare="Text">common/include-exclude/bad-name-2</output-dir>
-        <expected-error>Invalid format for property "exclude#"</expected-error>
+        <expected-error>Invalid format for property 'exclude#'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
       <compilation-unit name="common/include-exclude/bad-name-3">
         <placeholder name="adapter" value="AZUREBLOB" />
         <output-dir compare="Text">common/include-exclude/bad-name-3</output-dir>
-        <expected-error>Invalid format for property "exclude#hello"</expected-error>
+        <expected-error>Invalid format for property 'exclude#hello'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
       <compilation-unit name="common/include-exclude/both">
         <placeholder name="adapter" value="AZUREBLOB" />
         <output-dir compare="Text">common/include-exclude/both</output-dir>
-        <expected-error>The parameters "include" and "exclude" cannot be provided at the same time</expected-error>
+        <expected-error>The parameters 'include' and 'exclude' cannot be provided at the same time</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
index a8786e2..12a8ae2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
@@ -305,28 +305,28 @@
       <compilation-unit name="common/include-exclude/bad-name-1">
         <placeholder name="adapter" value="S3" />
         <output-dir compare="Text">common/include-exclude/bad-name-1</output-dir>
-        <expected-error>Invalid format for property "exclude1"</expected-error>
+        <expected-error>Invalid format for property 'exclude1'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
       <compilation-unit name="common/include-exclude/bad-name-2">
         <placeholder name="adapter" value="S3" />
         <output-dir compare="Text">common/include-exclude/bad-name-2</output-dir>
-        <expected-error>Invalid format for property "exclude#"</expected-error>
+        <expected-error>Invalid format for property 'exclude#'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
       <compilation-unit name="common/include-exclude/bad-name-3">
         <placeholder name="adapter" value="S3" />
         <output-dir compare="Text">common/include-exclude/bad-name-3</output-dir>
-        <expected-error>Invalid format for property "exclude#hello"</expected-error>
+        <expected-error>Invalid format for property 'exclude#hello'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
       <compilation-unit name="common/include-exclude/both">
         <placeholder name="adapter" value="S3" />
         <output-dir compare="Text">common/include-exclude/both</output-dir>
-        <expected-error>The parameters "include" and "exclude" cannot be provided at the same time</expected-error>
+        <expected-error>The parameters 'include' and 'exclude' cannot be provided at the same time</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml
index 7667bb4..b922fe4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml
@@ -72,7 +72,7 @@
         <expected-error>ASX3042: Unsupported function language badType</expected-error>
         <expected-error>ASX1117: Cannot find library with name testlib</expected-error>
         <expected-error>ASX0049: Parameter(s) type must be specified</expected-error>
-        <expected-error>ASX0047: Invalid value for parameter \"data\": Attribute</expected-error>
+        <expected-error>ASX0047: Invalid value for parameter 'data': Attribute</expected-error>
         <expected-error>ASX0049: Parameter(s) data must be specified</expected-error>
       </compilation-unit>
     </test-case>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 0bfbcf2..0b98369 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -62,31 +62,31 @@
     <test-case FilePath="api">
       <compilation-unit name="request-param-validation">
         <output-dir compare="Text">request-param-validation</output-dir>
-        <expected-error>Invalid value for parameter "format": foo</expected-error>
-        <expected-error>Invalid value for parameter "pretty": bar</expected-error>
-        <expected-error>Invalid value for parameter "plan-format": blah</expected-error>
-        <expected-error>Invalid value for parameter "max-result-reads": foo</expected-error>
-        <expected-error>Invalid value for parameter "max-result-reads": 9999999999999999999999999999999999999999</expected-error>
-        <expected-error>Invalid value for parameter "max-warnings": baz</expected-error>
-        <expected-error>Invalid value for parameter "max-warnings": 1.5</expected-error>
-        <expected-error>Invalid value for parameter "mode": asyn</expected-error>
-        <expected-error>Invalid value for parameter "timeout": 12</expected-error>
-        <expected-error>Invalid value for parameter "args": 12</expected-error>
+        <expected-error>Invalid value for parameter 'format': foo</expected-error>
+        <expected-error>Invalid value for parameter 'pretty': bar</expected-error>
+        <expected-error>Invalid value for parameter 'plan-format': blah</expected-error>
+        <expected-error>Invalid value for parameter 'max-result-reads': foo</expected-error>
+        <expected-error>Invalid value for parameter 'max-result-reads': 9999999999999999999999999999999999999999</expected-error>
+        <expected-error>Invalid value for parameter 'max-warnings': baz</expected-error>
+        <expected-error>Invalid value for parameter 'max-warnings': 1.5</expected-error>
+        <expected-error>Invalid value for parameter 'mode': asyn</expected-error>
+        <expected-error>Invalid value for parameter 'timeout': 12</expected-error>
+        <expected-error>Invalid value for parameter 'args': 12</expected-error>
         <expected-error>Unable to process JSON content in request</expected-error>
         <expected-error>Unable to process JSON content in request</expected-error>
-        <expected-error>Invalid value for parameter "format": foo</expected-error>
-        <expected-error>Invalid value for parameter "pretty": bar</expected-error>
-        <expected-error>Invalid value for parameter "plan-format": blah</expected-error>
-        <expected-error>Invalid value for parameter "max-result-reads": foo</expected-error>
-        <expected-error>Invalid value for parameter "max-warnings": baz</expected-error>
-        <expected-error>Invalid value for parameter "mode": asyn</expected-error>
-        <expected-error>Invalid value for parameter "args": 12</expected-error>
+        <expected-error>Invalid value for parameter 'format': foo</expected-error>
+        <expected-error>Invalid value for parameter 'pretty': bar</expected-error>
+        <expected-error>Invalid value for parameter 'plan-format': blah</expected-error>
+        <expected-error>Invalid value for parameter 'max-result-reads': foo</expected-error>
+        <expected-error>Invalid value for parameter 'max-warnings': baz</expected-error>
+        <expected-error>Invalid value for parameter 'mode': asyn</expected-error>
+        <expected-error>Invalid value for parameter 'args': 12</expected-error>
         <expected-error>Unable to process JSON content in request</expected-error>
         <expected-error>Unable to process JSON content in request</expected-error>
-        <expected-error>Invalid value for parameter "profile": true</expected-error>
-        <expected-error>Invalid value for parameter "profile": true</expected-error>
-        <expected-error>Invalid value for parameter "profile": foo</expected-error>
-        <expected-error>Invalid value for parameter "profile": foo</expected-error>
+        <expected-error>Invalid value for parameter 'profile': true</expected-error>
+        <expected-error>Invalid value for parameter 'profile': true</expected-error>
+        <expected-error>Invalid value for parameter 'profile': foo</expected-error>
+        <expected-error>Invalid value for parameter 'profile': foo</expected-error>
         <source-location>false</source-location>
       </compilation-unit>
     </test-case>
@@ -232,21 +232,21 @@
     <test-case FilePath="flwor" check-warnings="true">
       <compilation-unit name="query-ASTERIXDB-2446">
         <output-dir compare="Text">query-ASTERIXDB-2446</output-dir>
-        <expected-error>ASX0013: Duplicate field name "a"</expected-error>
-        <expected-warn>Duplicate field name "c" (in line 28, at column 84)</expected-warn>
-        <expected-warn>Duplicate field name "e" (in line 28, at column 116)</expected-warn>
+        <expected-error>ASX0013: Duplicate field name 'a'</expected-error>
+        <expected-warn>Duplicate field name 'c' (in line 28, at column 84)</expected-warn>
+        <expected-warn>Duplicate field name 'e' (in line 28, at column 116)</expected-warn>
       </compilation-unit>
     </test-case>
     <test-case FilePath="flwor">
       <compilation-unit name="query-ASTERIXDB-2446-2">
         <output-dir compare="Text">query-ASTERIXDB-883</output-dir>
-        <expected-error>ASX0013: Duplicate field name "a" (in line 27, at column 20)</expected-error>
-        <expected-error>ASX0013: Duplicate field name "b" (in line 27, at column 20)</expected-error>
-        <expected-error>ASX0013: Duplicate field name "c" (in line 27, at column 11)</expected-error>
-        <expected-error>ASX0013: Duplicate field name "d" (in line 27, at column 11)</expected-error>
-        <expected-error>ASX0013: Duplicate field name "e" (in line 27, at column 14)</expected-error>
-        <expected-error>ASX0013: Duplicate field name "f" (in line 27, at column 11)</expected-error>
-        <expected-error>ASX0013: Duplicate field name "g" (in line 27, at column 11)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'a' (in line 27, at column 20)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'b' (in line 27, at column 20)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'c' (in line 27, at column 11)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'd' (in line 27, at column 11)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'e' (in line 27, at column 14)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'f' (in line 27, at column 11)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'g' (in line 27, at column 11)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="flwor">
@@ -4158,7 +4158,7 @@
       <compilation-unit name="bad-type-ddl">
         <output-dir compare="Text">none</output-dir>
         <expected-error>ASX1079: Compilation error: Reserved type name $x</expected-error>
-        <expected-error>ASX0013: Duplicate field name "c" (in line 29, at column 19)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'c' (in line 29, at column 19)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
@@ -4172,13 +4172,13 @@
         <expected-error>ASX1082: Cannot find datatype with name test.$d$t$i$Cust1</expected-error>
         <expected-error>ASX1082: Cannot find datatype with name test.$d$t$i$Cust2</expected-error>
         <expected-error>ASX1082: Cannot find datatype with name my_unknown_type</expected-error>
-        <expected-error>ASX0013: Duplicate field name "c_name" (in line 25, at column 22)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'c_name' (in line 25, at column 22)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="drop-primary-index">
         <output-dir compare="Text">drop-primary-index</output-dir>
-        <expected-error>Cannot drop index "ds". Drop dataset "ds" to remove this index</expected-error>
+        <expected-error>Cannot drop index 'ds'. Drop dataset 'ds' to remove this index</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl" check-warnings="true">
@@ -4197,89 +4197,89 @@
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-dataverse-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error>
         <expected-error>ASX1079: Compilation error: Invalid operation - Cannot create dataverse: asterix</expected-error>
         <expected-error>ASX1079: Compilation error: Invalid operation - Cannot create dataverse: algebricks</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "" (in line 24, at column 16)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 27, at column 16)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: '' (in line 24, at column 16)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 27, at column 16)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-dataset-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 16)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 31, at column 14)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 16)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 31, at column 14)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-feed-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 34, at column 13)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 42, at column 11)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 34, at column 13)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 42, at column 11)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-feed-policy-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 1)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 32, at column 23)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 1)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 32, at column 23)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-index-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 19)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 33, at column 12)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 19)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 33, at column 12)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-nodegroup-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-type-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 13)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 33, at column 11)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 13)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 33, at column 11)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-udf-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 17)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 33, at column 15)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 17)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 33, at column 15)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-view-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: "" (in line 29, at column 1)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a" (in line 29, at column 1)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid" (in line 29, at column 1)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 13)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 32, at column 11)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: '' (in line 29, at column 1)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a' (in line 29, at column 1)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid' (in line 29, at column 1)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 13)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 32, at column 11)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
@@ -4328,7 +4328,7 @@
         <expected-error>CAST modifier is only allowed for B-Tree indexes</expected-error>
         <expected-error>CAST modifier cannot be specified together with ENFORCED</expected-error>
         <expected-error>CAST modifier is used without specifying the type of the indexed field</expected-error>
-        <expected-error>Typed index on "[typed_f2]" field could be created only for open datatype</expected-error>
+        <expected-error>Typed index on '[typed_f2]' field could be created only for open datatype</expected-error>
         <expected-error>Parameter invalid_date cannot be set</expected-error>
       </compilation-unit>
     </test-case>
@@ -4592,8 +4592,8 @@
     <test-case FilePath="dml">
       <compilation-unit name="load-with-autogenerated-no-field">
         <output-dir compare="Text">load-with-autogenerated-no-field</output-dir>
-        <expected-error>ASX1014: Field "not_id" is not found</expected-error>
-        <expected-error>ASX1014: Field "not_id" is not found</expected-error>
+        <expected-error>ASX1014: Field 'not_id' is not found</expected-error>
+        <expected-error>ASX1014: Field 'not_id' is not found</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="dml">
@@ -5110,8 +5110,8 @@
     <test-case FilePath="dml">
       <compilation-unit name="load-with-autogenerated-no-field">
         <output-dir compare="Text">load-with-autogenerated-no-field</output-dir>
-        <expected-error>ASX1014: Field "not_id" is not found</expected-error>
-        <expected-error>ASX1014: Field "not_id" is not found</expected-error>
+        <expected-error>ASX1014: Field 'not_id' is not found</expected-error>
+        <expected-error>ASX1014: Field 'not_id' is not found</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="dml">
@@ -6985,7 +6985,7 @@
     <test-case FilePath="misc">
       <compilation-unit name="partition-by-nonexistent-field">
         <output-dir compare="Text">partition-by-nonexistent-field</output-dir>
-        <expected-error>Field "id" is not found</expected-error>
+        <expected-error>Field 'id' is not found</expected-error>
         <expected-error>Cannot find dataset with name testds in dataverse test</expected-error>
         <expected-error>Cannot find dataset testds in dataverse test nor an alias with name testds</expected-error>
       </compilation-unit>
@@ -7274,7 +7274,7 @@
       <test-case FilePath="index/validations">
         <compilation-unit name="repetitive-keys">
           <output-dir compare="Text">repetitive-keys</output-dir>
-          <expected-error>Cannot create index with the same field "[value]" specified more than once.</expected-error>
+          <expected-error>Cannot create index with the same field '[value]' specified more than once.</expected-error>
         </compilation-unit>
       </test-case>
     </test-group>
@@ -7284,13 +7284,13 @@
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="enforced-field-name-collision">
           <output-dir compare="Text">enforced-field-name-collision</output-dir>
-          <expected-error>Cannot create enforced index on "[value]" field. The field is closed type.</expected-error>
+          <expected-error>Cannot create enforced index on '[value]' field. The field is closed type.</expected-error>
         </compilation-unit>
       </test-case>
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="enforced-field-type-collision">
           <output-dir compare="Text">enforced-field-type-collision</output-dir>
-          <expected-error>Cannot create enforced index on "[value]" field. The field is closed type.</expected-error>
+          <expected-error>Cannot create enforced index on '[value]' field. The field is closed type.</expected-error>
         </compilation-unit>
       </test-case>
       <test-case FilePath="open-index-enforced/error-checking">
@@ -7302,31 +7302,31 @@
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="missing-optionality">
           <output-dir compare="Text">missing-optionality</output-dir>
-          <expected-error>Cannot create enforced index on "[value]" field with non-optional type</expected-error>
+          <expected-error>Cannot create enforced index on '[value]' field with non-optional type</expected-error>
         </compilation-unit>
       </test-case>
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="index-on-closed-type">
           <output-dir compare="Text">index-on-closed-type</output-dir>
-          <expected-error>ASX1014: Field "value" is not found (in line 33, at column 34)</expected-error>
+          <expected-error>ASX1014: Field 'value' is not found (in line 33, at column 34)</expected-error>
         </compilation-unit>
       </test-case>
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="index-type-collision">
           <output-dir compare="Text">index-type-collision</output-dir>
-          <expected-error>Cannot create index testIdx2 , enforced index testIdx1 on field "[value]" is already defined with type "[integer]"</expected-error>
+          <expected-error>Cannot create index testIdx2 , enforced index testIdx1 on field '[value]' is already defined with type '[integer]'</expected-error>
         </compilation-unit>
       </test-case>
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="index-type-promotion-collision">
           <output-dir compare="Text">index-type-promotion-collision</output-dir>
-          <expected-error>Cannot create index testIdx2 , enforced index testIdx1 on field "[value]" is already defined with type "[bigint]"</expected-error>
+          <expected-error>Cannot create index testIdx2 , enforced index testIdx1 on field '[value]' is already defined with type '[bigint]'</expected-error>
         </compilation-unit>
       </test-case>
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="object-type-collision">
           <output-dir compare="Text">object-type-collision</output-dir>
-          <expected-error>ASX1051: Cannot create enforced index on "[value]" field. The field is closed type.</expected-error>
+          <expected-error>ASX1051: Cannot create enforced index on '[value]' field. The field is closed type.</expected-error>
         </compilation-unit>
       </test-case>
     </test-group>
@@ -8142,7 +8142,7 @@
       <test-case FilePath="array-index/error-handling">
         <compilation-unit name="index-on-closed-array">
           <output-dir compare="Text">index-on-closed-array</output-dir>
-          <expected-error>ASX1014: Field "date" is not found</expected-error>
+          <expected-error>ASX1014: Field 'date' is not found</expected-error>
           <source-location>false</source-location>
         </compilation-unit>
       </test-case>
@@ -8587,7 +8587,7 @@
     <test-case FilePath="nestrecords">
       <compilation-unit name="nested-optional-pk">
         <output-dir compare="Text">nested-optional-pk</output-dir>
-        <expected-error>ASX1021: The primary key field "nested.id" cannot be nullable</expected-error>
+        <expected-error>ASX1021: The primary key field 'nested.id' cannot be nullable</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="nestrecords">
@@ -9660,13 +9660,13 @@
     <!-- Fail sporadically        <test-case FilePath="range-hints">
             <compilation-unit name="order-by-exception_01">
                 <output-dir compare="Text">order-by</output-dir>
-                <expected-error>org.json.JSONException: JSONObject["summary"] not found</expected-error>
+                <expected-error>org.json.JSONException: JSONObject['summary'] not found</expected-error>
             </compilation-unit>
         </test-case>
         <test-case FilePath="range-hints">
             <compilation-unit name="order-by-exception_02">
                 <output-dir compare="Text">order-by</output-dir>
-                <expected-error>org.json.JSONException: JSONObject["summary"] not found</expected-error>
+                <expected-error>org.json.JSONException: JSONObject['summary'] not found</expected-error>
             </compilation-unit>
         </test-case> -->
   </test-group>
@@ -10535,8 +10535,8 @@
     <test-case FilePath="string">
       <compilation-unit name="like_03_negative">
         <output-dir compare="Text">like_03_negative</output-dir>
-        <expected-error>Invalid pattern "__\c" for LIKE (in line 21, at column 11)</expected-error>
-        <expected-error>Invalid pattern "%\" for LIKE (in line 21, at column 18)</expected-error>
+        <expected-error>Invalid pattern '__\c' for LIKE (in line 21, at column 11)</expected-error>
+        <expected-error>Invalid pattern '%\' for LIKE (in line 21, at column 18)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="string">
@@ -13422,10 +13422,10 @@
         <expected-error><![CDATA[ASX1001: Syntax error: In line 25 >>create view test.v1(r bigint, a [bigint]) default null as<< Encountered "[" at column 33]]></expected-error>
         <expected-error>ASX1092: Parameter date_illegal_property_name cannot be set (in line 25, at column 1)</expected-error>
         <expected-error><![CDATA[ASX1001: Syntax error: In line 25 >>create view test.v1(r bigint) as<< Encountered "as" at column 31]]></expected-error>
-        <expected-error><![CDATA[ASX1014: Field "unknown_field" is not found (in line 25, at column 1)]]></expected-error>
-        <expected-error><![CDATA[ASX1014: Field "unknown_field_2" is not found (in line 25, at column 1)]]></expected-error>
+        <expected-error><![CDATA[ASX1014: Field 'unknown_field' is not found (in line 25, at column 1)]]></expected-error>
+        <expected-error><![CDATA[ASX1014: Field 'unknown_field_2' is not found (in line 25, at column 1)]]></expected-error>
         <expected-error><![CDATA[ASX1001: Syntax error: In line 28 >>  as select r from range(1,2) r;<< Encountered "as" at column 3]]></expected-error>
-        <expected-error><![CDATA[ASX0013: Duplicate field name "r" (in line 25, at column 20)]]></expected-error>
+        <expected-error><![CDATA[ASX0013: Duplicate field name 'r' (in line 25, at column 20)]]></expected-error>
         <expected-error><![CDATA[ASX1167: Cannot change primary key of view test1.employee_v1 (in line 38, at column 1)]]></expected-error>
         <expected-error><![CDATA[ASX1162: Invalid primary key definition (in line 25, at column 1)]]></expected-error>
         <expected-error><![CDATA[ASX1162: Invalid primary key definition (in line 26, at column 1)]]></expected-error>
@@ -15303,14 +15303,14 @@
     <test-case FilePath="ddl-with-clause">
       <compilation-unit name="missing-non-optional">
         <output-dir compare="Text">missing-non-optional</output-dir>
-        <expected-error>ASX1061: Field "merge-policy.name" in the with clause cannot be null or missing</expected-error>
+        <expected-error>ASX1061: Field 'merge-policy.name' in the with clause cannot be null or missing</expected-error>
         <source-location>false</source-location>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl-with-clause">
       <compilation-unit name="type-mismatch">
         <output-dir compare="Text">type-mismatch</output-dir>
-        <expected-error>ASX1060: Field "merge-policy.parameters.max-mergable-component-size" in the with clause must be of type bigint, but found string</expected-error>
+        <expected-error>ASX1060: Field 'merge-policy.parameters.max-mergable-component-size' in the with clause must be of type bigint, but found string</expected-error>
         <source-location>false</source-location>
       </compilation-unit>
     </test-case>
@@ -15324,7 +15324,7 @@
     <test-case FilePath="ddl-with-clause">
       <compilation-unit name="unsupported-subfield">
         <output-dir compare="Text">unsupported-subfield</output-dir>
-        <expected-error>ASX1097: Subfield(s) [unknown-subfield] in "merge-policy" unsupported in the with clause</expected-error>
+        <expected-error>ASX1097: Subfield(s) [unknown-subfield] in 'merge-policy' unsupported in the with clause</expected-error>
         <source-location>false</source-location>
       </compilation-unit>
     </test-case>
diff --git a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
index faaf8d5..f5ef79d 100644
--- a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
+++ b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
@@ -37,7 +37,7 @@
 3,1003 = Type incompatibility: function %1$s gets incompatible input values: %2$s and %3$s
 4,1004 = Unsupported type: %1$s cannot process input type %2$s
 5,1005 = Invalid item type: function %1$s cannot process item type %2$s in an input array (or multiset)
-13,1006 = Duplicate field name \"%1$s\"
+13,1006 = Duplicate field name '%1$s'
 1009 = A returning expression cannot contain dataset access
 37,1091 = Type mismatch: expected value of type %1$s, but got the value of type %2$s
 51 = Incomparable input types: %1$s and %2$s
@@ -64,7 +64,7 @@
 25 = Polygon must have at least 3 points
 26 = %1$s can not be an instance of polygon
 27 = Operation not supported
-28 = Invalid duration \"%1$s\"
+28 = Invalid duration '%1$s'
 29 = Unknown duration unit %1$s
 30 = Request timed out and will be cancelled
 31 = Invalid type-casting math function: %1$s for converting %2$s to %3$s
@@ -76,15 +76,15 @@
 39 = Expected integer value, got %1$s
 40 = No statement provided
 41 = Request %1$s has been cancelled
-42 = %1$s: \"%2$s\" is not a TPC-DS table name
+42 = %1$s: '%2$s' is not a TPC-DS table name
 43 = Value out of range, function %1$s expects its %2$s input parameter value to be between %3$s and %4$s, received %5$s
 44 = %1$s statement is not supported in read-only mode
 45 = Invalid value: function %1$s expects its %2$s input parameter to be an integer value, got %3$s
-46 = Invalid pattern \"%1$s\" for LIKE
-47 = Invalid value for parameter \"%1$s\": %2$s
+46 = Invalid pattern '%1$s' for LIKE
+47 = Invalid value for parameter '%1$s': %2$s
 48 = Unable to process JSON content in request
 49 = Parameter(s) %1$s must be specified
-50 = Invalid parameter \"%1$s\"
+50 = Invalid parameter '%1$s'
 #51 is used
 52 = Illegal state. %1$s
 53 = Unsupported Parquet type '%1$s'
@@ -107,14 +107,14 @@
 1011 = Unknown dataset type %1$s
 1012 = Unknown index type %1$s
 1013 = Cannot use %1$s fields as a key for the %2$s index. The index can only support keys of size %3$s
-1014 = Field \"%1$s\" is not found
-1015 = Index of type %1$s is not supported for dataset \"%2$s\" since it has composite primary keys
+1014 = Field '%1$s' is not found
+1015 = Index of type %1$s is not supported for dataset '%2$s' since it has composite primary keys
 1016 = Index of type %1$s is not supported for dataset of type %2$s
-1017 = The filter field \"%1$s\" cannot be an optional field
+1017 = The filter field '%1$s' cannot be an optional field
 1018 = Field of type %1$s cannot be used as a filter field
 1019 = Cannot autogenerate a composite %1$s key
 1020 = Cannot autogenerate a %1$s key for %1$s key of type %2$s. Autogenerated %1$s keys must be of type %3$s
-1021 = The %1$s key field \"%2$s\" cannot be nullable
+1021 = The %1$s key field '%2$s' cannot be nullable
 1022 = Field of type %1$s cannot be used as a %2$s key field
 1023 = Cannot drop dataset %1$s since it is connected to active entity: %2$s
 #1024 is no longer used
@@ -134,7 +134,7 @@
 1038 = Illegal state. %1$s
 1039 = Two-phase locking violation -- locks can not be acquired after unlocking
 1040 = Dataset id space is exhausted
-1041 = Cannot create enforced index on \"%1$s\" field with non-optional type
+1041 = Cannot create enforced index on '%1$s' field with non-optional type
 1042 = Cannot create non-enforced typed index of this kind: %1$s
 1043 = Cannot use %1$s fields as key for the R-tree index. There can be only one field as a key for the R-tree index.
 1044 = Communication-related exception occurred during the execution of a remote method call
@@ -144,8 +144,8 @@
 1048 = Metadata lock cannot be downgraded! because it was not acquired before
 1049 = Metadata lock cannot be acquired for %1$s since it is already acquired for %2$s
 1050 = Cannot find dataset with name %1$s in dataverse %2$s
-1051 = Cannot create enforced index on \"%1$s\" field. The field is closed type.
-1052 = Cannot create index with the same field \"%1$s\" specified more than once.
+1051 = Cannot create enforced index on '%1$s' field. The field is closed type.
+1052 = Cannot create index with the same field '%1$s' specified more than once.
 1053 = Cannot create primary index on external dataset.
 1054 = Compilation failed due to some problem in the query plan.
 1055 = Incompatible implementation language %1$s for function %2$s. Expected language %3$s.
@@ -153,8 +153,8 @@
 1057 = Expression of type %1$s is not supported in constant record
 1058 = Literal of type %1$s is not supported in constant record
 1059 = Field(s) %1$s unsupported in the with clause
-1060 = Field \"%1$s\" in the with clause must be of type %2$s, but found %3$s
-1061 = Field \"%1$s\" in the with clause cannot be null or missing
+1060 = Field '%1$s' in the with clause must be of type %2$s, but found %3$s
+1061 = Field '%1$s' in the with clause cannot be null or missing
 1062 = Configuration parameter cannot be of type %1$s
 1063 = Cannot find dataverse with name %1$s
 1064 = An error was occurred while converting type %1$s to type %2$s.
@@ -162,7 +162,7 @@
 1066 = Cannot serialize a value.
 1067 = Cannot find a non-missing SELECT operator in GROUP operator for a left-outer-join plan optimization.
 1068 = Cannot get the conditional split variable for the given UNNESTMAP operator.
-1069 = Cannot drop index \"%1$s\". Drop dataset \"%1$s\" to remove this index
+1069 = Cannot drop index '%1$s'. Drop dataset '%1$s' to remove this index
 1070 = Metadata error. %1$s
 1071 = A dataverse with this name %1$s already exists.
 1072 = A dataset with name %1$s already exists in dataverse %2$s
@@ -189,7 +189,7 @@
 1094 = Cannot parse range map: %1$s
 1095 = Expected function call
 1096 = Unknown compression scheme %1$s. Supported schemes are %2$s
-1097 = Subfield(s) %1$s in \"%2$s\" unsupported in the with clause
+1097 = Subfield(s) %1$s in '%2$s' unsupported in the with clause
 1098 = Invalid window frame definition
 1099 = Unexpected window frame definition
 1100 = Unexpected window expression
@@ -202,12 +202,12 @@
 1107 = Unexpected hint: %1$s. %2$s expected at this location
 1108 = External source error. %1$s
 1109 = External source container %1$s not found
-1110 = The parameters \"%1$s\" and \"%2$s\" cannot be provided at the same time
-1111 = Property \"%1$s\" expects value(s) of type %2$s
-1112 = Invalid format for property \"%1$s\"
+1110 = The parameters '%1$s' and '%2$s' cannot be provided at the same time
+1111 = Property '%1$s' expects value(s) of type %2$s
+1112 = Invalid format for property '%1$s'
 1113 = Invalid pattern %1$s
 1114 = The provided external dataset configuration returned no files from the external source
-1115 = Invalid name for a database object: \"%1$s\"
+1115 = Invalid name for a database object: '%1$s'
 1116 = Cannot find synonym with name %1$s
 1117 = Cannot find library with name %1$s
 1118 = Too many grouping sets in group by clause: %1$s. Maximum allowed: %2$s.
@@ -324,7 +324,7 @@
 3056 = Illegal escape '\%1$s'
 3057 = Found END_RECORD while expecting a record field.
 3058 = This record is closed, you can not add extra fields! new field name: %1$s
-3059 = Unexpected ADM token kind: %1$s while expecting ":"
+3059 = Unexpected ADM token kind: %1$s while expecting ':'
 3060 = Found COMMA %1$s %2$s record field
 3061 = Unsupported interval type: %1$s
 3062 = Interval was not closed
diff --git a/hyracks-fullstack/hyracks/hyracks-http/pom.xml b/hyracks-fullstack/hyracks/hyracks-http/pom.xml
index 466a447..e06f6be 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/pom.xml
+++ b/hyracks-fullstack/hyracks/hyracks-http/pom.xml
@@ -125,5 +125,10 @@
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.hyracks</groupId>
+      <artifactId>hyracks-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 </project>
\ No newline at end of file
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java
index ff23ac2..64a76f7 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java
@@ -26,6 +26,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.concurrent.ConcurrentMap;
 
+import org.apache.hyracks.api.exceptions.IFormattedException;
 import org.apache.hyracks.http.api.IServlet;
 import org.apache.hyracks.http.api.IServletRequest;
 import org.apache.hyracks.http.api.IServletResponse;
@@ -98,7 +99,7 @@ public abstract class AbstractServlet implements IServlet {
             } else if (HttpMethod.OPTIONS.equals(method)) {
                 options(request, response);
             } else {
-                notAllowed(method, response);
+                methodNotAllowed(method, response);
             }
         } catch (Exception e) {
             LOGGER.log(Level.WARN, "Unhandled exception", e);
@@ -113,21 +114,31 @@ public abstract class AbstractServlet implements IServlet {
     }
 
     protected void sendError(IServletResponse response, HttpResponseStatus status, String message) throws IOException {
+        sendError(response, HttpUtil.ContentType.TEXT_PLAIN, status, message);
+    }
+
+    protected void sendError(IServletResponse response, String contentType, HttpResponseStatus status, String message)
+            throws IOException {
         response.setStatus(status);
-        HttpUtil.setContentType(response, HttpUtil.ContentType.TEXT_PLAIN, StandardCharsets.UTF_8);
+        HttpUtil.setContentType(response, contentType, StandardCharsets.UTF_8);
         if (message != null) {
             response.writer().println(message);
         }
         if (LOGGER.isInfoEnabled()) {
-            LOGGER.info("sendError: status=" + status + ", message=" + message);
+            LOGGER.info("sendError: status={}, message={}", status, message);
         }
     }
 
+    protected void sendError(IServletResponse response, HttpResponseStatus status, IFormattedException ex)
+            throws IOException {
+        sendError(response, status, ex != null ? ex.getMessage() : null);
+    }
+
     protected void sendError(IServletResponse response, HttpResponseStatus status) throws IOException {
-        sendError(response, status, null);
+        sendError(response, status, status.reasonPhrase());
     }
 
-    protected void notAllowed(HttpMethod method, IServletResponse response) throws IOException {
+    protected void methodNotAllowed(HttpMethod method, IServletResponse response) throws IOException {
         sendError(response, HttpResponseStatus.METHOD_NOT_ALLOWED,
                 "Method " + method + " not allowed for the requested resource.");
     }
@@ -135,37 +146,37 @@ public abstract class AbstractServlet implements IServlet {
     @SuppressWarnings("squid:S1172")
     protected void get(IServletRequest request, IServletResponse response) throws Exception {
         // designed to be extended but an error in standard case
-        notAllowed(HttpMethod.GET, response);
+        methodNotAllowed(HttpMethod.GET, response);
     }
 
     @SuppressWarnings("squid:S1172")
     protected void head(IServletRequest request, IServletResponse response) throws Exception {
         // designed to be extended but an error in standard case
-        notAllowed(HttpMethod.HEAD, response);
+        methodNotAllowed(HttpMethod.HEAD, response);
     }
 
     @SuppressWarnings("squid:S1172")
     protected void post(IServletRequest request, IServletResponse response) throws Exception {
         // designed to be extended but an error in standard case
-        notAllowed(HttpMethod.POST, response);
+        methodNotAllowed(HttpMethod.POST, response);
     }
 
     @SuppressWarnings("squid:S1172")
     protected void put(IServletRequest request, IServletResponse response) throws Exception {
         // designed to be extended but an error in standard case
-        notAllowed(HttpMethod.PUT, response);
+        methodNotAllowed(HttpMethod.PUT, response);
     }
 
     @SuppressWarnings("squid:S1172")
     protected void delete(IServletRequest request, IServletResponse response) throws Exception {
         // designed to be extended but an error in standard case
-        notAllowed(HttpMethod.DELETE, response);
+        methodNotAllowed(HttpMethod.DELETE, response);
     }
 
     @SuppressWarnings("squid:S1172")
     protected void options(IServletRequest request, IServletResponse response) throws Exception {
         // designed to be extended but an error in standard case
-        notAllowed(HttpMethod.OPTIONS, response);
+        methodNotAllowed(HttpMethod.OPTIONS, response);
     }
 
     public String host(IServletRequest request) {