You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2003/10/09 22:21:32 UTC
cvs commit: jakarta-commons/collections/src/java/org/apache/commons/collections DualHashBidiMap.java AbstractDualBidiMap.java
scolebourne 2003/10/09 13:21:32
Modified: collections/src/test/org/apache/commons/collections
TestBidiMap.java
collections/src/java/org/apache/commons/collections
DualHashBidiMap.java AbstractDualBidiMap.java
Log:
Make DualHashBidiMap serialiizable
Revision Changes Path
1.7 +29 -3 jakarta-commons/collections/src/test/org/apache/commons/collections/TestBidiMap.java
Index: TestBidiMap.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestBidiMap.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- TestBidiMap.java 7 Oct 2003 22:20:57 -0000 1.6
+++ TestBidiMap.java 9 Oct 2003 20:21:32 -0000 1.7
@@ -132,6 +132,13 @@
return false;
}
+ /**
+ * Override as DualHashBidiMap didn't exist until version 3.
+ */
+ protected String getCompatibilityVersion() {
+ return "3";
+ }
+
// BidiPut
//-----------------------------------------------------------------------
public void testBidiPut() {
@@ -338,10 +345,29 @@
protected BidiMap makeEmptyBidiMap() {
return main.makeEmptyBidiMap().inverseBidiMap();
}
-
protected BidiMap makeFullBidiMap() {
return main.makeFullBidiMap().inverseBidiMap();
}
+
+ protected String getCompatibilityVersion() {
+ return main.getCompatibilityVersion();
+ }
+ protected boolean isAllowNullKey() {
+ return main.isAllowNullKey();
+ }
+ protected boolean isAllowNullValue() {
+ return main.isAllowNullValue();
+ }
+ protected boolean isPutAddSupported() {
+ return main.isPutAddSupported();
+ }
+ protected boolean isPutChangeSupported() {
+ return main.isPutChangeSupported();
+ }
+ protected boolean isRemoveSupported() {
+ return main.isRemoveSupported();
+ }
+
}
}
1.2 +35 -7 jakarta-commons/collections/src/java/org/apache/commons/collections/DualHashBidiMap.java
Index: DualHashBidiMap.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/DualHashBidiMap.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DualHashBidiMap.java 6 Oct 2003 23:47:17 -0000 1.1
+++ DualHashBidiMap.java 9 Oct 2003 20:21:32 -0000 1.2
@@ -57,6 +57,10 @@
*/
package org.apache.commons.collections;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
@@ -69,13 +73,16 @@
* @author Matthew Hawthorne
* @author Stephen Colebourne
*/
-public class DualHashBidiMap extends AbstractDualBidiMap {
+public class DualHashBidiMap extends AbstractDualBidiMap implements Serializable {
+
+ /** Ensure serialization compatability */
+ private static final long serialVersionUID = 721969328361808L;
/**
* Creates an empty <code>HashBidiMap</code>
*/
public DualHashBidiMap() {
- super(new HashMap(), new HashMap());
+ super();
}
/**
@@ -85,10 +92,10 @@
* @param map the map whose mappings are to be placed in this map
*/
public DualHashBidiMap(Map map) {
- super(new HashMap(), new HashMap());
+ super();
putAll(map);
}
-
+
/**
* Constructs a <code>HashBidiMap</code> that decorates the specified maps.
*
@@ -99,7 +106,16 @@
protected DualHashBidiMap(Map normalMap, Map reverseMap, BidiMap inverseBidiMap) {
super(normalMap, reverseMap, inverseBidiMap);
}
-
+
+ /**
+ * Creates a new instance of the map used by the subclass to store data.
+ *
+ * @return the map to be used for internal storage
+ */
+ protected Map createMap() {
+ return new HashMap();
+ }
+
/**
* Creates a new instance of this object.
*
@@ -112,5 +128,17 @@
return new DualHashBidiMap(normalMap, reverseMap, inverseMap);
}
+ // Serialization
+ //-----------------------------------------------------------------------
+ private void writeObject(ObjectOutputStream out) throws IOException {
+ out.defaultWriteObject();
+ out.writeObject(maps[0]);
+ }
+
+ private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+ in.defaultReadObject();
+ Map map = (Map) in.readObject();
+ putAll(map);
+ }
}
1.2 +19 -13 jakarta-commons/collections/src/java/org/apache/commons/collections/AbstractDualBidiMap.java
Index: AbstractDualBidiMap.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/AbstractDualBidiMap.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractDualBidiMap.java 6 Oct 2003 23:47:17 -0000 1.1
+++ AbstractDualBidiMap.java 9 Oct 2003 20:21:32 -0000 1.2
@@ -99,22 +99,19 @@
protected transient Set entrySet = null;
/**
- * Creates an empty map.
+ * Creates an empty map, initialised by <code>createMap</code>.
* <p>
- * The maps passed in are not validated, so subclasses need to ensure
- * that they are non-null, empty and compatible.
- *
- * @param normalMap the normal direction map
- * @param reverseMap the reverse direction map
+ * The map array must be populated by the subclass.
*/
- protected AbstractDualBidiMap(Map normalMap, Map reverseMap) {
+ protected AbstractDualBidiMap() {
super();
- maps[0] = normalMap;
- maps[1] = reverseMap;
+ maps[0] = createMap();
+ maps[1] = createMap();
}
/**
- * Constructs a map that decorates the specified maps.
+ * Constructs a map that decorates the specified maps,
+ * used by the subclass <code>createBidiMap</code> implementation.
*
* @param normalMap the normal direction map
* @param reverseMap the reverse direction map
@@ -126,7 +123,16 @@
maps[1] = reverseMap;
this.inverseBidiMap = inverseBidiMap;
}
-
+
+ /**
+ * Creates a new instance of the map used by the subclass to store data.
+ * <p>
+ * Do not change any instance variables from this method.
+ *
+ * @return the map to be used for internal storage
+ */
+ protected abstract Map createMap();
+
/**
* Creates a new instance of the subclass.
*
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org