[ https://issues.apache.org/jira/browse/TINKERPOP-1251?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15229201#comment-15229201 ]
Dan LaRocque commented on TINKERPOP-1251: ----------------------------------------- Here's the patch that I'm using locally on top of master: https://github.com/apache/incubator-tinkerpop/pull/287 > NPE in ObjectWritable.toString > ------------------------------ > > Key: TINKERPOP-1251 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1251 > Project: TinkerPop > Issue Type: Bug > Components: io > Affects Versions: 3.1.1-incubating > Reporter: Dan LaRocque > Assignee: Marko A. Rodriguez > Fix For: 3.2.0-incubating, 3.1.2-incubating > > > ObjectWritable is a fancy wrapper around single reference named {{t}}. > ObjectWritable is internally inconsistent about whether {{t==null}} is > allowed. > {{toString}} suggests that {{t==null}} is an illegal state, since it throws > NPE: > {code} > public String toString() { > return this.t.toString(); > } > {code} > Compare with {{isEmpty}}, which suggests that {{t==null}} is a legal state: > {code} > public boolean isEmpty() { > return null == this.t; > } > {code} > IMO toString should just tolerate null. > Why does this matter? One case where this {{toString}} gets invoked is Java > serialization with debugging info turned on > ("sun.io.serialization.extendedDebugInfo" sys prop). When so configured, > Java serialization code (ObjectOutputStream) invokes {{toString}} on the > objects it processes. If {{toString}} throws this NPE, serialization fails. > This is frustrating, since serialization of null ObjectWritables works fine > with debugging info suppressed, but breaks with debugging info enabled. -- This message was sent by Atlassian JIRA (v6.3.4#6332)