Groovy抱怨意外的令牌: - >

时间:2017-05-30 14:09:40

标签: groovy mule

我在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中这很好吗?我错过了什么吗?

2 个答案:

答案 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()