| I'm had implement a jenkins.branch.BranchProperty that list all available ParameterDefinition. It normally works but when I select a ChoiceParameter I got the following Exception on save:
java.lang.IllegalArgumentException: Unable to convert to class java.lang.Object
at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:738)
at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
at org.kohsuke.stapler.RequestImpl.injectSetters(RequestImpl.java:834)
at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:784)
at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:678)
Caused: java.lang.IllegalArgumentException: Failed to instantiate class hudson.model.ParameterDefinition from {"name":"SCENARIO","choices":"1\n2\n3","description":"","":"","stapler-class":"hudson.model.ChoiceParameterDefinition","$class":"hudson.model.ChoiceParameterDefinition"}
at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:681)
at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:717)
at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:778)
Caused: java.lang.IllegalArgumentException: Failed to convert the parameterDefinitions parameter of the constructor public com.thedigitalstack.jenkins.plugins.parametricrun.ParameterBranchProperty(java.lang.String,boolean,java.lang.String,java.util.List)
at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:780)
at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:678)
Caused: java.lang.IllegalArgumentException: Failed to instantiate class jenkins.branch.BranchProperty from {"actionLabel":"Action Label","useBadge":false,"badgeTemplate":"Run with #$PARAMETER","parameterDefinitions":{"name":"SCENARIO","choices":"1\n2\n3","description":"","":"","stapler-class":"hudson.model.ChoiceParameterDefinition","$class":"hudson.model.ChoiceParameterDefinition"},"stapler-class":"com.thedigitalstack.jenkins.plugins.parametricrun.ParameterBranchProperty","$class":"com.thedigitalstack.jenkins.plugins.parametricrun.ParameterBranchProperty"}
...
The RequestImpl instantiate a ChoiceParameterDefinition and than using reflection lookup a setter @DataBoundSetter annotated for "choice" property. It takes the method parameter type (in case unlike case Object) and than use apache beanutil to convert the actual value "v1\n2\n3" (String) to Object. There are no converter registere for Object and it fails on RequestImpl.java |