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

Crash when using Folders plugin: com.cloudbees.hudson.plugins.folder.Folder cannot be cast to hudson.model.Job

    Details

    • Similar Issues:

      Description

      javax.servlet.ServletException: org.apache.commons.jelly.JellyTagException: jar:file:/C:/Program%20Files%20(x86)/Jenkins/plugins/xfpanel/WEB-INF/lib/classes.jar!/maps/hudson/plugin/xfpanel/XFPanelView/configure-entries.jelly:43:73: <j:invoke> method getPrioritySortedJobs threw exception: com.cloudbees.hudson.plugins.folder.Folder cannot be cast to hudson.model.Job
      at org.kohsuke.stapler.jelly.JellyFacet$1.dispatch(JellyFacet.java:103)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
      at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
      at org.kohsuke.stapler.Stapler.service(Stapler.java:225)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
      at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
      at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
      at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
      at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:74)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
      at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
      at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
      at org.eclipse.jetty.server.Server.handle(Server.java:370)
      at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
      at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
      at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
      at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
      at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
      at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
      at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
      at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
      at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
      Caused by: org.apache.commons.jelly.JellyTagException: jar:file:/C:/Program%20Files%20(x86)/Jenkins/plugins/xfpanel/WEB-INF/lib/classes.jar!/maps/hudson/plugin/xfpanel/XFPanelView/configure-entries.jelly:43:73: <j:invoke> method getPrioritySortedJobs threw exception: com.cloudbees.hudson.plugins.folder.Folder cannot be cast to hudson.model.Job
      at org.apache.commons.jelly.tags.core.InvokeTag.doTag(InvokeTag.java:109)
      at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
      at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
      at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
      at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
      at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
      at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
      at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
      at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
      at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
      at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
      at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
      at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
      at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
      at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
      at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
      at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
      at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
      at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
      at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
      at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
      at org.kohsuke.stapler.jelly.JellyFacet$1.dispatch(JellyFacet.java:95)
      ... 66 more
      Caused by: java.lang.ClassCastException: com.cloudbees.hudson.plugins.folder.Folder cannot be cast to hudson.model.Job
      at maps.hudson.plugin.xfpanel.XFPanelView.getPrioritySortedJobs(XFPanelView.java:396)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:282)
      at org.apache.commons.jelly.tags.core.InvokeTag.doTag(InvokeTag.java:97)
      ... 127 more

        Attachments

          Activity

          Hide
          oleg_nenashev Oleg Nenashev added a comment -

          It is a wrong items handling in xfpanel plugin.
          Currently, the plugin passes Jenkins Items to a method, which takes only Jobs.

          https://github.com/jenkinsci/xfpanel-plugin/blob/cfeaa9101e1634e795dd885368797a563c8c2ff9/src/main/resources/maps/hudson/plugin/xfpanel/XFPanelView/configure-entries.jelly

          <j:invoke method="getPrioritySortedJobs" var="prioJobs" on="${it}">
            <j:arg type="java.util.Collection" value="${app.items}" />
          </j:invoke>
          

          https://github.com/jenkinsci/xfpanel-plugin/blob/cfeaa9101e1634e795dd885368797a563c8c2ff9/src/main/java/maps/hudson/plugin/xfpanel/XFPanelView.java

              public Collection<Job<?, ?>> getPrioritySortedJobs(Collection<Job<?, ?>> jobs) {
                  if (jobs != null) {
                      List<Job<?, ?>> sortedJobs = new ArrayList<Job<?, ?>>();
                      Map<Integer, Job<?, ?>> jobMap = new HashMap<Integer, Job<?, ?>>();
          
                      int priority = 0, added = 0;
                      if (priorityPerJob != null) {
          
                          // Set elements
          EXCEPTION(386) ==>  for (Job<?, ?> job: jobs) {
                         ....
          
          
          
          Show
          oleg_nenashev Oleg Nenashev added a comment - It is a wrong items handling in xfpanel plugin. Currently, the plugin passes Jenkins Items to a method, which takes only Jobs. https://github.com/jenkinsci/xfpanel-plugin/blob/cfeaa9101e1634e795dd885368797a563c8c2ff9/src/main/resources/maps/hudson/plugin/xfpanel/XFPanelView/configure-entries.jelly <j:invoke method="getPrioritySortedJobs" var="prioJobs" on="${it}"> <j:arg type="java.util.Collection" value="${app.items}" /> </j:invoke> https://github.com/jenkinsci/xfpanel-plugin/blob/cfeaa9101e1634e795dd885368797a563c8c2ff9/src/main/java/maps/hudson/plugin/xfpanel/XFPanelView.java public Collection<Job<?, ?>> getPrioritySortedJobs(Collection<Job<?, ?>> jobs) { if (jobs != null) { List<Job<?, ?>> sortedJobs = new ArrayList<Job<?, ?>>(); Map<Integer, Job<?, ?>> jobMap = new HashMap<Integer, Job<?, ?>>(); int priority = 0, added = 0; if (priorityPerJob != null) { // Set elements EXCEPTION(386) ==> for (Job<?, ?> job: jobs) { ....
          Hide
          jglick Jesse Glick added a comment -

          Should use getAllItems(Job.class) if that is what you wanted.

          Show
          jglick Jesse Glick added a comment - Should use getAllItems(Job.class) if that is what you wanted.
          Hide
          tomaszbech Tomasz Bech added a comment -

          IMHO https://wiki.jenkins-ci.org/display/JENKINS/Nested+View+Plugin
          does similar thing and 'folder' is view not a job.

          Show
          tomaszbech Tomasz Bech added a comment - IMHO https://wiki.jenkins-ci.org/display/JENKINS/Nested+View+Plugin does similar thing and 'folder' is view not a job.
          Hide
          splashnenen Alexandre Aubert added a comment -

          Hi Tomasz Bech,
          It could be indeed considered as view but it becomes different thing when jobs in different have same name. I know that it's not ideal situation but it is mine for now...
          The xfpanel plugin is to me the best one for setting up a radiator but configuration crashes when using these folders. Migrating to nested views would imply renaming all jobs to avoid name conflicts and it appears to be really difficult...
          Could you help on avoiding this crash ?

          Show
          splashnenen Alexandre Aubert added a comment - Hi Tomasz Bech , It could be indeed considered as view but it becomes different thing when jobs in different have same name. I know that it's not ideal situation but it is mine for now... The xfpanel plugin is to me the best one for setting up a radiator but configuration crashes when using these folders. Migrating to nested views would imply renaming all jobs to avoid name conflicts and it appears to be really difficult... Could you help on avoiding this crash ?
          Hide
          jglick Jesse Glick added a comment -

          Folders are views are quite different things.

          Probably a five-minute fix if anyone is maintaining this plugin. PR upon request.

          Show
          jglick Jesse Glick added a comment - Folders are views are quite different things. Probably a five-minute fix if anyone is maintaining this plugin. PR upon request.
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: tomaszbech
          Path:
          src/main/java/maps/hudson/plugin/xfpanel/XFPanelView.java
          src/main/resources/maps/hudson/plugin/xfpanel/XFPanelView/configure-entries.jelly
          src/main/resources/maps/hudson/plugin/xfpanel/XFPanelView/maindisplay.jelly
          http://jenkins-ci.org/commit/xfpanel-plugin/312109b162c551d2a7003c80724ac9bac07563d7
          Log:
          [FIXED JENKINS-23525]

          Crash when using Folders plugin:
          com.cloudbees.hudson.plugins.folder.Folder cannot be cast to
          hudson.model.Job

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: tomaszbech Path: src/main/java/maps/hudson/plugin/xfpanel/XFPanelView.java src/main/resources/maps/hudson/plugin/xfpanel/XFPanelView/configure-entries.jelly src/main/resources/maps/hudson/plugin/xfpanel/XFPanelView/maindisplay.jelly http://jenkins-ci.org/commit/xfpanel-plugin/312109b162c551d2a7003c80724ac9bac07563d7 Log: [FIXED JENKINS-23525] Crash when using Folders plugin: com.cloudbees.hudson.plugins.folder.Folder cannot be cast to hudson.model.Job
          Hide
          tomaszbech Tomasz Bech added a comment -

          I've fixed 'configuration' view and folder icon is hidden on xfpanel view.
          However Folders are using own containers for jobs - so there can be some issues there, but baiscally xfpanel view created in the folder should work.

          Show
          tomaszbech Tomasz Bech added a comment - I've fixed 'configuration' view and folder icon is hidden on xfpanel view. However Folders are using own containers for jobs - so there can be some issues there, but baiscally xfpanel view created in the folder should work.
          Hide
          splashnenen Alexandre Aubert added a comment -

          Thanks a lot ! I upgraded and i can configure my view normally !

          Show
          splashnenen Alexandre Aubert added a comment - Thanks a lot ! I upgraded and i can configure my view normally !

            People

            • Assignee:
              julienrenaut Julien RENAUT
              Reporter:
              stuartwhelan Stuart Whelan
            • Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: