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/CAAJdKXnipSfjQYR6ZUQg69dPKPO-9a9kR%2BAB2Y1-_e_9NH%2BQHg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
