Skip to content

Commit f345dce

Browse files
author
ehennum
committed
error checking for explicit client database and warning cleanup #970
1 parent 47d837c commit f345dce

File tree

5 files changed

+47
-46
lines changed

5 files changed

+47
-46
lines changed

marklogic-client-api/src/main/java/com/marklogic/client/impl/BaseProxy.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,12 @@ static protected ObjectMapper getMapper() {
6464

6565
public BaseProxy(DatabaseClient db, String endpointDir) {
6666
if (db == null) {
67-
throw new IllegalStateException("Cannot connect with null database client");
67+
throw new IllegalArgumentException("Cannot connect with null database client");
68+
} else if (db.getDatabase() != null) {
69+
throw new IllegalArgumentException("Client must use the default database instead of: "+db.getDatabase());
6870
}
6971
if (endpointDir == null || endpointDir.length() == 0) {
70-
throw new IllegalStateException("Cannot make requests with null or empty endpoint directory");
72+
throw new IllegalArgumentException("Cannot make requests with null or empty endpoint directory");
7173
}
7274

7375
this.endpointDir = endpointDir;

marklogic-development-tools/src/main/kotlin/com/marklogic/client/tools/fnclassgen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ package com.marklogic.client.tools
1818
import com.marklogic.client.tools.proxy.Generator
1919

2020
fun main(args: Array<String>) {
21-
if (args.size === 2) {
21+
if (args.size == 2) {
2222
Generator().serviceBundleToJava(args[0], args[1])
2323
} else {
2424
System.err.println("usage: fnclassgen serviceDeclarationFile javaBaseDir")

marklogic-development-tools/src/main/kotlin/com/marklogic/client/tools/fnmodinit.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ package com.marklogic.client.tools
1818
import com.marklogic.client.tools.proxy.Generator
1919

2020
fun main(args: Array<String>) {
21-
if (args.size === 2) {
21+
if (args.size == 2) {
2222
Generator().endpointDeclToModStubImpl(args[0], args[1])
2323
} else {
2424
System.err.println("usage: fnmodinit endpointDeclarationFile moduleExtension")

marklogic-development-tools/src/main/kotlin/com/marklogic/client/tools/proxy/Generator.kt

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ class Generator {
204204
return getAtomicMappings() + getDocumentMappings()
205205
}
206206
fun getJavaDataType(
207-
dataType: String, mapping: String?, dataKind: String, isNullable: Boolean, isMultiple: Boolean
207+
dataType: String, mapping: String?, dataKind: String, isMultiple: Boolean
208208
): String {
209209
if (mapping === null) {
210210
if (dataKind == "system") {
@@ -243,7 +243,7 @@ class Generator {
243243
var endpointDirectory = servdef.get("endpointDirectory")?.asText()
244244
if (endpointDirectory === null) {
245245
throw IllegalArgumentException("no endpointDirectory property in $servDeclFilename")
246-
} else if (endpointDirectory.length === 0) {
246+
} else if (endpointDirectory.length == 0) {
247247
throw IllegalArgumentException("empty endpointDirectory property in $servDeclFilename")
248248
} else if (!endpointDirectory.endsWith("/")) {
249249
endpointDirectory = endpointDirectory+"/"
@@ -280,8 +280,8 @@ class Generator {
280280
warnings.add("function declaration without endpoint main module: "+entry.value.absolutePath)
281281
false
282282
}
283-
}.mapValues{(root, file) ->
284-
mapper.readValue<ObjectNode>(file)
283+
}.mapValues{entry ->
284+
mapper.readValue<ObjectNode>(entry.value)
285285
}
286286

287287
if (warnings.size > 0) {
@@ -302,10 +302,10 @@ class Generator {
302302
else funcDecl.joinToString("")
303303

304304
val classSrc = generateServClass(
305-
servdef, endpointDirectory, servDeclFilename, fullClassName, funcImports, funcDecls, funcSrc
305+
servdef, endpointDirectory, fullClassName, funcImports, funcDecls, funcSrc
306306
)
307307

308-
writeClass(servdef, fullClassName, classSrc, javaBaseDir)
308+
writeClass(fullClassName, classSrc, javaBaseDir)
309309
}
310310
fun unpairedWarnings(
311311
warnings: MutableList<String>, files: Map<String, File>, other: Set<String>, msg: String
@@ -316,22 +316,22 @@ class Generator {
316316
}
317317
}
318318
}
319-
fun writeClass(servdef: ObjectNode, fullClassName: String, classSrc: String, javaBaseDir: String) {
319+
fun writeClass(fullClassName: String, classSrc: String, javaBaseDir: String) {
320320
val classFilename = javaBaseDir+if (javaBaseDir.endsWith("/")) {""} else {"/"}+
321321
fullClassName.replace(".", "/")+".java"
322322
val classFile = File(classFilename)
323323
classFile.parentFile.mkdirs()
324324
classFile.writeText(classSrc)
325325
}
326326
fun generateServClass(
327-
servdef: ObjectNode, endpointDirectory: String, servDeclFilename: String,
328-
fullClassName: String, funcImports: String, funcDecls: String, funcSrc: String
327+
servdef: ObjectNode, endpointDirectory: String, fullClassName: String,
328+
funcImports: String, funcDecls: String, funcSrc: String
329329
): String {
330330
val packageName = fullClassName.substringBeforeLast(".")
331331
val className = fullClassName.substringAfterLast(".")
332332
val requestDir = endpointDirectory+if (endpointDirectory.endsWith("/")) {""} else {"/"}
333333

334-
val hasSession = servdef.get("hasSession")?.asBoolean() === true
334+
val hasSession = servdef.get("hasSession")?.asBoolean() == true
335335

336336
val classDesc = servdef.get("desc")?.asText() ?:
337337
"Provides a set of operations on the database server"
@@ -398,7 +398,7 @@ ${funcDecls}
398398
moduleFilename: String, funcdef: ObjectNode
399399
): String {
400400
val funcName = funcdef.get("functionName")?.asText()
401-
if (funcName === null || funcName.length === 0) {
401+
if (funcName === null || funcName.length == 0) {
402402
throw IllegalArgumentException("function without name")
403403
}
404404
val funcDesc = funcdef.get("desc")?.asText() ?:
@@ -456,11 +456,11 @@ ${funcDecls}
456456
if (funcReturn !== null) {
457457
(funcReturn as ObjectNode).put("dataKind", returnKind)
458458
}
459-
val returnNullable = funcReturn?.get("nullable")?.asBoolean() === true
460-
val returnMultiple = funcReturn?.get("multiple")?.asBoolean() === true
459+
val returnNullable = funcReturn?.get("nullable")?.asBoolean() == true
460+
val returnMultiple = funcReturn?.get("multiple")?.asBoolean() == true
461461
val returnMapped =
462462
if (returnType === null || returnKind === null) null
463-
else getJavaDataType(returnType, returnMapping, returnKind, returnNullable, returnMultiple)
463+
else getJavaDataType(returnType, returnMapping, returnKind, returnMultiple)
464464

465465
val endpointMethod = "POST"
466466

@@ -485,9 +485,8 @@ ${funcDecls}
485485
val paramType = funcParam.get("datatype").asText()
486486
val paramMapping = funcParam.get("\$javaClass")?.asText()
487487
val paramKind = funcParam.get("dataKind").asText()
488-
val isMultiple = funcParam.get("multiple")?.asBoolean() === true
489-
val isNullable = funcParam.get("nullable")?.asBoolean() === true
490-
val mappedType = getJavaDataType(paramType, paramMapping, paramKind, isNullable, isMultiple)
488+
val isMultiple = funcParam.get("multiple")?.asBoolean() == true
489+
val mappedType = getJavaDataType(paramType, paramMapping, paramKind, isMultiple)
491490
val sigType =
492491
if (!isMultiple) mappedType
493492
else "Stream<"+mappedType+">"
@@ -497,7 +496,7 @@ ${funcDecls}
497496
when (paramKind) {
498497
"document" -> {
499498
funcDepend.add("com.marklogic.client.io.Format")
500-
if (mappedType.contains(".") === true) {
499+
if (mappedType.contains(".") == true) {
501500
funcDepend.add("com.marklogic.client.io.marker.AbstractWriteHandle")
502501
} else {
503502
funcDepend.add("java.io.$mappedType")
@@ -515,7 +514,7 @@ ${funcDecls}
515514

516515
if (returnKind == "document") {
517516
funcDepend.add("com.marklogic.client.io.Format")
518-
if (returnMapped?.contains(".") === true) {
517+
if (returnMapped?.contains(".") == true) {
519518
funcDepend.add("com.marklogic.client.io.marker.AbstractWriteHandle")
520519
} else {
521520
funcDepend.add("java.io.$returnMapped")
@@ -539,26 +538,26 @@ ${funcDecls}
539538
else (sessionParam as ObjectNode).get("name").asText()
540539
val sessionNullable =
541540
if (sessionParam === null) null
542-
else (sessionParam as ObjectNode).get("nullable")?.asBoolean() === true
541+
else (sessionParam as ObjectNode).get("nullable")?.asBoolean() == true
543542
val sessionChained =
544543
if (sessionParam === null) ""
545544
else """"${sessionName}", ${sessionName}, ${sessionNullable}"""
546545

547-
val paramsChained = payloadParams?.map{funcParam ->
546+
val paramsChained = payloadParams.map{funcParam ->
548547
val paramName = funcParam.get("name").asText()
549548
val paramType = funcParam.get("datatype").asText()
550549
val paramKind = funcParam.get("dataKind").asText()
551550
val paramMapping = funcParam.get("\$javaClass")?.asText()
552-
val isMultiple = funcParam.get("multiple")?.asBoolean() === true
553-
val isNullable = funcParam.get("nullable")?.asBoolean() === true
554-
val mappedType = getJavaDataType(paramType, paramMapping, paramKind, isNullable, isMultiple)
551+
val isMultiple = funcParam.get("multiple")?.asBoolean() == true
552+
val isNullable = funcParam.get("nullable")?.asBoolean() == true
553+
val mappedType = getJavaDataType(paramType, paramMapping, paramKind, isMultiple)
555554
"""BaseProxy.${paramKind}Param("${paramName}", ${isNullable}, BaseProxy.${typeConverter(paramType)}.from${
556555
if (mappedType.contains("."))
557556
mappedType.substringAfterLast(".").capitalize()
558557
else
559558
mappedType.capitalize()
560559
}(${paramName}))"""
561-
}?.joinToString(""",
560+
}.joinToString(""",
562561
""")
563562

564563
val returnConverter =
@@ -573,13 +572,13 @@ ${funcDecls}
573572
}(
574573
"""
575574
val returnFormat =
576-
if (returnType == null || returnKind != "document") "null"
575+
if (returnType === null || returnKind != "document") "null"
577576
else typeFormat(returnType)
578577
val returnChained =
579-
if (returnKind === null) """.responseNone()"""
580-
else if (returnMultiple === true) """.responseMultiple(${returnNullable}, ${returnFormat})
578+
if (returnKind === null) """.responseNone()"""
579+
else if (returnMultiple == true) """.responseMultiple(${returnNullable}, ${returnFormat})
581580
)"""
582-
else """.responseSingle(${returnNullable}, ${returnFormat})
581+
else """.responseSingle(${returnNullable}, ${returnFormat})
583582
)"""
584583

585584
val sigSource = """${returnSig} ${funcName}(${sigParams ?: ""})"""
@@ -626,14 +625,14 @@ ${funcDecls}
626625
}
627626
fun paramKindCardinality(currCardinality: ValueCardinality, param: ObjectNode): ValueCardinality {
628627
val nextCardinality =
629-
if (currCardinality !== ValueCardinality.NONE) ValueCardinality.MULTIPLE
630-
else if (param.get("multiple")?.asBoolean() === true) ValueCardinality.MULTIPLE
631-
else ValueCardinality.SINGLE
628+
if (currCardinality !== ValueCardinality.NONE) ValueCardinality.MULTIPLE
629+
else if (param.get("multiple")?.asBoolean() == true) ValueCardinality.MULTIPLE
630+
else ValueCardinality.SINGLE
632631
return nextCardinality
633632
}
634633

635634
fun endpointDeclToModStubImpl(endpointDeclFilename: String, moduleExtension: String) {
636-
if (endpointDeclFilename === null || endpointDeclFilename.length == 0) {
635+
if (endpointDeclFilename.length == 0) {
637636
throw IllegalArgumentException("null declaration file")
638637
}
639638

@@ -663,8 +662,8 @@ ${funcDecls}
663662

664663
val funcReturn = funcdef.get("return")
665664
val returnType = funcReturn?.get("datatype")?.asText()
666-
val returnNullable = funcReturn?.get("nullable")?.asBoolean() === true
667-
val returnMultiple = funcReturn?.get("multiple")?.asBoolean() === true
665+
val returnNullable = funcReturn?.get("nullable")?.asBoolean() == true
666+
val returnMultiple = funcReturn?.get("multiple")?.asBoolean() == true
668667
val returnCardinal =
669668
if (returnType === null) ""
670669
else getServerCardinality(returnMultiple, returnNullable)
@@ -686,8 +685,8 @@ declare option xdmp:mapping "false";
686685
else funcParams.map{funcParam ->
687686
val paramName = funcParam.get("name").asText()
688687
val paramType = funcParam.get("datatype").asText()
689-
val isMultiple = funcParam.get("multiple")?.asBoolean() === true
690-
val isNullable = funcParam.get("nullable")?.asBoolean() === true
688+
val isMultiple = funcParam.get("multiple")?.asBoolean() == true
689+
val isNullable = funcParam.get("nullable")?.asBoolean() == true
691690
val cardinality = getServerCardinality(isMultiple, isNullable)
692691
val typeName = getServerType(paramType, atomicTypes, documentTypes, moduleExtension)
693692
val paramdef =

marklogic-development-tools/src/test/kotlin/com/marklogic/client/test/dbfunction/fntestgen.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1997,7 +1997,7 @@ fun generateJUnitCallTest(
19971997
val returnNullable = funcReturn?.get("nullable") == true
19981998
val returnMappedType =
19991999
if (returnType === null || returnKind === null) null
2000-
else generator.getJavaDataType(returnType, returnMapping, returnKind, returnNullable, returnMultiple)
2000+
else generator.getJavaDataType(returnType, returnMapping, returnKind, returnMultiple)
20012001
val returnCustom = returnMapping !== null && returnMappedType?.contains('.') == true
20022002
val returnConstructor =
20032003
if (typeConstructors === null || !returnCustom) null
@@ -2016,7 +2016,7 @@ fun generateJUnitCallTest(
20162016
null
20172017
else if (returnKind === "atomic")
20182018
testVal(
2019-
typeTests, returnType, returnKind, returnNullable, returnMultiple, returnMappedType, testVariant,
2019+
typeTests, returnType, returnNullable, returnMultiple, returnMappedType, testVariant,
20202020
typeConstructors = typeConstructors, mappedTestdefs = mappedTestdefs
20212021
)
20222022
else if (returnMultiple)
@@ -2108,13 +2108,13 @@ fun testVal(
21082108
val dataKind = getDataKind(dataType, typedef) as String
21092109
val isMultiple = typedef.get("multiple") == true
21102110
val isNullable = typedef.get("nullable") == true
2111-
val mappedType = generator.getJavaDataType(dataType, mapping, dataKind, isNullable, isMultiple)
2111+
val mappedType = generator.getJavaDataType(dataType, mapping, dataKind, isMultiple)
21122112
return testVal(
2113-
typeTests, dataType, dataKind, isNullable, isMultiple, mappedType, testVariant, typeConstructors, mappedTestdefs
2113+
typeTests, dataType, isNullable, isMultiple, mappedType, testVariant, typeConstructors, mappedTestdefs
21142114
)
21152115
}
21162116
fun testVal(
2117-
typeTests: ObjectNode?, dataType: String, dataKind: String, isNullable: Boolean, isMultiple: Boolean,
2117+
typeTests: ObjectNode?, dataType: String, isNullable: Boolean, isMultiple: Boolean,
21182118
mappedType: String, testVariant: TestVariant,
21192119
typeConstructors: Map<String,String>? = null, mappedTestdefs: ObjectNode? = null
21202120
) : String {

0 commit comments

Comments
 (0)