Quantcast

Jelly - Save repeatable elements in a list

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Jelly - Save repeatable elements in a list

ThomasBrouwer
Hi there!

I'm trying to find the right code to store the inputs of a repeatable element into the same list. This is required because this is nested inside another repeatable element.

Currently my jelly code is:
      <f:repeatable field="categories" minimum="0">
        <table width="100%">
          <f:entry title="Category Name" field="categoryName">
            <f:textbox />
          </f:entry>
          
          <f:entry title="Labels">
          <f:repeatable field="allLabels" minimum="0">
          <table width="100%">
          <f:entry title="Label name" field="labelNames">
          <f:textbox />
          </f:entry>
          </table>
          <div align="right">
          <f:repeatableDeleteButton/>
        </div>
          </f:repeatable>
          </f:entry>
          
        </table>
        <div align="right">
          <f:repeatableDeleteButton/>
        </div>
      </f:repeatable> 

where the important bit is the labels fields.
The configure function in the DescriptorImpl class is:
        @Override
        public boolean configure(StaplerRequest req, JSONObject formData) throws FormException {
            req.bindJSON(this, formData);
            save();
            return true;
        }

and the info is stored in another class ThrottleCategory with constructor:
        @DataBoundConstructor
        public ThrottleCategory(String categoryName,
                                Integer maxConcurrentPerNode,
                                Integer maxConcurrentTotal,
                                List<String> allLabels) {
            this.maxConcurrentPerNode = maxConcurrentPerNode == null ? 0 : maxConcurrentPerNode;
            this.maxConcurrentTotal = maxConcurrentTotal == null ? 0 : maxConcurrentTotal;
            this.categoryName = categoryName;
            this.allLabels = allLabels;
        }

This all gives me an error suggesting the data from the list fields are in the wrong format or such:

Exception: java.lang.IllegalArgumentException: Failed to instantiate class hudson.plugins.throttleconcurrents.ThrottleJobProperty$ThrottleCategory from {"allLabels":[{"labelNames":"label_1"},{"labelNames":"label_2"}],"categoryName":"category_1"} 
Stacktrace:
javax.servlet.ServletException: java.lang.IllegalArgumentException: Failed to instantiate class hudson.plugins.throttleconcurrents.ThrottleJobProperty$ThrottleCategory from {"allLabels":[{"labelNames":"label_1"},{"labelNames":"label_2"}],"categoryName":"category_1"}
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:616)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:488)
	at org.kohsuke.stapler.Stapler.service(Stapler.java:162)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
	at winstone.ServletConfiguration.execute(ServletConfiguration.java:248)
	at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95)
	at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:98)
	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:50)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at winstone.RequestDispatcher.forward(RequestDispatcher.java:331)
	at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:215)
	at winstone.RequestHandlerThread.run(RequestHandlerThread.java:138)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: Failed to instantiate class hudson.plugins.throttleconcurrents.ThrottleJobProperty$ThrottleCategory from {"allLabels":[{"labelNames":"label_1"},{"labelNames":"label_2"}],"categoryName":"category_1"}
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:633)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:669)
	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:387)
	at hudson.plugins.throttleconcurrents.ThrottleJobProperty$DescriptorImpl.configure(ThrottleJobProperty.java:150)
	at jenkins.model.Jenkins.configureDescriptor(Jenkins.java:2686)
	at jenkins.model.Jenkins.doConfigSubmit(Jenkins.java:2649)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:288)
	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:151)
	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:90)
	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:111)
	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:574)
	... 37 more
Caused by: java.lang.IllegalArgumentException: Failed to convert the allLabels parameter of the constructor public hudson.plugins.throttleconcurrents.ThrottleJobProperty$ThrottleCategory(java.lang.String,java.lang.Integer,java.lang.Integer,java.util.List)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:627)
	... 52 more
Caused by: java.lang.IllegalArgumentException: Failed to instantiate class java.lang.String from {"labelNames":"label_1"}
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:633)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:678)
	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:377)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:625)
	... 52 more
Caused by: org.kohsuke.stapler.NoStaplerConstructorException: There's no @DataBoundConstructor on any constructor of class java.lang.String
	at org.kohsuke.stapler.RequestImpl.loadConstructorParamNames(RequestImpl.java:485)
	at org.kohsuke.stapler.RequestImpl.access$100(RequestImpl.java:76)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:612)
	... 55 more

What am I missing here/doing wrong?

Thank you!
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Jelly - Save repeatable elements in a list

ThomasBrouwer
Turns out the object belonging to allLabels was not automatically converted into an array or list of strings, but instead an array of JSONObjects. By adding this code I could convert it into an ArrayList<String>:

List<String> output = new ArrayList<String>();
       
