@@ -14,21 +14,27 @@ data class QueryContext @JvmOverloads constructor(
14
14
private var paramKeysPerValues = mutableMapOf<String , MutableMap <Any ?, Parameter <* >>>()
15
15
16
16
fun resolve (string : String ): String {
17
- return contextParams?.let { params ->
18
- CONTEXT_VARIABLE_PATTERN .replace(string) {
19
- val path = it.groups[1 ] ? : it.groups[2 ] ? : throw IllegalStateException (" expected a group" )
20
- val parts = path.value.split(" ." )
21
- var o: Any = params
22
- for (part in parts) {
23
- if (o is Map <* , * >) {
24
- o = o[part] ? : return @replace " "
17
+ return CONTEXT_VARIABLE_PATTERN .replace(string) {
18
+ val path = it.groups[1 ] ? : it.groups[2 ] ? : throw IllegalStateException (" expected a group" )
19
+ val parts = path.value.split(" ." )
20
+ var o: Any? = null
21
+ for ((index, part) in parts.withIndex()) {
22
+ if (index == 0 ) {
23
+ if (part == " context" ) {
24
+ o = contextParams
25
+ continue
25
26
} else {
26
- TODO (" only maps are currently supported " )
27
+ TODO (" query context does not provide a ` $part ` " )
27
28
}
28
29
}
29
- return @replace o.toString()
30
+ if (o is Map <* , * >) {
31
+ o = o[part] ? : return @replace " "
32
+ } else {
33
+ TODO (" only maps are currently supported" )
34
+ }
30
35
}
31
- } ? : string
36
+ return @replace o.toString()
37
+ }
32
38
}
33
39
34
40
fun getNextVariable (relationField : RelationField ) = getNextVariable(
@@ -61,6 +67,8 @@ data class QueryContext @JvmOverloads constructor(
61
67
const val KEY = " Neo4jGraphQLQueryContext"
62
68
63
69
private const val PATH_PATTERN = " ([a-zA-Z_][a-zA-Z_0-9]*(?:.[a-zA-Z_][a-zA-Z_0-9]*)*)"
70
+
71
+ // matches ${path} or $path
64
72
private val CONTEXT_VARIABLE_PATTERN = Regex (" \\ \$ (?:\\ {$PATH_PATTERN }|$PATH_PATTERN )" )
65
73
}
66
74
}
0 commit comments