Actually... getStartNode marked with @Nonnull, as well as getExecution(), so one of them is null. Execution maybe?
On Tue, Mar 22, 2016 at 8:17 AM Sergei Egorov <[email protected]> wrote: > Hi Michael, > > Wow, interesting finding! > > I checked with the sources and looks like it's not an issue of the plugin > itself, but StepEndNode. Jackson in plugin configured to serialize only > pre-configured fields/methods, and any new object in the domain will not > affect it. > > What I see here is that StepEndNode::getTypeDisplayName throws an NPE. > From StepEndNode's source code, I see that there are no checks for > getStartNode() result, and for some reason it's null. This is a good place > to start if you want to figure out what's wrong in your setup (even better > if you can put conditional breakpoint on getTypeDisplayName and > "getStartNode() == null", because I see (in code) that it might be null, > but getTypeDisplayName is not null-safe. > > On Tue, Mar 22, 2016 at 8:00 AM Michael Neale <[email protected]> > wrote: > >> As luck would have it, I notice this is tripped by by having global lib >> variables added in (basically, DSLs). Is there a JIRA project for this? >> >> (not a huge thing, I can't imagine many would run into this, but it looks >> like it gets upset if not all the things are serializable). >> >> Caused by: com.fasterxml.jackson.databind.JsonMappingException: (was >> java.lang.NullPointerException) (through reference chain: >> org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode["typeDisplayName"]) >> >> at >> com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:141) >> >> at >> com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:3559) >> >> at >> com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:2909) >> >> at >> com.github.bsideup.jenkins.pipeline.ui.view.PipelineViewApi.doNodes(PipelineViewApi.java:75) >> >> ... 89 more >> >> Caused by: java.lang.IllegalArgumentException: (was >> java.lang.NullPointerException) (through reference chain: >> org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode["typeDisplayName"]) >> >> at >> com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3459) >> >> at >> com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:3378) >> >> at >> com.github.bsideup.jenkins.pipeline.ui.view.PipelineViewApi$2.apply(PipelineViewApi.java:78) >> >> at >> com.github.bsideup.jenkins.pipeline.ui.view.PipelineViewApi$2.apply(PipelineViewApi.java:75) >> >> at com.google.common.collect.Iterators$8.next(Iterators.java:812) >> >> at >> com.fasterxml.jackson.databind.ser.std.IterableSerializer.serializeContents(IterableSerializer.java:89) >> >> at >> com.fasterxml.jackson.databind.ser.std.IterableSerializer.serialize(IterableSerializer.java:74) >> >> at >> com.fasterxml.jackson.databind.ser.std.IterableSerializer.serialize(IterableSerializer.java:12) >> >> at >> com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:130) >> >> ... 92 more >> >> On Tuesday, March 22, 2016 at 10:49:54 AM UTC+11, Michael Neale wrote: >>> >>> Very cool, and I like the use of react! >>> >>> On Monday, March 21, 2016 at 5:52:04 PM UTC+11, Sergei Egorov wrote: >>>> >>>> Hey everyone, >>>> >>>> Yesterday I decided to publish sources for my pipeline visualization >>>> plugin: https://github.com/bsideup/jenkins-pipeline-view >>>> >>>> <https://lh3.googleusercontent.com/-t28IjO2m73U/Vu-VVrauoEI/AAAAAAAAAyI/tiF8TH7YVCYiqI4n78DvC0FQ21ir46LNg/s1600/screenshot.png> >>>> >>>> >>>> What's cool about it? >>>> First of all, it *can handle any graph* provided by pipeline because >>>> it uses very powerful *JS graph library* to position steps. >>>> Also, it's a *React* application, written in *ES7* (not even ES6!), >>>> with ImmutableJS and RxJS inside - so hipsters will be happy :D But in >>>> fact, it means that it's damn easy to develop this plugin and provide more >>>> functionality. >>>> I use *Webpack* to bundle everything (JS, CSS, fonts, images, SVG >>>> icons) in one single pipe.js file. *No Jenkins JS Modules*, no >>>> conflicts, no impact on others. Even CSS will not conflict because of >>>> *CSS-modules* ( http://glenmaddern.com/articles/css-modules ) >>>> All icons are SVG ones and look good on any screen, retina or not, and >>>> any zoom level. >>>> >>>> I use Jackson on the backend side to serialize FlowNodes and their >>>> actions. *Why Jackson?* Because it was much easier to implement >>>> serialization of selected (non-exposed) fields and class info included >>>> compared to Stapler. I saw something were done about classinfo in Stapler, >>>> but at the moment of creation of this plugin, it wasn't delivered to >>>> Jenkins core yet. Also, *almost none of the Pipeline actions are >>>> @Expose-d*. >>>> >>>> I use *gradle-jpi-plugin* instead of Maven because it's much easier to >>>> describe some complex build process with Gradle, especially when frontend >>>> build is involved. In fact, it's just one line: >>>> >>>> https://github.com/bsideup/jenkins-pipeline-view/blob/954b895b6574cdf34815ff94a4a8db3ad3811aeb/build.gradle#L61 >>>> >>>> >>>> Future development >>>> Will I continue to develop it? Definitely! Here, *at ZeroTurnaround*, >>>> we use Jenkins a lot, and eventually we will migrate to the pipelines, and >>>> proper visualization of the process is a must for us. And feel free to >>>> contribute as well, it's really a good chance to learn *modern JS >>>> stack* as well :) >>>> >>>> >>>> >>>> Best regards, >>>> Sergei Egorov >>>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "Jenkins Developers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/jenkinsci-dev/0697c884-91ad-4716-809e-3c40cf5e35da%40googlegroups.com >> <https://groups.google.com/d/msgid/jenkinsci-dev/0697c884-91ad-4716-809e-3c40cf5e35da%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CAAJdKXmA%2Bcyg5RywrVDZGbPLmbMNPriMxW6sPWdzX5HOgBR34A%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
