tinkerpop-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dan LaRocque (JIRA)" <j...@apache.org>
Subject [jira] [Created] (TINKERPOP-1251) NPE in ObjectWritable.toString
Date Wed, 06 Apr 2016 21:22:25 GMT
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)

Mime
View raw message