diff --git a/build.gradle b/build.gradle index 0ae9072..06823d5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ buildscript { repositories { - maven { url "http://repo1.maven.org/maven2" } - maven { url "http://developer.marklogic.com/maven2/" } + maven { url "https://repo1.maven.org/maven2" } + maven { url "https://developer.marklogic.com/maven2/" } } dependencies { @@ -14,7 +14,7 @@ buildscript { plugins { id "java" id "net.saliman.properties" version "1.4.6" - id "com.marklogic.ml-gradle" version "3.6.2" + id "com.marklogic.ml-gradle" version "3.17.0" id "idea" } @@ -31,7 +31,7 @@ dependencies { testCompile "org.gradle:gradle-tooling-api:4.3" testCompile "commons-io:commons-io:2.6" - compile "com.marklogic:ml-app-deployer:3.9.0" + compile "com.marklogic:ml-app-deployer:3.17.0" // For reading command-line args compile "com.beust:jcommander:1.72" diff --git a/src/main/ml-modules/root/client/app/adhoc-wizard/adhoc-wizard-field-selection.controller.js b/src/main/ml-modules/root/client/app/adhoc-wizard/adhoc-wizard-field-selection.controller.js index b32ff04..6351bad 100644 --- a/src/main/ml-modules/root/client/app/adhoc-wizard/adhoc-wizard-field-selection.controller.js +++ b/src/main/ml-modules/root/client/app/adhoc-wizard/adhoc-wizard-field-selection.controller.js @@ -298,8 +298,19 @@ angular.module('demoApp') renderResultsModal('success', crudType + crudAction + 'successfully.'); $rootScope.noQueries = false; } - }).error(function(data, status){ - renderResultsModal('error', 'Server Error. Please try again later.'); + }).error(function(response, status){ + // default error message in case we don't understand what is returned + let errorMessage = 'Error: Please try again later.'; + + // Create a better error message if we can + if(response.hasOwnProperty("error") && response.error.length > 0){ + if(response.error[0].code === 'XDMP-NODB'){ + errorMessage = "Error: Database '" + data.database + "' does not have a schemas database associated with it."; + }else { + errorMessage = "Error: " + response.error[0].code + ": " + response.error[0].message; + } + } + renderResultsModal('error', errorMessage); }); } }; diff --git a/src/main/ml-modules/root/server/error.xqy b/src/main/ml-modules/root/server/error.xqy index 3a7ccdf..688dc3a 100644 --- a/src/main/ml-modules/root/server/error.xqy +++ b/src/main/ml-modules/root/server/error.xqy @@ -2,30 +2,15 @@ xquery version "1.0-ml"; import module namespace cfg = "http://www.marklogic.com/data-explore/lib/config" at "/server/lib/config.xqy"; import module namespace check-user-lib = "http://www.marklogic.com/data-explore/lib/check-user-lib" at "/server/lib/check-user-lib.xqy"; +import module namespace json="http://marklogic.com/xdmp/json" at "/MarkLogic/json/json.xqy"; + +declare namespace error = "http://marklogic.com/xdmp/error"; declare option xdmp:mapping "false"; declare variable $error:errors as node()* external; -xdmp:set-response-content-type("text/html"), - '', - - - {$cfg:app-title} - Error - - - -
- -
-
-

Error

-

There has been an error.

-

{xdmp:quote($error:errors)}

-
-
-
- - \ No newline at end of file +let $config := json:config("custom") +let $_ := map:put($config, "array-element-names", (xs:QName("error:error"), xs:QName("error:stack"),xs:QName("error:frame"), xs:QName("error:variable"))) +return ( + xdmp:set-response-content-type("application/json"), + json:transform-to-json($error:errors, $config) +) \ No newline at end of file