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

Nested Views are incompatible with Config as Code

      Issue:
      When trying to import a yaml with config as code, if that yml code has nested views then it will fail due to a Null pointer

      Steps to reproduce:
      1. Create a view with nested views
      2. Export that config as code yaml
      3. Import the yaml and observe the null pointer

      The error:

      java.lang.Error: java.lang.reflect.InvocationTargetException
      	at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:110)
      	at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175)
      	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
      	at jenkins.model.Jenkins$5.runTask(Jenkins.java:1095)
      	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
      	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      Caused by: java.lang.reflect.InvocationTargetException
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104)
      	... 8 more
      Caused by: java.lang.NullPointerException
      	at hudson.plugins.nested_view.NestedView.save(NestedView.java:258)
      	at hudson.BulkChange.commit(BulkChange.java:98)
      	at io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:272)
      

      The cause:
      This is the code which causes the issue and it appears that the owner while doing an import does not exist.

      The fix:
      I think we should do a check there for "if no owner then the owner should be the default Jenkins instance.

      Thoughts?

          [JENKINS-59466] Nested Views are incompatible with Config as Code

          Alex Taylor added a comment -

          So I created this PR which does fix the error but I am not confident that this is the best fix since it would set the owner of all your nested views to the SYSTEM user or Jenkins user. That may be bad practice and make things break...

          Alex Taylor added a comment - So I created this PR which does fix the error but I am not confident that this is the best fix since it would set the owner of all your nested views to the SYSTEM user or Jenkins user. That may be bad practice and make things break...

          Alex Taylor added a comment -

          After testing out the PR, I have found that Nested views just pretty much doesnt work with Config as code. This stops if from breaking but the views dont actually work which means either nested views needs to ensure that it is following Config as Code practices or CasC needs to change so that this plugin works with it.

          I am assuming the former is going to be easiest.

          Technically, this defect is "done" but the plugin still doesnt work with CasC

          Alex Taylor added a comment - After testing out the PR, I have found that Nested views just pretty much doesnt work with Config as code. This stops if from breaking but the views dont actually work which means either nested views needs to ensure that it is following Config as Code practices or CasC needs to change so that this plugin works with it. I am assuming the former is going to be easiest. Technically, this defect is "done" but the plugin still doesnt work with CasC

          Mustafa Ozturk added a comment - - edited

          I bumped into the same issue. As ataylor described, it's due to undefined owner property, Jenkins tries to read the owner of a view to generate the url for that view but since the owner is null, it causes NullPointerExceptions to be thrown.

           java.lang.NullPointerException
           	at hudson.model.View.isDefault(View.java:441)
           	at hudson.model.View.getUrl(View.java:543)
           Caused: java.lang.reflect.InvocationTargetException
           	at sun.reflect.GeneratedMethodAccessor39.invoke(Unknown Source)
           	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
           	at java.lang.reflect.Method.invoke(Method.java:498)
           	at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125)
           	at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314)
           	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185)
           	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75)
           	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
           	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
           	at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
           	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
           	at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74)
           	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:61)
           	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsString(ExpressionSupport.java:46)
           	at org.apache.commons.jelly.expression.CompositeExpression.evaluateAsString(CompositeExpression.java:256)
           	at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.buildAttributes(ReallyStaticTagLibrary.java:111)
           	at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.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.TagSupport.invokeBody(TagSupport.java:161)
           	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
           	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.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
           	at org.apache.commons.jelly.tags.core.OtherwiseTag.doTag(OtherwiseTag.java:41)
           	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.TagSupport.invokeBody(TagSupport.java:161)
           	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38)
           	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.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
           	at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95)
           	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.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.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.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$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.CallTagLibScript.run(CallTagLibScript.java:120)
           	at org.kohsuke.stapler.jelly.CompressTag.doTag(CompressTag.java:44)
           	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
           	at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95)
           	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.ScriptInvoker.execute(ScriptInvoker.java:56)
           	at org.kohsuke.stapler.jelly.ScriptInvoker.execute(ScriptInvoker.java:43)
           	at org.kohsuke.stapler.Facet.handleIndexRequest(Facet.java:282)
           	at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:99)
           	at org.kohsuke.stapler.IndexViewDispatcher.dispatch(IndexViewDispatcher.java:32)
           	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747)
           	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878)
           	at org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:280)
           	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
           	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747)
           	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878)
           	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:676)
           	at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
           	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
           	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)
           	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617)
           	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
           	at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76)
           	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
           	at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:128)
           	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
           	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
           	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
           	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:159)
           	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
           	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
           	at org.jenkinsci.plugins.reverse_proxy_auth.ReverseProxySecurityRealm$1.doFilter(ReverseProxySecurityRealm.java:559)
           	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
           	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:119)
           	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 jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
           	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:90)
           	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
           	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90)
           	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
           	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
           	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
           	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
           	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
           	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
           	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
           	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
           	at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36)
           	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
           	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545)
           	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
           	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:566)
           	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
           	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
           	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)
           	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
           	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1300)
           	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
           	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)
           	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580)
           	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
           	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1215)
           	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
           	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
           	at org.eclipse.jetty.server.Server.handle(Server.java:500)
           	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
           	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547)
           	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
           	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)
           	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
           	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
           	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
           	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
           	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
           	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
           	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
           	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)
           	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
           	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
          

          Mustafa Ozturk added a comment - - edited I bumped into the same issue. As ataylor described, it's due to undefined owner property, Jenkins tries to read the owner of a view to generate the url for that view but since the owner is null, it causes NullPointerExceptions to be thrown. java.lang.NullPointerException at hudson.model.View.isDefault(View.java:441) at hudson.model.View.getUrl(View.java:543) Caused: java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor39.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125) at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314) at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185) at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75) at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83) at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57) at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51) at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80) at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74) at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:61) at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsString(ExpressionSupport.java:46) at org.apache.commons.jelly.expression.CompositeExpression.evaluateAsString(CompositeExpression.java:256) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.buildAttributes(ReallyStaticTagLibrary.java:111) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.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.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150) 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.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.OtherwiseTag.doTag(OtherwiseTag.java:41) 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.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38) 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.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95) 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.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.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.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$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.CallTagLibScript.run(CallTagLibScript.java:120) at org.kohsuke.stapler.jelly.CompressTag.doTag(CompressTag.java:44) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95) 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.ScriptInvoker.execute(ScriptInvoker.java:56) at org.kohsuke.stapler.jelly.ScriptInvoker.execute(ScriptInvoker.java:43) at org.kohsuke.stapler.Facet.handleIndexRequest(Facet.java:282) at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:99) at org.kohsuke.stapler.IndexViewDispatcher.dispatch(IndexViewDispatcher.java:32) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878) at org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:280) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:676) at org.kohsuke.stapler.Stapler.service(Stapler.java:238) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154) at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:128) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:159) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at org.jenkinsci.plugins.reverse_proxy_auth.ReverseProxySecurityRealm$1.doFilter(ReverseProxySecurityRealm.java:559) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 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:119) 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 jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) 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:90) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:566) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1300) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1215) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.Server.handle(Server.java:500) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)

          Tobias B added a comment -

          I would very much like to see if Nested Views could be supported in Jenkins Configuration As Code.

          I have sent half a day trying to make sense of the JCasC Guide to developers, but their example does not look like the code in Nested Views and I couldn't make any headway.

          Does anyone have any pointers or more info on how to convert / add support? I have unfortunately never written a plugin for Jenkins, so that is new for me as well.

           

          Tobias B added a comment - I would very much like to see if Nested Views could be supported in Jenkins Configuration As Code. I have sent half a day trying to make sense of the JCasC Guide to developers , but their example does not look like the code in Nested Views and I couldn't make any headway. Does anyone have any pointers or more info on how to convert / add support? I have unfortunately never written a plugin for Jenkins, so that is new for me as well.  

            ewel Ewelina Wilkosz
            ataylor Alex Taylor
            Votes:
            2 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated: