hi,
Can anyone let me know me, what is wrong here. I have the pipeline script, and i am trying to pass a string parameter when the job is triggered. The parameter will then be converted into a List of maps, so that i can iterate through it.
Here is what i am trying:
String input = "$objectListParameter" //This is from the job's input String parameter
println input
def inputMap = Eval.me("$input")
def objectList=[] //initialize an empty List
objectList << inputMap
println objectList
println objectList.getClass()
//call the method
generateXML(objectList) // This is the method marked with @NonCPS
The input parameter, ($objectListParameter) looks something like this:
[[name: 'a', file: 'fileA' , objectName: 'wf_A' , objectType: 'workflow', sourceRepository: 'DEV2', folderNames: [srcFolder1: 'TgtFolder1', srcFolder2: 'TgtFolder2']],[ name: 'B' , file: 'fileB' , objectName: 'wf_B' , objectType: 'workflow', sourceRepository: 'DEV2', folderNames: [srcFolder4: 'TgtFolder4', srcFolder3: 'TgtFolder3']]]
In the jenkins console Log, this the snippet
[Pipeline] echo
[[name: 'a', file: 'fileA' , objectName: 'wf_A' , objectType: 'workflow', sourceRepository: 'DEV2', folderNames: [srcFolder1: 'TgtFolder1', srcFolder2: 'TgtFolder2']],[ name: 'B' , file: 'fileB' , objectName: 'wf_B' , objectType: 'workflow', sourceRepository: 'DEV2', folderNames: [srcFolder4: 'TgtFolder4', srcFolder3: 'TgtFolder3']]]
[Pipeline] echo
[[{name=a, file=fileA, objectName=wf_A, objectType=workflow, sourceRepository=DEV2, folderNames={srcFolder1=TgtFolder1, srcFolder2=TgtFolder2}}, {name=B, file=fileB, objectName=wf_B, objectType=workflow, sourceRepository=DEV2, folderNames={srcFolder4=TgtFolder4, srcFolder3=TgtFolder3}}]]
[Pipeline] echo
class java.util.ArrayList
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: WorkflowScript$_generateXML_closure1$_closure2$_closure3$_closure4$_closure5$_closure6$_closure9.doCall() is applicable for argument types: (java.util.LinkedHashMap) values: [[srcFolder1:TgtFolder1, srcFolder2:TgtFolder2]]
Possible solutions: doCall(java.lang.Object, java.lang.Object), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:286)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
at groovy.lang.Closure.call(Closure.java:414)
at groovy.lang.Closure.call(Closure.java:430)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2030)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2015)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2056)
at org.codehaus.groovy.runtime.dgm$162.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274)