Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-34590

Fail to generate correct input step with choice param syntax from snippet generator

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved (View Workflow)
    • Major
    • Resolution: Duplicate
    • pipeline
    • None

    Description

      Snippet generator generates this for input step with choice parameters:

      input message: '', parameters: [[$class: 'ChoiceParameterDefinition', choices: ['option1', 'option2'], description: '', name: 'My param']]
      

      That code tries to use the @DataboundConstructor of ChoiceParameterDefinition which does not match with the required signature, thus this warning stack trace is shown on snippet generation time:

      May 04, 2016 10:25:46 AM org.jenkinsci.plugins.structs.describable.DescribableModel uninstantiate
      WARNING: Cannot create control version of class hudson.model.ChoiceParameterDefinition using {choices=[option1, option2], description=, name=select}
      java.lang.ClassCastException: hudson.model.ChoiceParameterDefinition.choices expects class java.lang.String but received class java.util.Arrays$ArrayList
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:317)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.buildArguments(DescribableModel.java:248)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:192)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.uninstantiate(DescribableModel.java:440)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.uninstantiate_(DescribableModel.java:466)
      	at org.jenkinsci.plugins.structs.describable.DescribableParameter.uncoerce(DescribableParameter.java:164)
      	at org.jenkinsci.plugins.structs.describable.DescribableParameter.uncoerce(DescribableParameter.java:158)
      	at org.jenkinsci.plugins.structs.describable.DescribableParameter.inspect(DescribableParameter.java:112)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.uninstantiate(DescribableModel.java:426)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.uninstantiate_(DescribableModel.java:466)
      	at org.jenkinsci.plugins.workflow.steps.StepDescriptor.defineArguments(StepDescriptor.java:114)
      	at org.jenkinsci.plugins.workflow.cps.Snippetizer.object2Groovy(Snippetizer.java:68)
      	at org.jenkinsci.plugins.workflow.cps.Snippetizer.doGenerateSnippet(Snippetizer.java:218)
      

      The generated snippet does not work later on runtime, throwing the same exception.

      Attachments

        Issue Links

          Activity

            Workaround: use this instead of the snippet generation code.

            choice = new ChoiceParameterDefinition('Param name', ['option1', 'option2'] as String[], 'Description')
            input message: 'Select one', parameters: [choice]
            
            amuniz Antonio Muñiz added a comment - Workaround: use this instead of the snippet generation code. choice = new ChoiceParameterDefinition( 'Param name' , [ 'option1' , 'option2' ] as String [], 'Description' ) input message: 'Select one' , parameters: [choice]
            hrmpw Patrick Wolf added a comment - - edited

            I think this is a duplicate ticket that was already filed. Do you know the original ticket on this danielbeck?

            Is this the same issue?
            https://issues.jenkins-ci.org/browse/JENKINS-29711

            hrmpw Patrick Wolf added a comment - - edited I think this is a duplicate ticket that was already filed. Do you know the original ticket on this danielbeck ? Is this the same issue? https://issues.jenkins-ci.org/browse/JENKINS-29711

            hrmpw I don't think so. This one is about the snippet generator picking up a wrong constructor.

            amuniz Antonio Muñiz added a comment - hrmpw I don't think so. This one is about the snippet generator picking up a wrong constructor.
            danielbeck Daniel Beck added a comment -

            hrmpw No, this one is specific to the ChoiceParameterDefinition type and inconsistency in its definition. Looks more like JENKINS-26143.

            danielbeck Daniel Beck added a comment - hrmpw No, this one is specific to the ChoiceParameterDefinition type and inconsistency in its definition. Looks more like JENKINS-26143 .

            Right, duplicated.

            amuniz Antonio Muñiz added a comment - Right, duplicated.
            gaeste Gael Stehagen added a comment -

            In case people are coming here as I did. I resolved it with using default snippet from current generator, but instead of the created array, I used the string option with inline line breaks. Otherwise I had to get the 'new ChoiceParameterDefinition(...)' method whitelisted.

            So I ended up with:
            ...

            choice(choices: "option1\noption2\noption3\n", description: 'delimiters within string', name: 'my param'),
            
            gaeste Gael Stehagen added a comment - In case people are coming here as I did. I resolved it with using default snippet from current generator, but instead of the created array, I used the string option with inline line breaks. Otherwise I had to get the 'new ChoiceParameterDefinition(...)' method whitelisted. So I ended up with: ... choice(choices: "option1\noption2\noption3\n" , description: 'delimiters within string' , name: 'my param' ),

            Thank you it works

            However, the pipeline syntax does not generate the correct syntax.

            My version of jenkins is 2.41

            nicolas_brosse BROSSE Nicolas added a comment - Thank you it works However, the pipeline syntax does not generate the correct syntax. My version of jenkins is 2.41
            danielbeck Daniel Beck added a comment -

            nicolas_brosse Unclear what you're saying. Note that this is resolved as duplicate of another issue, so it is known that the snippet generator is wrong.

            danielbeck Daniel Beck added a comment - nicolas_brosse Unclear what you're saying. Note that this is resolved as duplicate of another issue, so it is known that the snippet generator is wrong.

            People

              jglick Jesse Glick
              amuniz Antonio Muñiz
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: