Skip to content

Commit a7d643f

Browse files
ryanjdewMarkLogic Builder
authored andcommitted
DHFPROD-3068: Take ...n on ml: prefix handling
1 parent eb86f3b commit a7d643f

File tree

95 files changed

+85
-1030
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+85
-1030
lines changed

marklogic-data-hub/src/main/java/com/marklogic/hub/deploy/commands/HubRESTDocumentFileProcessor.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

marklogic-data-hub/src/main/java/com/marklogic/hub/deploy/commands/LoadHubModulesCommand.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ protected void prepareAssetFileLoader(AssetFileLoader loader, CommandContext con
101101
jarDocumentFileReader.addDocumentFileProcessor(new TokenReplacerDocumentFileProcessor(buildModuleTokenReplacer(appConfig)));
102102
jarDocumentFileReader.addDocumentFileProcessor(new CollectionsDocumentFileProcessor("hub-core-module"));
103103
jarDocumentFileReader.addDocumentFileProcessor(new PermissionsDocumentFileProcessor(appConfig.getModulePermissions()));
104-
jarDocumentFileReader.addDocumentFileProcessor(new HubRESTDocumentFileProcessor());
105104
loader.setDocumentFileReader(jarDocumentFileReader);
106105
}
107106

marklogic-data-hub/src/main/java/com/marklogic/hub/impl/DataHubImpl.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -346,13 +346,13 @@ public void clearUserModules() {
346346
}
347347