for (JSONObject obj : json){
output.add(obj.getString(labelName));
ThrottleQueueTaskDispatcher.writeMessage("Yay! Has "+obj.getString(labelName));
}
       
return output;

However, something weird happens now: when I add three labels on the Jenkins configuration page, it remembers that I stored three of them, but when I then open the config page again, the three fields are left blank. Help?


On Monday, August 20, 2012 2:20:53 PM UTC+1, ThomasBrouwer wrote:
Hi there!

I'm trying to find the right code to store the inputs of a repeatable element into the same list. This is required because this is nested inside another repeatable element.

Currently my jelly code is:
      <f:repeatable field="categories" minimum="0">
        <table width="100%">
          <f:entry title="Category Name" field="categoryName">
            <f:textbox />
          </f:entry>
          
          <f:entry title="Labels">
          <f:repeatable field="allLabels" minimum="0">
          <table width="100%">
          <f:entry title="Label name" field="labelNames">
          <f:textbox />
          </f:entry>
          </table>
          <div align="right">
          <f:repeatableDeleteButton/>
        </div>
          </f:repeatable>
          </f:entry>
          
        </table>
        <div align="right">
          <f:repeatableDeleteButton/>
        </div>
      </f:repeatable> 

where the important bit is the labels fields.
The configure function in the DescriptorImpl class is:
        @Override
        public boolean configure(StaplerRequest req, JSONObject formData) throws FormException {
            req.bindJSON(this, formData);
            save();
            return true;
        }

and the info is stored in another class ThrottleCategory with constructor:
        @DataBoundConstructor
        public ThrottleCategory(String categoryName,
                                Integer maxConcurrentPerNode,
                                Integer maxConcurrentTotal,
                                List<String> allLabels) {
            this.maxConcurrentPerNode = maxConcurrentPerNode == null ? 0 : maxConcurrentPerNode;
            this.maxConcurrentTotal = maxConcurrentTotal == null ? 0 : maxConcurrentTotal;
            this.categoryName = categoryName;
            this.allLabels = allLabels;
        }

This all gives me an error suggesting the data from the list fields are in the wrong format or such:

Exception: java.lang.IllegalArgumentException: Failed to instantiate class hudson.plugins.throttleconcurrents.ThrottleJobProperty$ThrottleCategory from {"allLabels":[{"labelNames":"label_1"},{"labelNames":"label_2"}],"categoryName":"category_1"} 
Stacktrace:
javax.servlet.ServletException: java.lang.IllegalArgumentException: Failed to instantiate class hudson.plugins.throttleconcurrents.ThrottleJobProperty$ThrottleCategory from {"allLabels":[{"labelNames":"label_1"},{"labelNames":"label_2"}],"categoryName":"category_1"}
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:616)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:488)
	at org.kohsuke.stapler.Stapler.service(Stapler.java:162)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
	at winstone.ServletConfiguration.execute(ServletConfiguration.java:248)
	at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95)
	at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:98)
	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:50)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at winstone.RequestDispatcher.forward(RequestDispatcher.java:331)
	at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:215)
	at winstone.RequestHandlerThread.run(RequestHandlerThread.java:138)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: Failed to instantiate class hudson.plugins.throttleconcurrents.ThrottleJobProperty$ThrottleCategory from {"allLabels":[{"labelNames":"label_1"},{"labelNames":"label_2"}],"categoryName":"category_1"}
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:633)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:669)
	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:387)
	at hudson.plugins.throttleconcurrents.ThrottleJobProperty$DescriptorImpl.configure(ThrottleJobProperty.java:150)
	at jenkins.model.Jenkins.configureDescriptor(Jenkins.java:2686)
	at jenkins.model.Jenkins.doConfigSubmit(Jenkins.java:2649)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:288)
	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:151)
	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:90)
	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:111)
	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:574)
	... 37 more
Caused by: java.lang.IllegalArgumentException: Failed to convert the allLabels parameter of the constructor public hudson.plugins.throttleconcurrents.ThrottleJobProperty$ThrottleCategory(java.lang.String,java.lang.Integer,java.lang.Integer,java.util.List)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:627)
	... 52 more
Caused by: java.lang.IllegalArgumentException: Failed to instantiate class java.lang.String from {"labelNames":"label_1"}
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:633)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:678)
	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:377)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:625)
	... 52 more
Caused by: org.kohsuke.stapler.NoStaplerConstructorException: There's no @DataBoundConstructor on any constructor of class java.lang.String
	at org.kohsuke.stapler.RequestImpl.loadConstructorParamNames(RequestImpl.java:485)
	at org.kohsuke.stapler.RequestImpl.access$100(RequestImpl.java:76)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:612)
	... 55 more

