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:

    public String toString() {
        return this.t.toString();

Compare with {{isEmpty}}, which suggests that {{t==null}} is a legal state:

    public boolean isEmpty() {
        return null == this.t;

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

View raw message