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)

Reply via email to