Your browser was unable to load all of the resources. They may have been blocked by your firewall, proxy or browser configuration.
Press Ctrl+F5 or Ctrl+Shift+R to have your browser try again.

Groovy creates a list instead of a string !? #1676

Laba42 ·
Hallo,
I want to edit the result of a multi-selection box, with a Groovy script, and then handed over to ANT as an ANT property.

def multiSelectBox = "33 - Settings, 40 - ReleaseNotes, 30 - DuplicateFiles, 7 - NotLinkedCRs"; //vars.get("ResultOfTheMultiSelectionBox")
def result = ""
multiSelectBox.tokenize(',').each
{
result += "$it".substring(0, "$it".indexOf('-')).trim() + ","
}
result = result.substring(0, result.length()-1)
result

The result should be a string ("33,40,30,7"), but it looks like as if Groovy creates a list of it.
I get the following error message!
...Caused by: com.pmease.quickbuild.QuickbuildException: groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.call() is applicable for argument types: (java.lang.String) values: [33,40,30,4,7]
Possible solutions: tail(), wait(), any(), max(), last(), wait(long)...


If I select only one value, then it works!
Does anyone have any idea how to solve the problem?

Thanks

Georg
  • replies 4
  • views 3489
  • stars 0
robinshen ADMIN ·
I ran the same script and the result is correct, and it does get a String type. I tested this via a "Misc/Execute Script" step.
Laba42 ·
i have testet it, like you, inStep Misc/exceute Srcript, but it doesen't work by me
${groovy: 
def multiSelectBox = "33 - Settings, 40 - Liefertermine, 30 - DuplicateFiles, 7 - NotLinkedCRs";
def result = ""
multiSelectBox.tokenize(',').each
{
result += "$it".substring(0, "$it".indexOf('-')).trim() + ",";
\}
result = result.substring(0, result.length()-1);
result;
}


Here is the full Error Message:
09:30:36,985 [master@QUICKBUILDTEST:8810] INFO - Executing pre-execute action...
09:30:36,985 [master@QUICKBUILDTEST:8810] INFO - Running step...
09:30:36,985 [master>Test@QUICKBUILDTEST:8810] INFO - Checking step execute condition...
09:30:36,985 [master>Test@QUICKBUILDTEST:8810] INFO - Step execute condition satisfied, executing...
09:30:38,001 [master>Test@QUICKBUILDTEST:8810] INFO - Executing pre-execute action...
09:30:38,001 [master>Test@QUICKBUILDTEST:8810] INFO - Running step...
09:30:38,017 [master>Test@QUICKBUILDTEST:8810] INFO - Executing post-execute action...
09:30:38,017 [master>Test@QUICKBUILDTEST:8810] ERROR - Step 'master>Test' is failed.
com.pmease.quickbuild.QuickbuildException: Failed to evaluate below expression:
mvel:33,40,30,7
at com.pmease.quickbuild.util.ExceptionUtils.wrapException(ExceptionUtils.java:89)
at com.pmease.quickbuild.DefaultScriptEngine.evaluate(DefaultScriptEngine.java:93)
at com.pmease.quickbuild.plugin.basis.ScriptStep.run(ScriptStep.java:47)
at com.pmease.quickbuild.plugin.basis.ScriptStep$$EnhancerByCGLIB$$8afb1f5.CGLIB$run$0(<generated>)
at com.pmease.quickbuild.plugin.basis.ScriptStep$$EnhancerByCGLIB$$8afb1f5$$FastClassByCGLIB$$c1d6f8c0.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215)
at com.pmease.quickbuild.DefaultScriptEngine$Interpolator.intercept(DefaultScriptEngine.java:270)
at com.pmease.quickbuild.plugin.basis.ScriptStep$$EnhancerByCGLIB$$8afb1f5.run(<generated>)
at com.pmease.quickbuild.stepsupport.Step.execute(Step.java:471)
at com.pmease.quickbuild.stepsupport.StepExecutionJob.executeStepAwareJob(StepExecutionJob.java:29)
at com.pmease.quickbuild.stepsupport.StepAwareJob.executeBuildAwareJob(StepAwareJob.java:47)
at com.pmease.quickbuild.BuildAwareJob.execute(BuildAwareJob.java:61)
at com.pmease.quickbuild.grid.GridJob.run(GridJob.java:78)
at java.lang.Thread.run(Unknown Source)
Caused by: [Error: unexpected token: ,40]
[Near : {... 33,40,30, ....}]
^
[Line: 1, Column: 5]
at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:247)
at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:65)
at org.mvel2.MVEL.compileExpression(MVEL.java:886)
at org.mvel2.MVEL.compileExpression(MVEL.java:891)
at org.mvel2.MVEL.compileExpression(MVEL.java:797)
at com.pmease.quickbuild.plugin.basis.BasisPlugin$16.evaluate(BasisPlugin.java:188)
at com.pmease.quickbuild.DefaultScriptEngine.evaluate(DefaultScriptEngine.java:87)
... 12 more
09:30:38,017 [master@QUICKBUILDTEST:8810] INFO - Executing post-execute action...
09:30:38,017 [master@QUICKBUILDTEST:8810] ERROR - Step 'master' is failed.
com.pmease.quickbuild.QuickbuildException: Composite step 'master' failed due to unsatisfication of success condition.
at com.pmease.quickbuild.stepsupport.CompositeStep.run(CompositeStep.java:100)
at com.pmease.quickbuild.stepsupport.Step.execute(Step.java:471)
at com.pmease.quickbuild.stepsupport.StepExecutionJob.executeStepAwareJob(StepExecutionJob.java:29)
at com.pmease.quickbuild.stepsupport.StepAwareJob.executeBuildAwareJob(StepAwareJob.java:47)
at com.pmease.quickbuild.BuildAwareJob.execute(BuildAwareJob.java:61)
at com.pmease.quickbuild.grid.GridJob.run(GridJob.java:78)
at java.lang.Thread.run(Unknown Source)

Our quickbuild (its a testsystem ) version is 4.0.1, 2011-10-05 and just updated on , 4.0.18, 2011-12-03

Georg
robinshen ADMIN ·
In script execution field, please input groovy script directly, without the surrounding ${...}. That is, just specify below value for property "script":

groovy:
def multiSelectBox = "33 - Settings, 40 - Liefertermine, 30 - DuplicateFiles, 7 - NotLinkedCRs";
def result = ""
multiSelectBox.tokenize(',').each
{
result += "$it".substring(0, "$it".indexOf('-')).trim() + ",";
}
result = result.substring(0, result.length()-1);
result;

Laba42 ·
Now it works
Thanks
Georg