Java 根据访问权限找不到Groovy DSL方法
我正在Groovy中创建一个DSL来进行Http端点测试,我希望它是自然语言ish,并且我有一个带有“with”方法的对象。当我链接这些命令时,正确地调用了我的方法,但是如果对变量脚本调用了“with”方法,则由于使用了现有的Groovy“with(Closure)”,编译失败。DSL脚本文件由GroovyShell读入并执行 这是有效的:Java 根据访问权限找不到Groovy DSL方法,java,groovy,dsl,Java,Groovy,Dsl,我正在Groovy中创建一个DSL来进行Http端点测试,我希望它是自然语言ish,并且我有一个带有“with”方法的对象。当我链接这些命令时,正确地调用了我的方法,但是如果对变量脚本调用了“with”方法,则由于使用了现有的Groovy“with(Closure)”,编译失败。DSL脚本文件由GroovyShell读入并执行 这是有效的: request = http GET to "${url}" with headers, [ 'Cookie': 'monster' ] 但事实并非如此:
request = http GET to "${url}" with headers, [ 'Cookie': 'monster' ]
但事实并非如此:request = http GET to "${url}"
request with headers, [ 'Cookie': 'monster' ]
被调用的对象是用Java编写的,但可以移动到Groovy。这是方法签名:
<returns this> with(HttpMethodElement eml, Object value);
我认为Groovy可能在脚本中将Java对象转换或包装成Groovy对象,但这两种方法具有不同的签名,应该是合法的 是解析器
Groovy sees
request = http GET to "${url}" with headers, [ 'Cookie': 'monster' ]
作为
正如您所看到的,这很好,但是当它试图解析
request with headers, [ 'Cookie': 'monster' ]
被视为
request( with headers, [ 'Cookie': 'monster' ] )
所以with变成了一个参数,然后你丢失了一个逗号,这就导致了你的问题。基本上,解析器丢失了是的,我想要真正确定正确的形式需要在一行上进行多次传递。难题。
request with headers, [ 'Cookie': 'monster' ]
request( with headers, [ 'Cookie': 'monster' ] )