In another case it looks like Execution, yes... never mind (should be easy to fix once identified). I think the jackson stuff just happened to pick that edge case up (I thought I saw a serialization problem and my brain suddenly turned off looking for null pointers! hahaha.
Nice work! On Tuesday, March 22, 2016 at 5:49:49 PM UTC+11, Sergei Egorov wrote: > > 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] > <javascript:>> 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] >> <javascript:>> 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] <javascript:>. >>> 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/70fea7d1-fb89-4500-802b-9e7ec2cb3fb1%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