What am I missing here/doing wrong?

Thank you!
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Jelly - Save repeatable elements in a list

ThomasBrouwer
In reply to this post by ThomasBrouwer
On, and the strange this is that the data is stored inside my objects, they're just not put into those fields when going to the config page again...

On Monday, August 20, 2012 2:20:53 PM UTC+1, ThomasBrouwer wrote:
Hi there!

I'm trying to find the right code to store the inputs of a repeatable element into the same list. This is required because this is nested inside another repeatable element.

Currently my jelly code is:
      <f:repeatable field="categories" minimum="0">
        <table width="100%">
          <f:entry title="Category Name" field="categoryName">
            <f:textbox />
          </f:entry>
          
          <f:entry title="Labels">
          <f:repeatable field="allLabels" minimum="0">
          <table width="100%">
          <f:entry title="Label name" field="labelNames">
          <f:textbox />
          </f:entry>
          </table>
          <div align="right">
          <f:repeatableDeleteButton/>
        </div>
          </f:repeatable>
          </f:entry>
          
        </table>
        <div align="right">
          <f:repeatableDeleteButton/>
        </div>
      </f:repeatable> 

where the important bit is the labels fields.
The configure function in the DescriptorImpl class is:
        @Override
        public boolean configure(StaplerRequest req, JSONObject formData) throws FormException {
            req.bindJSON(this, formData);
            save();
            return true;
        }

and the info is stored in another class ThrottleCategory with constructor:
        @DataBoundConstructor
        public ThrottleCategory(String categoryName,
                                Integer maxConcurrentPerNode,
                                Integer maxConcurrentTotal,
                                List<String> allLabels) {
            this.maxConcurrentPerNode = maxConcurrentPerNode == null ? 0 : maxConcurrentPerNode;
            this.maxConcurrentTotal = maxConcurrentTotal == null ? 0 : maxConcurrentTotal;
            this.categoryName = categoryName;
            this.allLabels = allLabels;
        }

This all gives me an error suggesting the data from the list fields are in the wrong format or such:

Exception: java.lang.IllegalArgumentException: Failed to instantiate class hudson.plugins.throttleconcurrents.ThrottleJobProperty$ThrottleCategory from {"allLabels":[{"labelNames":"label_1"},{"labelNames":"label_2"}],"categoryName":"category_1"} 
Stacktrace:
javax.servlet.ServletException: java.lang.IllegalArgumentException: Failed to instantiate class hudson.plugins.throttleconcurrents.ThrottleJobProperty$ThrottleCategory from {"allLabels":[{"labelNames":"label_1"},{"labelNames":"label_2"}],"categoryName":"category_1"}
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:616)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:488)
	at org.kohsuke.stapler.Stapler.service(Stapler.java:162)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
	at winstone.ServletConfiguration.execute(ServletConfiguration.java:248)
	at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95)
	at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:98)
	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:50)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
	at winstone.RequestDispatcher.forward(RequestDispatcher.java:331)
	at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:215)
	at winstone.RequestHandlerThread.run(RequestHandlerThread.java:138)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: Failed to instantiate class hudson.plugins.throttleconcurrents.ThrottleJobProperty$ThrottleCategory from {"allLabels":[{"labelNames":"label_1"},{"labelNames":"label_2"}],"categoryName":"category_1"}
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:633)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:669)
	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:387)
	at hudson.plugins.throttleconcurrents.ThrottleJobProperty$DescriptorImpl.configure(ThrottleJobProperty.java:150)
	at jenkins.model.Jenkins.configureDescriptor(Jenkins.java:2686)
	at jenkins.model.Jenkins.doConfigSubmit(Jenkins.java:2649)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:288)
	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:151)
	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:90)
	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:111)
	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:574)
	... 37 more
Caused by: java.lang.IllegalArgumentException: Failed to convert the allLabels parameter of the constructor public hudson.plugins.throttleconcurrents.ThrottleJobProperty$ThrottleCategory(java.lang.String,java.lang.Integer,java.lang.Integer,java.util.List)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:627)
	... 52 more
Caused by: java.lang.IllegalArgumentException: Failed to instantiate class java.lang.String from {"labelNames":"label_1"}
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:633)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:678)
	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:377)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:625)
	... 52 more
Caused by: org.kohsuke.stapler.NoStaplerConstructorException: There's no @DataBoundConstructor on any constructor of class java.lang.String
	at org.kohsuke.stapler.RequestImpl.loadConstructorParamNames(RequestImpl.java:485)
	at org.kohsuke.stapler.RequestImpl.access$100(RequestImpl.java:76)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:612)
	... 55 more

What am I missing here/doing wrong?

Thank you!
Loading...