[ 
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)

Reply via email to