Return-Path: Delivered-To: apmail-commons-commits-archive@minotaur.apache.org Received: (qmail 42155 invoked from network); 18 Oct 2010 18:55:29 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 18 Oct 2010 18:55:29 -0000 Received: (qmail 95987 invoked by uid 500); 18 Oct 2010 18:55:29 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 95936 invoked by uid 500); 18 Oct 2010 18:55:29 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 95928 invoked by uid 99); 18 Oct 2010 18:55:29 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Oct 2010 18:55:29 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Oct 2010 18:55:26 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 6EC9223889EA; Mon, 18 Oct 2010 18:54:29 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1023949 - in /commons/proper/collections/trunk/src: java/org/apache/commons/collections/bidimap/DualTreeBidiMap.java test/org/apache/commons/collections/bidimap/TestDualTreeBidiMap2.java Date: Mon, 18 Oct 2010 18:54:29 -0000 To: commits@commons.apache.org From: sebb@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101018185429.6EC9223889EA@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sebb Date: Mon Oct 18 18:54:29 2010 New Revision: 1023949 URL: http://svn.apache.org/viewvc?rev=1023949&view=rev Log: COLLECTIONS-364 DualTreeBidiMap.readObject() uses wrong comparator to create reverseMap Modified: commons/proper/collections/trunk/src/java/org/apache/commons/collections/bidimap/DualTreeBidiMap.java commons/proper/collections/trunk/src/test/org/apache/commons/collections/bidimap/TestDualTreeBidiMap2.java Modified: commons/proper/collections/trunk/src/java/org/apache/commons/collections/bidimap/DualTreeBidiMap.java URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/java/org/apache/commons/collections/bidimap/DualTreeBidiMap.java?rev=1023949&r1=1023948&r2=1023949&view=diff ============================================================================== --- commons/proper/collections/trunk/src/java/org/apache/commons/collections/bidimap/DualTreeBidiMap.java (original) +++ commons/proper/collections/trunk/src/java/org/apache/commons/collections/bidimap/DualTreeBidiMap.java Mon Oct 18 18:54:29 2010 @@ -387,7 +387,7 @@ public class DualTreeBidiMap exten private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); normalMap = new TreeMap(comparator); - reverseMap = new TreeMap(comparator); + reverseMap = new TreeMap(valueComparator); Map map = (Map) in.readObject(); putAll(map); } Modified: commons/proper/collections/trunk/src/test/org/apache/commons/collections/bidimap/TestDualTreeBidiMap2.java URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/org/apache/commons/collections/bidimap/TestDualTreeBidiMap2.java?rev=1023949&r1=1023948&r2=1023949&view=diff ============================================================================== --- commons/proper/collections/trunk/src/test/org/apache/commons/collections/bidimap/TestDualTreeBidiMap2.java (original) +++ commons/proper/collections/trunk/src/test/org/apache/commons/collections/bidimap/TestDualTreeBidiMap2.java Mon Oct 18 18:54:29 2010 @@ -22,6 +22,7 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.Collections; +import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.TreeMap; @@ -41,6 +42,7 @@ import org.apache.commons.collections.co * @author Stephen Colebourne * @author Jonas Van Poucke */ +@SuppressWarnings("boxing") public class TestDualTreeBidiMap2, V extends Comparable> extends AbstractTestSortedBidiMap { public static Test suite() { @@ -70,6 +72,16 @@ public class TestDualTreeBidiMap2 dtbm = new DualTreeBidiMap( + String.CASE_INSENSITIVE_ORDER, null); + dtbm.put("two", 0); + dtbm.put("one", 1); + assertEquals("one", dtbm.firstKey()); + assertEquals("two", dtbm.lastKey()); + + } + public void testSerializeDeserializeCheckComparator() throws Exception { SortedBidiMap obj = makeObject(); if (obj instanceof Serializable && isTestSerialization()) { @@ -82,13 +94,39 @@ public class TestDualTreeBidiMap2 bidi = (SortedBidiMap) dest; assertNotNull(obj.comparator()); assertNotNull(bidi.comparator()); assertTrue(bidi.comparator() instanceof ReverseComparator); } } + private static class IntegerComparator implements Comparator, java.io.Serializable{ + private static final long serialVersionUID = 1L; + public int compare(Integer o1, Integer o2) { + return o1.compareTo(o2); + } + } + + public void testCollections364() throws Exception { + DualTreeBidiMap original = new DualTreeBidiMap( + String.CASE_INSENSITIVE_ORDER, new IntegerComparator()); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + ObjectOutputStream out = new ObjectOutputStream(buffer); + out.writeObject(original); + out.close(); + + ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray())); + @SuppressWarnings("unchecked") + DualTreeBidiMap deserialised = (DualTreeBidiMap) in.readObject(); + in.close(); + + assertNotNull(original.comparator()); + assertNotNull(deserialised.comparator()); + assertEquals(original.comparator().getClass(), deserialised.comparator().getClass()); + assertEquals(original.valueComparator().getClass(), deserialised.valueComparator().getClass()); + } + public void testSortOrder() throws Exception { SortedBidiMap sm = makeFullMap();