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)