You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2009/04/22 15:56:32 UTC

svn commit: r767524 - in /harmony/enhanced/classlib/trunk/modules/beans/src: main/java/java/beans/ test/java/org/apache/harmony/beans/tests/java/beans/ test/resources/xml/ test/support/java/org/apache/harmony/beans/tests/support/mock/

Author: tellison
Date: Wed Apr 22 13:56:31 2009
New Revision: 767524

URL: http://svn.apache.org/viewvc?rev=767524&view=rev
Log:
Apply patch for HARMONY-6160 ([classlib][beans] java.beans.XMLEncoder.writeObject(Object o) should not change the inner content of the given object)

Added:
    harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/xml/MockTreeMap.xml   (with props)
    harmony/enhanced/classlib/trunk/modules/beans/src/test/support/java/org/apache/harmony/beans/tests/support/mock/MockTreeMapClass.java   (with props)
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=767524&r1=767523&r2=767524&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 Wed Apr 22 13:56:31 2009
@@ -838,7 +838,7 @@
                 break;
             }
             
-            if (obj != null && value.equals(obj)) {
+            if (obj != null && 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=767524&r1=767523&r2=767524&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 Wed Apr 22 13:56:31 2009
@@ -32,6 +32,8 @@
 import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.io.StringReader;
+import java.util.Map;
+import java.util.TreeMap;
 
 import junit.framework.TestCase;
 
@@ -44,6 +46,7 @@
 import org.apache.harmony.beans.tests.support.mock.MockBean4Owner_Target;
 import org.apache.harmony.beans.tests.support.mock.MockBean4StaticField;
 import org.apache.harmony.beans.tests.support.mock.MockBean4StaticField_PD;
+import org.apache.harmony.beans.tests.support.mock.MockTreeMapClass;
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
 import org.xml.sax.helpers.XMLReaderFactory;
@@ -300,6 +303,18 @@
 
     }
 
+    public void testWriteObject_MockTreeMap() throws Exception {
+        Map<String, TreeMap<String, String>> innerTreeMap = new MockTreeMapClass();
+        TreeMap resultTreeMap = innerTreeMap.get("outKey");
+        resultTreeMap.put("innerKey", "innerValue");
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        XMLEncoder xmlEncoder = new XMLEncoder(baos);
+
+        assertCodedXML(innerTreeMap, "/xml/MockTreeMap.xml", baos, xmlEncoder);
+        assertEquals(1, innerTreeMap.size());
+    }
+
     public void testClose() {
         ByteArrayOutputStream out = new ByteArrayOutputStream() {
             boolean closeCalled = false;

Added: harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/xml/MockTreeMap.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/xml/MockTreeMap.xml?rev=767524&view=auto
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/xml/MockTreeMap.xml (added)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/xml/MockTreeMap.xml Wed Apr 22 13:56:31 2009
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<java version="${version}" class="java.beans.XMLDecoder"> 
+ <object class="${classname}"> 
+  <void method="get"> 
+   <string>outer_key</string> 
+   <void method="put"> 
+    <string>inner_key</string> 
+    <string>value</string> 
+   </void> 
+  </void> 
+ </object> 
+</java>

Propchange: harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/xml/MockTreeMap.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/classlib/trunk/modules/beans/src/test/support/java/org/apache/harmony/beans/tests/support/mock/MockTreeMapClass.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/test/support/java/org/apache/harmony/beans/tests/support/mock/MockTreeMapClass.java?rev=767524&view=auto
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/test/support/java/org/apache/harmony/beans/tests/support/mock/MockTreeMapClass.java (added)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/test/support/java/org/apache/harmony/beans/tests/support/mock/MockTreeMapClass.java Wed Apr 22 13:56:31 2009
@@ -0,0 +1,33 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.harmony.beans.tests.support.mock;
+
+import java.util.TreeMap;
+
+public class MockTreeMapClass extends TreeMap {
+
+    @Override
+    public Object get(Object key) {
+        Object result = super.get(key);
+        if (result == null) {
+            result = new TreeMap();
+            put(key, result);
+        }
+        return result;
+    }
+}

Propchange: harmony/enhanced/classlib/trunk/modules/beans/src/test/support/java/org/apache/harmony/beans/tests/support/mock/MockTreeMapClass.java
------------------------------------------------------------------------------
    svn:eol-style = native