[ https://issues.apache.org/jira/browse/TINKERPOP-1251?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15229208#comment-15229208 ]
Dan LaRocque commented on TINKERPOP-1251: ----------------------------------------- bq. I fixed also a potential compareTo bug related to NPE. Can you link it? I noticed that compareTo would throw NPE if its parameter is null, but that's the right behavior. https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html {quote} Throws: NullPointerException - if the specified object is null {quote} {{equals}} and {{hashCode}} were a bit trickier to read, but I think they are correct because {{null instanceof X}} evaluates to false rather than throwing an exception. > 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)