You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Marko A. Rodriguez (JIRA)" <ji...@apache.org> on 2016/04/06 23:48:25 UTC

[jira] [Closed] (TINKERPOP-1251) NPE in ObjectWritable.toString

     [ https://issues.apache.org/jira/browse/TINKERPOP-1251?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Marko A. Rodriguez closed TINKERPOP-1251.
-----------------------------------------
    Resolution: Fixed

I fixed also a potential {{compareTo}} bug related to NPE.

> 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.1.1-incubating
>            Reporter: Dan LaRocque
>            Assignee: Marko A. Rodriguez
>             Fix For: 3.2.0-incubating, 3.1.2-incubating
>
>
> 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)