我在Mule中有以下Groovy脚本。
import org.custommonkey.xmlunit.XMLUnit.*
def expected =
getClass().getResourceAsStream('/samples/in/request.xml').text
XMLUnit.setIgnoreWhitespace(true)
def documentDiff = DiffBuilder
.compare(expected)
.withTest(message.getInboundProperty('webServiceRequest'))
.withNodeFilter(node -> !node.getNodeName().equals('EffectiveDate'))
.build()
出于某种原因,Groovy抱怨“ - >”..
Script3.groovy: 10: unexpected token: -> @ line 10, column 34.
.withNodeFilter(node -> !node.getNodeName().equals(EffectiveDate))
我不明白。我认为在Groovy中这很好吗?我错过了什么吗?
答案 0 :(得分:2)
因为在这里:
.withNodeFilter(node -> !node.getNodeName().equals(EffectiveDate))
是来自Java8的lambda语法,Groovy的发布版本目前不支持该语法(应该包含在Groovy 3中);
而不是使用Groovy的clojures:
.withNodeFilter { //code here }
答案 1 :(得分:0)
在groovy中,没有必要使用命令分隔符;
如果没有提及相反的话,那么新的行可以被视为命令的终止......
def documentDiff = DiffBuilder
.compare(expected)
.withTest(message.getInboundProperty('webServiceRequest'))
.withNodeFilter(node -> !node.getNodeName().equals('EffectiveDate'))
.build()
应该像这样(前一个字符串末尾的点)
def documentDiff = DiffBuilder.
compare(expected).
withTest(message.getInboundProperty('webServiceRequest')).
withNodeFilter(node -> !node.getNodeName().equals('EffectiveDate')).
build()