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.

Reply via email to