scolebourne 2004/04/27 14:35:23 Modified: collections/src/test/org/apache/commons/collections/map TestReferenceMap.java collections/src/java/org/apache/commons/collections/map ReferenceMap.java Added: collections/data/test ReferenceMap.emptyCollection.version3.1.obj ReferenceMap.fullCollection.version3.1.obj Log: Make ReferenceMap serializable Revision Changes Path 1.6 +2 -2 jakarta-commons/collections/src/test/org/apache/commons/collections/map/TestReferenceMap.java Index: TestReferenceMap.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/map/TestReferenceMap.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- TestReferenceMap.java 9 Apr 2004 22:18:17 -0000 1.5 +++ TestReferenceMap.java 27 Apr 2004 21:35:23 -0000 1.6 @@ -184,7 +184,7 @@ public String getCompatibilityVersion() { - return "2.1"; // previously in main package + return "3.1"; } /** Tests whether purge values setting works */ 1.1 jakarta-commons/collections/data/test/ReferenceMap.emptyCollection.version3.1.obj <<Binary file>> 1.1 jakarta-commons/collections/data/test/ReferenceMap.fullCollection.version3.1.obj <<Binary file>> 1.13 +32 -3 jakarta-commons/collections/src/java/org/apache/commons/collections/map/ReferenceMap.java Index: ReferenceMap.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/map/ReferenceMap.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- ReferenceMap.java 9 Apr 2004 22:18:18 -0000 1.12 +++ ReferenceMap.java 27 Apr 2004 21:35:23 -0000 1.13 @@ -15,6 +15,10 @@ */ package org.apache.commons.collections.map; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; /** * A <code>Map</code> implementation that allows mappings to be @@ -35,17 +39,22 @@ * weak values, or any other combination. The default constructor uses * hard keys and soft values, providing a memory-sensitive cache. * <p> + * This map is similar to + * [EMAIL PROTECTED] org.apache.commons.collections.map.ReferenceIdentityMap ReferenceIdentityMap}. + * It differs in that keys and values in this class are compared using <code>equals()</code>. + * <p> * This [EMAIL PROTECTED] Map} implementation does <i>not</i> allow null elements. * Attempting to add a null key or value to the map will raise a <code>NullPointerException</code>. * <p> * This implementation is not synchronized. * You can use [EMAIL PROTECTED] java.util.Collections#synchronizedMap} to * provide synchronized access to a <code>ReferenceMap</code>. + * Remember that synchronization will not stop the garbage collecter removing entries. * <p> * All the available iterators can be reset back to the start by casting to * <code>ResettableIterator</code> and calling <code>reset()</code>. * <p> - * NOTE: As from Commons Collections 3.1 this map extends <code>AbstractHashedMap</code> + * NOTE: As from Commons Collections 3.1 this map extends <code>AbstractReferenceMap</code> * (previously it extended AbstractMap). As a result, the implementation is now * extensible and provides a <code>MapIterator</code>. * @@ -57,7 +66,10 @@ * @author Paul Jack * @author Stephen Colebourne */ -public class ReferenceMap extends AbstractReferenceMap { +public class ReferenceMap extends AbstractReferenceMap implements Serializable { + + /** Serialization version */ + private static final long serialVersionUID = 1555089888138299607L; /** * Constructs a new <code>ReferenceMap</code> that will @@ -128,6 +140,23 @@ public ReferenceMap(int keyType, int valueType, int capacity, float loadFactor, boolean purgeValues) { super(keyType, valueType, capacity, loadFactor, purgeValues); + } + + //----------------------------------------------------------------------- + /** + * Write the map out using a custom routine. + */ + private void writeObject(ObjectOutputStream out) throws IOException { + out.defaultWriteObject(); + doWriteObject(out); + } + + /** + * Read the map in using a custom routine. + */ + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + doReadObject(in); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]