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
    Affects Versions: 2.4
         Environment: Widows XP. Sun JDK 1.5 or 1.6.
            Reporter: Bob Fields


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 is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to