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)