Dan LaRocque created TINKERPOP-1251: ---------------------------------------
Summary: 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.2.0-incubating Reporter: Dan LaRocque 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)