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]