You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by zh...@apache.org on 2010/02/05 10:11:23 UTC
svn commit: r906860 - in /harmony/enhanced/classlib/trunk/modules/beans/src:
main/java/java/beans/XMLEncoder.java
test/java/org/apache/harmony/beans/tests/java/beans/XMLEncoderTest.java
Author: zhoukevin
Date: Fri Feb 5 09:11:23 2010
New Revision: 906860
URL: http://svn.apache.org/viewvc?rev=906860&view=rev
Log:
Fix unexpected java.lang.ClassCastException thrown by java.beans.XMLEncoder.checkDeadLoop(Object) method
Modified:
harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/XMLEncoder.java
harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/XMLEncoderTest.java
Modified: harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/XMLEncoder.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/XMLEncoder.java?rev=906860&r1=906859&r2=906860&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/XMLEncoder.java (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/XMLEncoder.java Fri Feb 5 09:11:23 2010
@@ -836,7 +836,9 @@
break;
}
- if (obj != null && obj.equals(value)) {
+ if (obj != null
+ && (obj.getClass().isAssignableFrom(value.getClass()))
+ && obj.equals(value)) {
n++;
if (n >= DEADLOCK_THRESHOLD) {
Modified: harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/XMLEncoderTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/XMLEncoderTest.java?rev=906860&r1=906859&r2=906860&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/XMLEncoderTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/XMLEncoderTest.java Fri Feb 5 09:11:23 2010
@@ -33,6 +33,7 @@
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.StringReader;
+import java.util.Date;
import java.util.Map;
import java.util.TreeMap;
@@ -696,7 +697,7 @@
/**
* The test checks that complex scenario store is correct
*/
- public void testEncodingScenario() {
+ public void testEncodingScenario1() {
XMLEncoder e = new XMLEncoder(System.out);
e.setExceptionListener(new ExceptionListener() {
public void exceptionThrown(Exception e) {
@@ -721,6 +722,47 @@
}
}
+ public static class MockClass {
+
+ private Date date = null;
+
+ public MockClass() {
+
+ }
+
+ public MockClass(Date date) {
+ this.date = date;
+ }
+
+ public boolean equals(Object obj) {
+ MockClass mockObj = (MockClass) obj;
+ if (date != null && mockObj.date != null) {
+ return date.equals(mockObj.date);
+ }
+ return false;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+ }
+
+ public void testEncodingScenario2() {
+ XMLEncoder xmlEncoder = new XMLEncoder(System.out);
+ xmlEncoder.setExceptionListener(new ExceptionListener() {
+ public void exceptionThrown(Exception e) {
+ fail("Exception " + e.getClass() + " is thrown: "
+ + e.getMessage());
+ }
+ });
+
+ xmlEncoder.writeObject(new MockClass(new Date()));
+ }
+
/**
* The test checks that encoder can handle writeExpression in initialize
*/