You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Dan LaRocque (JIRA)" <ji...@apache.org> on 2016/04/06 23:22:25 UTC
[jira] [Created] (TINKERPOP-1251) NPE in ObjectWritable.toString
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)