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.

Reply via email to