You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "pieter martin (JIRA)" <ji...@apache.org> on 2016/04/11 01:28:25 UTC
[jira] [Commented] (TINKERPOP-1259)
SerializationTest.shouldSerializeTree fails due to id() and hashCode()
[ https://issues.apache.org/jira/browse/TINKERPOP-1259?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15234342#comment-15234342 ]
pieter martin commented on TINKERPOP-1259:
------------------------------------------
Ok, had another look.
So my first analysis was wrong, but I still think its a problem with TinkerPop.
{{DetachedVertexProperty}}'s {{hashCode()}} calls the inherited {{DetachedElement}}'s {{hashCode()}} which is calling
{code}
element.id().hashCode()
{code}
However it should be calling
{code}
property.key().hashCode() + property.value().hashCode()
{code}
It will call this if {{DetachedVertexProperty}} has its own {{hashCode()}} method
{code}
@Override
public int hashCode() {
return ElementHelper.hashCode((Property)this);
}
{code}
in which case the correct hashCode is returned and the test passes in Sqlg.
> SerializationTest.shouldSerializeTree fails due to id() and hashCode()
> ----------------------------------------------------------------------
>
> Key: TINKERPOP-1259
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1259
> Project: TinkerPop
> Issue Type: Bug
> Components: test-suite
> Affects Versions: 3.2.1
> Reporter: pieter martin
>
> The tests fails on the last
> {code}
> assertEquals("The objects differ", after, before)
> {code}
> The 2 trees are however correct but due to differences in the {{DetachedVertexProperty}} and {{SqlgVertexProperty}} {{id()}}, {{equals()}} and {{hashCode()}} implementation the 2 trees are not equal.
> {{DetachedVertexProperty}} uses the {{element}}'s {{id}} as its {{id}} and that is used in the {{equals}} and {{hashCode}} method basically making a property equal to an element.
> {{SqlgVertexProperty}} has a more sophisticated {{id()}}
> {code}
> return (long) (this.key().hashCode() + this.value().hashCode() + this.element().id().hashCode())
> {code}
> If I change this to be the same as {{DetachedVertexProperty}} then the test passes but I am not sure that it would be correct.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)