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

Benedikt Ritter resolved LANG-456.
----------------------------------
       Resolution: Fixed
    Fix Version/s:     (was: Review Patch)
                   3.5

Fixed by applying 
0001-LANG-456-HashCodeBuilder-throws-StackOverflowError-i.patch. Thanks to all 
who helped fixing this.

> 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
>            Assignee: Benedikt Ritter
>             Fix For: 3.5
>
>         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)

Reply via email to