Author: bayard Date: Wed Mar 2 21:00:44 2005 New Revision: 156007 URL: http://svn.apache.org/viewcvs?view=rev&rev=156007 Log: Application of patch from Bugzilla: #33574, by Travis Stevens. Balances a call to appendFieldStart with an appendFieldEnd after appending the field. Test also included.
Modified: jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ReflectionToStringBuilder.java jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/builder/ToStringBuilderTest.java Modified: jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ReflectionToStringBuilder.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ReflectionToStringBuilder.java?view=diff&r1=156006&r2=156007 ============================================================================== --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ReflectionToStringBuilder.java (original) +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ReflectionToStringBuilder.java Wed Mar 2 21:00:44 2005 @@ -631,6 +631,7 @@ // append a simple Object.toString style string. this.getStyle().appendFieldStart(this.getStringBuffer(), fieldName); this.appendAsObjectToString(fieldValue); + this.getStyle().appendFieldEnd(this.getStringBuffer(), fieldName); // The recursion out of // builder.append(fieldName, fieldValue); // below will append the field Modified: jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/builder/ToStringBuilderTest.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/builder/ToStringBuilderTest.java?view=diff&r1=156006&r2=156007 ============================================================================== --- jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/builder/ToStringBuilderTest.java (original) +++ jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/builder/ToStringBuilderTest.java Wed Mar 2 21:00:44 2005 @@ -487,6 +487,24 @@ } } + private static class SelfInstanceTwoVarsReflectionTestFixture { + private SelfInstanceTwoVarsReflectionTestFixture typeIsSelf; + private String otherType = "The Other Type"; + + public SelfInstanceTwoVarsReflectionTestFixture() { + this.typeIsSelf = this; + } + + public String getOtherType(){ + return this.otherType; + } + + public String toString() { + return ToStringBuilder.reflectionToString(this); + } + } + + /** * Test an Object pointing to itself, the simplest test. * @@ -511,6 +529,20 @@ assertEquals(this.toBaseString(test) + "[typeIsSelf=" + this.toBaseString(test) + "]", test.toString()); this.validateEmptyReflectionRegistry(); } + + /** + * Test a class that defines an ivar pointing to itself. This test was + * created to show that handling cyclical object resulted in a missing endFieldSeparator call. + * + * @throws Exception + */ + public void testSelfInstanceTwoVarsReflectionObjectCycle() throws Exception { + SelfInstanceTwoVarsReflectionTestFixture test = new SelfInstanceTwoVarsReflectionTestFixture(); + assertTrue(ReflectionToStringBuilder.getRegistry().isEmpty()); + assertEquals(this.toBaseString(test) + "[typeIsSelf=" + this.toBaseString(test) + ",otherType=" + test.getOtherType().toString() + "]", test.toString()); + this.validateEmptyReflectionRegistry(); + } + /** * Test Objects pointing to each other. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]