348348
HashSet<String> services = new HashSet<>();
349-
for (Resource r : resolver.getResources("classpath*:/ml-modules/root/marklogic.rest.resource/*")) {
350-
services.add(r.getFilename());
349+
for (Resource r : resolver.getResources("classpath*:/ml-modules/services/*")) {
350+
services.add(r.getFilename().replaceAll("\\.(sjs|xqy)$",""));
351351
}
352352

353353
HashSet<String> transforms = new HashSet<>();
354-
for (Resource r : resolver.getResources("classpath*:/ml-modules/root/marklogic.rest.transform/*")) {
355-
transforms.add(r.getFilename());
354+
for (Resource r : resolver.getResources("classpath*:/ml-modules/transforms/*")) {
355+
transforms.add(r.getFilename().replaceAll("\\.(sjs|xqy)$",""));
356356
}
357357

358358
ServerConfigurationManager configMgr = hubConfig.newStagingClient().newServerConfigManager();
@@ -388,8 +388,7 @@ public void clearUserModules() {
388388
JsonNode transformsList = transformExtensionsManager.listTransforms(new JacksonHandle()).get();
389389
transformsList.findValuesAsText("name").forEach(
390390
x -> {
391-
// may be missing ml: prefix
392-
if (!(transforms.contains(x) || transforms.contains(x.substring(3)) || x.startsWith("ml:"))) {
391+
if (!(transforms.contains(x) || x.startsWith("ml"))) {
393392
transformExtensionsManager.deleteTransform(x);
394393
}
395394
}
@@ -400,8 +399,7 @@ public void clearUserModules() {
400399
JsonNode resourceExtensions = resourceExtensionsManager.listServices(new JacksonHandle()).get();
401400
resourceExtensions.findValuesAsText("name").forEach(
402401
x -> {
403-
// may be missing ml: prefix
404-
if (!(services.contains(x) || services.contains(x.substring(3)) || x.startsWith("ml:"))) {
402+
if (!(services.contains(x) || x.startsWith("ml"))) {
405403
resourceExtensionsManager.deleteServices(x);
406404
}
407405
}

marklogic-data-hub/src/main/resources/ml-modules/root/data-hub/5/endpoints/collector.sjs

Lines changed: 43 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -30,61 +30,50 @@ parameters.queryParameter(requestParams, "options",fn.false(),fn.false())
3030
parameters.queryParameter(requestParams, "step",fn.false(),fn.false())
3131
parameters.queryParameter(requestParams, "database",fn.true(),fn.false())
3232

33-
if(method === 'GET') {
34-
const flowName = requestParams["flow-name"];
35-
let step = requestParams.step;
36-
if (!step) {
37-
step = 1;
38-
}
39-
let options = requestParams.options ? JSON.parse(requestParams.options) : {};
33+
// Refactored to not set xdmp.eval results to variable for efficiency reasons
34+
if (method !== 'GET') {
35+
fn.error(null, 'RESTAPI-INVALIDREQ', 'unsupported method: '+method);
36+
}
37+
const flowName = requestParams["flow-name"];
38+
let step = requestParams.step;
39+
if (!step) {
40+
step = 1;
41+
}
42+
let options = requestParams.options ? JSON.parse(requestParams.options) : {};
4043

41-
let flowDoc= datahub.flow.getFlow(flowName);
42-
let resp;
43-
if (!fn.exists(flowDoc)) {
44-
resp = fn.error(null, "RESTAPI-SRVEXERR", Sequence.from([404, "Not Found", "The requested flow was not found"]));
44+
let flowDoc= datahub.flow.getFlow(flowName);
45+
if (!fn.exists(flowDoc)) {
46+
fn.error(null, "RESTAPI-SRVEXERR", Sequence.from([404, "Not Found", "The requested flow was not found"]));
47+
}
48+
let stepDoc = flowDoc.steps[step];
49+
if (!stepDoc) {
50+
fn.error(null, "RESTAPI-SRVEXERR", Sequence.from([404, "Not Found", `The step number "${step}" of the flow was not found`]));
51+
}
52+
let baseStep = datahub.flow.step.getStepByNameAndType(stepDoc.stepDefinitionName, stepDoc.stepDefinitionType);
53+
if (!baseStep) {
54+
fn.error(null, "RESTAPI-SRVEXERR", Sequence.from([404, "Not Found", `A step with name "${stepDoc.stepDefinitionName}" and type of "${stepDoc.stepDefinitionType}" was not found`]));
55+
}
56+
let combinedOptions = Object.assign({}, baseStep.options, flowDoc.options, stepDoc.options, options);
57+
const database = combinedOptions.sourceDatabase || requestParams.database;
58+
if(!combinedOptions.sourceQuery && flowDoc.sourceQuery) {
59+
combinedOptions.sourceQuery = flowDoc.sourceQuery;
60+
}
61+
let query = combinedOptions.sourceQuery;
62+
if (!query) {
63+
datahub.debug.log("The collector query was empty");
64+
fn.error(null, "RESTAPI-SRVEXERR", Sequence.from([404, "Not Found", "The collector query was empty"]));
65+
}
66+
try {
67+
let urisEval;
68+
if (/^\s*cts\.uris\(.*\)\s*$/.test(query)) {
69+
urisEval = query;
4570
} else {
46-
let stepDoc = flowDoc.steps[step];
47-
if (!stepDoc) {
48-
resp = fn.error(null, "RESTAPI-SRVEXERR", Sequence.from([404, "Not Found", `The step number "${step}" of the flow was not found`]));
49-
}
50-
let baseStep = datahub.flow.step.getStepByNameAndType(stepDoc.stepDefinitionName, stepDoc.stepDefinitionType);
51-
if (!baseStep) {
52-
resp = fn.error(null, "RESTAPI-SRVEXERR", Sequence.from([404, "Not Found", `A step with name "${stepDoc.stepDefinitionName}" and type of "${stepDoc.stepDefinitionType}" was not found`]));
53-
}
54-
let combinedOptions = Object.assign({}, baseStep.options, flowDoc.options, stepDoc.options, options);
55-
const database = combinedOptions.sourceDatabase || requestParams.database;
56-
if (stepDoc) {
57-
if(!combinedOptions.sourceQuery && flowDoc.sourceQuery) {
58-
combinedOptions.sourceQuery = flowDoc.sourceQuery;
59-
}
60-
let query = combinedOptions.sourceQuery;
61-
if (query) {
62-
try {
63-
let urisEval;
64-
if (/^\s*cts\.uris\(.*\)\s*$/.test(query)) {
65-
urisEval = query;
66-
} else {
67-
urisEval = "cts.uris(null, null, " + query + ")";
68-
}
69-
resp = xdmp.eval(urisEval, {options: options}, {database: xdmp.database(database)});
70-
} catch (err) {
71-
//TODO log error message from 'err'
72-
73-
datahub.debug.log(err);
74-
resp = fn.error(null, 'RESTAPI-INVALIDREQ', err);
75-
}
76-
} else {
77-
resp = fn.error(null, "RESTAPI-SRVEXERR", Sequence.from([404, "Not Found", "The collector query was empty"]));
78-
datahub.debug.log("The collector query was empty");
79-
}
80-
} else {
81-
resp = fn.error(null, "RESTAPI-SRVEXERR", Sequence.from([404, "Not Found", "The requested step was not found"]));
82-
datahub.debug.log("The requested step was not found");
83-
84-
}
71+
urisEval = "cts.uris(null, null, " + query + ")";
8572
}
86-
resp
87-
} else {
88-
fn.error(null, 'RESTAPI-INVALIDREQ', 'unsupported method: '+method);
89-
}
73+
xdmp.eval(urisEval, {options: options}, {database: xdmp.database(database)});
74+
} catch (err) {
75+
//TODO log error message from 'err'
9076

77+
datahub.debug.log(err);
78+
fn.error(null, 'RESTAPI-INVALIDREQ', err);
79+
}

marklogic-data-hub/src/main/resources/ml-modules/root/data-hub/5/rest-api/lib/extensions-util.xqy

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,7 @@ declare private function extut:get-extension-function(
473473
if (exists($fcached))
474474
then $fcached
475475
else
476+
let $extension-name := extut:translate-ml-prefix($extension-name)
476477
let $function :=
477478
xdmp:function(
478479
if ($source-format eq "xquery")
@@ -593,7 +594,7 @@ declare private function extut:make-base-uri(
593594
$extension-name as xs:string
594595
) as xs:string
595596
{
596-
concat("/marklogic.rest.",$extension-type,"/",$extension-name,"/")
597+
concat("/marklogic.rest.",$extension-type,"/",extut:translate-ml-prefix($extension-name),"/")
597598
};
598599

599600
declare private function extut:make-metadata-uri(
@@ -1385,3 +1386,16 @@ declare function {$extension-name}:transform(
13851386
</case>)
13861387
return document { $module-body }
13871388
};
1389+
1390+
(: DH 5 addition for handling the ml: prefix :)
1391+
declare private function extut:translate-ml-prefix(
1392+
$extension-name as xs:string
1393+
) as xs:string
1394+
{
1395+
if (starts-with($extension-name,"ml:")) then
1396+
let $post-fix := substring-after($extension-name, "ml:")
1397+
return
1398+
concat("ml", upper-case(substring($post-fix,1,1)), substring($post-fix,2))
1399+
else
1400+
$extension-name
1401+
};

marklogic-data-hub/src/main/resources/ml-modules/root/marklogic.rest.resource/batches/assets/metadata.xml

Lines changed: 0 additions & 3 deletions
This file was deleted.

marklogic-data-hub/src/main/resources/ml-modules/root/marklogic.rest.resource/batches/assets/resource.xqy

Lines changed: 0 additions & 42 deletions
This file was deleted.

marklogic-data-hub/src/main/resources/ml-modules/root/marklogic.rest.resource/collections/assets/metadata.xml

Lines changed: 0 additions & 3 deletions
This file was deleted.

marklogic-data-hub/src/main/resources/ml-modules/root/marklogic.rest.resource/collections/assets/resource.xqy

Lines changed: 0 additions & 42 deletions
This file was deleted.

marklogic-data-hub/src/main/resources/ml-modules/root/marklogic.rest.resource/dbConfigs/assets/metadata.xml

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)