You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Bruno P. Kinoshita (JIRA)" <ji...@apache.org> on 2015/05/01 12:52:07 UTC

[jira] [Comment Edited] (LANG-456) HashCodeBuilder throws StackOverflowError in bidirectional navigable association

    [ https://issues.apache.org/jira/browse/LANG-456?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14523038#comment-14523038 ] 

Bruno P. Kinoshita edited comment on LANG-456 at 5/1/15 10:51 AM:
------------------------------------------------------------------

Applying the patch to my project today resulted in errors both via command line and using Eclipse (guess it's something with my `patch -p0 -i ...` command?). Using Eclipse, however, let me at least copy the test code without the +'s in the beginning of the line. 

After importing the tests from the patch, the bug was reproducible via a new test method. Later I imported the part of the code that fixes the issue, and it worked like a charm. 

+1 to applying the Woonsan's patch


was (Author: kinow):
Applying the patch to my project today resulted in errors both via command line and using Eclipse (guess it's something with my `patch -p0 -i ...` command?). Using Eclipse, however, let me at least copy the test without the + prefix. 

After importing the tests from the patch, the bug was reproducible via a new test method. Later I imported the part of the code that fixes the issue, and it worked like a charm. 

+1 to applying the Woonsan's patch

> HashCodeBuilder throws StackOverflowError in bidirectional navigable association
> --------------------------------------------------------------------------------
>
>                 Key: LANG-456
>                 URL: https://issues.apache.org/jira/browse/LANG-456
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.builder.*
>    Affects Versions: 2.4
>         Environment: Widows XP. Sun JDK 1.5 or 1.6.
>            Reporter: Bob Fields
>             Fix For: Review Patch
>
>         Attachments: 0001-LANG-456-HashCodeBuilder-throws-StackOverflowError-i.patch, HashCodeBuilderStackOverflow.zip, LANG-456-patch.txt, StackOverflowError.zip
>
>
> This is not the reflection methods, it is the regular HashCodeBuilder append methods. It causes EqualsBuilder, ToStringBuilder, CompareToBuilder to also throw the StackOverflowException, but those methods work when one of the HashCodeBuilder bidirectional association attributes .hashCode() is commented out. The problem is that all of the builders call registerObject() which creates a hashCode, but only the reflectionAppend method checks if an object is registered.
> Bi-directional associations are a very common pattern in Jaxb and Hibernate. In this case, I generate code from a model in order to avoid the reflection penalty - I already know what the attributes are at compile time, so I use .append instead of .reflectionAppend.
> See attached example + unit test. One side of the bidirectional association must be commented out in the hashCode method.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)