Author: sebb Date: Mon Dec 20 19:24:29 2010 New Revision: 1051248 URL: http://svn.apache.org/viewvc?rev=1051248&view=rev Log: COLLECTIONS-363 TransformedMap is Serializable but its superclass doesn't define an accessible void constructor
Modified: commons/proper/collections/trunk/src/java/org/apache/commons/collections/splitmap/AbstractIterableGetMapDecorator.java commons/proper/collections/trunk/src/test/org/apache/commons/collections/splitmap/TestTransformedMap.java Modified: commons/proper/collections/trunk/src/java/org/apache/commons/collections/splitmap/AbstractIterableGetMapDecorator.java URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/java/org/apache/commons/collections/splitmap/AbstractIterableGetMapDecorator.java?rev=1051248&r1=1051247&r2=1051248&view=diff ============================================================================== --- commons/proper/collections/trunk/src/java/org/apache/commons/collections/splitmap/AbstractIterableGetMapDecorator.java (original) +++ commons/proper/collections/trunk/src/java/org/apache/commons/collections/splitmap/AbstractIterableGetMapDecorator.java Mon Dec 20 19:24:29 2010 @@ -48,6 +48,13 @@ public class AbstractIterableGetMapDecor } /** + * Constructor only used in deserialization, do not use otherwise. + */ + protected AbstractIterableGetMapDecorator() { + super(); + } + + /** * Gets the map being decorated. * * @return the decorated map Modified: commons/proper/collections/trunk/src/test/org/apache/commons/collections/splitmap/TestTransformedMap.java URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/org/apache/commons/collections/splitmap/TestTransformedMap.java?rev=1051248&r1=1051247&r2=1051248&view=diff ============================================================================== --- commons/proper/collections/trunk/src/test/org/apache/commons/collections/splitmap/TestTransformedMap.java (original) +++ commons/proper/collections/trunk/src/test/org/apache/commons/collections/splitmap/TestTransformedMap.java Mon Dec 20 19:24:29 2010 @@ -16,10 +16,7 @@ */ package org.apache.commons.collections.splitmap; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; +import java.io.*; import java.math.BigInteger; import java.util.HashMap; @@ -123,20 +120,57 @@ public class TestTransformedMap extends } } - public void TODOtestCollections363() throws Exception { + public void testEmptyMap() throws IOException, ClassNotFoundException { TransformedMap<String, String, String, String> map = TransformedMap.decorate( - new HashMap<String, String>(), - NOPTransformer.<String> getInstance(), - NOPTransformer.<String> getInstance()); - - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - ObjectOutputStream out = new ObjectOutputStream(bytes); - out.writeObject(map); - out.close(); - ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray())); + new HashMap<String, String>(), + NOPTransformer.<String>getInstance(), + NOPTransformer.<String>getInstance() ); + + ObjectInputStream in = new ObjectInputStream( new FileInputStream( "data/test/TransformedMap.emptyCollection.version3.2.obj" ) ); Object readObject = in.readObject(); in.close(); - assertEquals("deserializing class: " + map.getClass().getName(), map.getClass(), readObject - .getClass()); + + TransformedMap<?, ?, ?, ?> readMap = (TransformedMap<?, ?, ?, ?>) readObject; + assertTrue( "Map should be empty", readMap.size() == 0 ); + assertEquals( map.entrySet(), readMap.entrySet() ); + } + + public void testFullMap() throws IOException, ClassNotFoundException { + TransformedMap<String, String, String, String> map = TransformedMap.decorate( + new HashMap<String, String>(), + NOPTransformer.<String>getInstance(), + NOPTransformer.<String>getInstance() ); + map.put( "a", "b" ); + map.put( "c", "d" ); + map.put( "e", "f" ); + map.put( "g", "h" ); + + ObjectInputStream in = new ObjectInputStream( new FileInputStream( "data/test/TransformedMap.fullCollection.version3.2.obj" ) ); + Object readObject = in.readObject(); + in.close(); + + TransformedMap<?, ?, ?, ?> readMap = (TransformedMap<?, ?, ?, ?>) readObject; + assertFalse( "Map should not be empty", readMap.size() == 0 ); + assertEquals( map.entrySet(), readMap.entrySet() ); } +// +// public void testCreate() throws IOException { +// TransformedMap<String, String, String, String> map = TransformedMap.decorate( +// new HashMap<String, String>(), +// NOPTransformer.<String>getInstance(), +// NOPTransformer.<String>getInstance() ); +// +// ObjectOutputStream out = new ObjectOutputStream( +// new FileOutputStream( "data/test/TransformedMap.emptyCollection.version3.2.obj" ) ); +// out.writeObject( map ); +// +// map.put( "a", "b" ); +// map.put( "c", "d" ); +// map.put( "e", "f" ); +// map.put( "g", "h" ); +// +// out = new ObjectOutputStream( +// new FileOutputStream( "data/test/TransformedMap.fullCollection.version3.2.obj" ) ); +// out.writeObject( map ); +// } }