Jelly Errors / Debug Advice?

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Jelly Errors / Debug Advice?

Eric Crahen-3
I'm venturing into writing plugins for the first time, so I'm just starting to learn how the global.jelly and config.jelly's work. This is my first time playing with jelly so its all a learning experience for me.

After activating the HelloWorld plugin, I've noticed that when I go into the Job Configuration screen, it renders correctly - but I sometimes see the error below depending on what I've done to the file. For example, if I comment out the body of the xml so its just the opening and closing j:jelly tag, or if I actually remove the configure.jelly file altogether. I only know the problem has to do with this file because of the screen it happens on and when I see errors on stderr (and because I'm only changing one thing at a time)

From the error, I really don't know what is wrong - or what file is there. I can deduce the file with the problem through the means above, but I haven't yet learned what is expected. I'm guessing it must be the missing f:entry tag. I'll figure it out shortly, but I'm wondering if there are some techniques to better debug this kind of stuff that you've developed through your experience in creating the built-in jelly components?

Thanks,

2007-01-25 23:38:28.087::INFO:  Started SelectChannelConnector @ 0.0.0.0:8080
java.lang.NullPointerException
        at hudson.Functions.isMultiline(Functions.java :312)
        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:585)
        at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:255)
        at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104)
        at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:82)
        at org.apache.commons.jexl.parser.ASTReference.value (ASTReference.java:56)
        at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:50)
        at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:79)
        at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:69)
        at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:61)
        at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean (ExpressionSupport.java:71)
        at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:44)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run (ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag (StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag (DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag (InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run (ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run (StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:83)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.ForEachTag.doTag (ForEachTag.java:150)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag (InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag (DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag (DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.kohsuke.stapler.jelly.IncludeTag.doTag (IncludeTag.java:83)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag (InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run (ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run (StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.IfTag.doTag (IfTag.java:42)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag (DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag (InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run (ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run (StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag (StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run (ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run (StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.kohsuke.stapler.jelly.JellyClassTearOff.invokeScript(JellyClassTearOff.java:65)
        at org.kohsuke.stapler.MetaClass$3.dispatch (MetaClass.java:100)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:224)
        at org.kohsuke.stapler.MetaClass$9.doDispatch(MetaClass.java:207)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch (NameBasedDispatcher.java:30)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:224)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:169)
        at org.kohsuke.stapler.Stapler.service(Stapler.java :68)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
        at org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:367)
        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:689)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
        at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146)
        at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
        at org.mortbay.jetty.Server.handle(Server.java :285)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:751)
        at org.mortbay.jetty.HttpParser.parseNext (HttpParser.java:500)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
        at org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:329)
        at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
[WARN] JexlExpression - -Caught exception evaluating: h.isMultiline(attrs.value). Reason: java.lang.NullPointerException <java.lang.NullPointerException>
java.lang.NullPointerException
        at hudson.Functions.isMultiline(Functions.java:312)
        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:585)
        at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:255)
        at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104)
        at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:82)
        at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:56)
        at org.apache.commons.jexl.parser.ASTReferenceExpression.value (ASTReferenceExpression.java:50)
        at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:79)
        at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:69)
        at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:61)
        at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:71)
        at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:44)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java :95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag (StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag (DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag (InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run (ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run (StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:83)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.ForEachTag.doTag (ForEachTag.java:150)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag (InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag (DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag (DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.kohsuke.stapler.jelly.IncludeTag.doTag (IncludeTag.java:83)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apa
Reply | Threaded
Open this post in threaded view
|

Re: Jelly Errors / Debug Advice?

Eric Crahen-3
I think this is actually a bug in Functions, but any tips on debugging Jelly would still be handy :)

https://hudson.dev.java.net/issues/show_bug.cgi?id=252


On 1/25/07, Eric Crahen <[hidden email]> wrote:
I'm venturing into writing plugins for the first time, so I'm just starting to learn how the global.jelly and config.jelly's work. This is my first time playing with jelly so its all a learning experience for me.

After activating the HelloWorld plugin, I've noticed that when I go into the Job Configuration screen, it renders correctly - but I sometimes see the error below depending on what I've done to the file. For example, if I comment out the body of the xml so its just the opening and closing j:jelly tag, or if I actually remove the configure.jelly file altogether. I only know the problem has to do with this file because of the screen it happens on and when I see errors on stderr (and because I'm only changing one thing at a time)

From the error, I really don't know what is wrong - or what file is there. I can deduce the file with the problem through the means above, but I haven't yet learned what is expected. I'm guessing it must be the missing f:entry tag. I'll figure it out shortly, but I'm wondering if there are some techniques to better debug this kind of stuff that you've developed through your experience in creating the built-in jelly components?

Thanks,

2007-01-25 23:38:28.087::INFO:  Started SelectChannelConnector @ <a href="http://0.0.0.0:8080" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">0.0.0.0:8080
java.lang.NullPointerException
        at hudson.Functions.isMultiline(Functions.java :312)
        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:585)
        at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:255)
        at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104)
        at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:82)
        at org.apache.commons.jexl.parser.ASTReference.value (ASTReference.java:56)
        at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:50)
        at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:79)
        at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:69)
        at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:61)
        at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean (ExpressionSupport.java:71)
        at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:44)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run (ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag (StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag (DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag (InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run (ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run (StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:83)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.ForEachTag.doTag (ForEachTag.java:150)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag (InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag (DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag (DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.kohsuke.stapler.jelly.IncludeTag.doTag (IncludeTag.java:83)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag (InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run (ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run (StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.IfTag.doTag (IfTag.java:42)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag (DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag (InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run (ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run (StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag (StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run (ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run (StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.kohsuke.stapler.jelly.JellyClassTearOff.invokeScript(JellyClassTearOff.java:65)
        at org.kohsuke.stapler.MetaClass$3.dispatch (MetaClass.java:100)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:224)
        at org.kohsuke.stapler.MetaClass$9.doDispatch(MetaClass.java:207)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch (NameBasedDispatcher.java:30)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:224)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:169)
        at org.kohsuke.stapler.Stapler.service(Stapler.java :68)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
        at org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:367)
        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:689)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
        at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146)
        at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
        at org.mortbay.jetty.Server.handle(Server.java :285)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:751)
        at org.mortbay.jetty.HttpParser.parseNext (HttpParser.java:500)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
        at org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:329)
        at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
[WARN] JexlExpression - -Caught exception evaluating: h.isMultiline(attrs.value). Reason: java.lang.NullPointerException <java.lang.NullPointerException>
java.lang.NullPointerException
        at hudson.Functions.isMultiline(Functions.java:312)
        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:585)
        at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:255)
        at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104)
        at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:82)
        at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:56)
        at org.apache.commons.jexl.parser.ASTReferenceExpression.value (ASTReferenceExpression.java:50)
        at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:79)
        at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:69)
        at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:61)
        at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java :71)
        at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:44)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java :95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag (StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag (DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag (InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody (TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run (ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
        at org.apache.commons.jelly.impl.StaticTagScript.run (StaticTagScript.java:112)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:83)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.JellyTag.doTag (JellyTag.java:45)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
        at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
        at org.apache.commons.jelly.impl.TagScript.run (TagScript.java:262)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
        at org.apache.commons.jelly.tags.core.ForEachTag.doTa
Reply | Threaded
Open this post in threaded view
|

Re: Jelly Errors / Debug Advice?

Kohsuke Kawaguchi-2
In reply to this post by Eric Crahen-3
Eric Crahen wrote:
> I'm venturing into writing plugins for the first time, so I'm just starting
> to learn how the global.jelly and config.jelly's work. This is my first time
> playing with jelly so its all a learning experience for me.

BTW, what plugin are you writing? Would you be interested in hosting
that on http://hudson.dev.java.net/ ?


--
Kohsuke Kawaguchi
Sun Microsystems                   [hidden email]

smime.p7s (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Jelly Errors / Debug Advice?

Eric Crahen-3
I very much want to contribute back some plugins.

- One that will enable Ivy + user defined Ivy resolvers in a BuildStep; Ivy artifact publishing after a successful build;.Reporting that will draw a graph of the dependencies of the project just built, again leveraging Ivy's info.
- One that will enable FindBugs reporting.
- One that will enable Checkstyle reporting.
- One that will enable JavaDoc publishing. The idea here being you check a box and your docs get moved over commons-vfs to wherever you want your docs to be. That should let you use a variety of transports to get your docs to a webserver that's handy for you. Configuring the various vfs options is probably the tricky part.
- One that will enable Cobertura (possibly as an option to the Emma plugin in, some of my teammates prefer this tool) reporting. (This one is the last one since I don't need it much when the Emma option is there.)

This is all stuff that typically winds up in all my build.xml's and moving it out into the CBS would be a better way for me to manage this type of after I've built something I like (e.g. all tests passed) accounting. Plus, managers love the graphs ;-)


On 1/26/07, Kohsuke Kawaguchi <[hidden email]> wrote:
Eric Crahen wrote:
> I'm venturing into writing plugins for the first time, so I'm just starting
> to learn how the global.jelly and config.jelly's work. This is my first time
> playing with jelly so its all a learning experience for me.

BTW, what plugin are you writing? Would you be interested in hosting
that on http://hudson.dev.java.net/ ?


--
Kohsuke Kawaguchi
Sun Microsystems                   [hidden email]




--

- Eric
Reply | Threaded
Open this post in threaded view
|

Re: Jelly Errors / Debug Advice?

Kohsuke Kawaguchi-2
In reply to this post by Eric Crahen-3

Thanks for filing this as a bug, and here's how you usually debug this.

First, the ultimate root cause of this is NPE in Hudson code.

 > java.lang.NullPointerException
 >         at hudson.Functions.isMultiline(Functions.java:312)
 >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

Then Jelly reports that as:

>> [WARN] JexlExpression - -Caught exception evaluating: h.isMultiline(
>> attrs.value). Reason: java.lang.NullPointerException <
>> java.lang.NullPointerException>

... so you know where (although limited) the exception happened. I guess
it would be really nice if Jelly can report the file name and line
number where this happened, and all the jelly script "call stack"
leading up to this point --- I'll see if I can make that change.

In the mean time, if you need that information, you either needs to run
this in the debugger (the doc contains an explanation of how to do it.)
Or often a simple grepping gets you where you have the code.

Eric Crahen wrote:

> I'm venturing into writing plugins for the first time, so I'm just starting
> to learn how the global.jelly and config.jelly's work. This is my first time
> playing with jelly so its all a learning experience for me.
>
> After activating the HelloWorld plugin, I've noticed that when I go into the
> Job Configuration screen, it renders correctly - but I sometimes see the
> error below depending on what I've done to the file. For example, if I
> comment out the body of the xml so its just the opening and closing j:jelly
> tag, or if I actually remove the configure.jelly file altogether. I only
> know the problem has to do with this file because of the screen it happens
> on and when I see errors on stderr (and because I'm only changing one thing
> at a time)
>
>>From the error, I really don't know what is wrong - or what file is there. I
> can deduce the file with the problem through the means above, but I haven't
> yet learned what is expected. I'm guessing it must be the missing f:entry
> tag. I'll figure it out shortly, but I'm wondering if there are some
> techniques to better debug this kind of stuff that you've developed through
> your experience in creating the built-in jelly components?

--
Kohsuke Kawaguchi
Sun Microsystems                   [hidden email]

smime.p7s (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Jelly Errors / Debug Advice?

Kohsuke Kawaguchi-2
In reply to this post by Eric Crahen-3

Cool. Let me know your java.net id so that I can add you as a committer.

If plugins are in the CVS repository, even if they are still a work in
progress, it's much easier for others to chime in and help (including
myself.)

Eric Crahen wrote:

> I very much want to contribute back some plugins.
>
> - One that will enable Ivy + user defined Ivy resolvers in a BuildStep; Ivy
> artifact publishing after a successful build;.Reporting that will draw a
> graph of the dependencies of the project just built, again leveraging Ivy's
> info.
> - One that will enable FindBugs reporting.
> - One that will enable Checkstyle reporting.
> - One that will enable JavaDoc publishing. The idea here being you check a
> box and your docs get moved over commons-vfs to wherever you want your docs
> to be. That should let you use a variety of transports to get your docs to a
> webserver that's handy for you. Configuring the various vfs options is
> probably the tricky part.
> - One that will enable Cobertura (possibly as an option to the Emma plugin
> in, some of my teammates prefer this tool) reporting. (This one is the last
> one since I don't need it much when the Emma option is there.)
>
> This is all stuff that typically winds up in all my build.xml's and moving
> it out into the CBS would be a better way for me to manage this type of
> after I've built something I like (e.g. all tests passed) accounting. Plus,
> managers love the graphs ;-)


--
Kohsuke Kawaguchi
Sun Microsystems                   [hidden email]

smime.p7s (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Jelly Errors / Debug Advice?

Eric Crahen-3
Will do. I need to get approval from my employer, but that shouldn't be a problem - just takes a few days. I'll let you know once I have it

On 1/26/07, Kohsuke Kawaguchi <[hidden email]> wrote:

Cool. Let me know your java.net id so that I can add you as a committer.

If plugins are in the CVS repository, even if they are still a work in
progress, it's much easier for others to chime in and help (including
myself.)

Eric Crahen wrote:

> I very much want to contribute back some plugins.
>
> - One that will enable Ivy + user defined Ivy resolvers in a BuildStep; Ivy
> artifact publishing after a successful build;.Reporting that will draw a
> graph of the dependencies of the project just built, again leveraging Ivy's
> info.
> - One that will enable FindBugs reporting.
> - One that will enable Checkstyle reporting.
> - One that will enable JavaDoc publishing. The idea here being you check a
> box and your docs get moved over commons-vfs to wherever you want your docs
> to be. That should let you use a variety of transports to get your docs to a
> webserver that's handy for you. Configuring the various vfs options is
> probably the tricky part.
> - One that will enable Cobertura (possibly as an option to the Emma plugin
> in, some of my teammates prefer this tool) reporting. (This one is the last
> one since I don't need it much when the Emma option is there.)
>
> This is all stuff that typically winds up in all my build.xml's and moving
> it out into the CBS would be a better way for me to manage this type of
> after I've built something I like ( e.g. all tests passed) accounting. Plus,
> managers love the graphs ;-)



--
Kohsuke Kawaguchi
Sun Microsystems                   [hidden email]





--

- Eric