我正在研究一种常规方法,以查找自定义属性并在找到键后返回值。
问题在于该方法返回的是值的类型而不是值。
// There is more code before, but its not involved with this issue.
def UUIDca = 'UUID'
String customAttributeValue = grabCustomAttribute(UUIDca, event_work)
appendLogfile("\n\nTest grabCustomAttribute: ${customAttributeValue}\n")
}
// Grab the Custom Message Attribute values by name
String grabCustomAttribute (String findElement, OprEvent event){
appendLogfile("""\nIN grabCustomAttribute\nElement to look: ${findElement}\n""")
def firstItem = true
if (event.customAttributes?.customAttributes?.size()) {
event.customAttributes.customAttributes.each { ca ->
// Define each CMA to catch here
appendLogfile("""\nElement: ${ca.name} - """)
appendLogfile("""Valor: ${ca.value}\n""")
if ("${ca.name}" == findElement) {
String customValue = ca.value
appendLogfile("""Custom Attribute Found\n""")
appendLogfile(customValue)
return customValue
}
}
}
}
appendLogfile基本上是对日志文件的打印:)
这是我得到的输出。
要看的IN GRUPCustomAttribute元素:UUID
元素:UUID-值:c3bb9169-0ca3-4bcf-beb1-f94eda8ebf1a
找到自定义属性
c3bb9169-0ca3-4bcf-beb1-f94eda8ebf1a测试grabCustomAttribute:[com.hp.opr.api.ws.model.event.OprCustomAttribute@940e503a]
它返回对象的类型,而不是返回值。没错,但我在寻找价值。
我相信解决方案确实很简单,但是对于Groovy来说,我还是一个新手。
任何帮助将不胜感激。 谢谢。
答案 0 :(得分:1)
在这种情况下,return语句用于闭包,而不用于方法,因此您的方法实际上返回的是“每个”正在迭代的列表
您可以在此处采用的最简单方法是使用Groovy find方法来查找要搜索的元素。像这样:
String grabCustomAttribute (String findElement, OprEvent event) {
return event.customAttributes.customAttributes?.find { ca -> ca.name == findElement }.value
}