Created a custom serializer for IdentityHashMap. Refactored the existing collections-based serializers to use common code.
Suggested by: mmendez
Review by: jat (pair prog)
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2323 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/client/rpc/core/java/util/ArrayList_CustomFieldSerializer.java b/user/src/com/google/gwt/user/client/rpc/core/java/util/ArrayList_CustomFieldSerializer.java
index cc9ddd2..999b788 100644
--- a/user/src/com/google/gwt/user/client/rpc/core/java/util/ArrayList_CustomFieldSerializer.java
+++ b/user/src/com/google/gwt/user/client/rpc/core/java/util/ArrayList_CustomFieldSerializer.java
@@ -28,19 +28,11 @@
public static void deserialize(SerializationStreamReader streamReader,
ArrayList instance) throws SerializationException {
- int size = streamReader.readInt();
- for (int i = 0; i < size; ++i) {
- Object obj = streamReader.readObject();
- instance.add(obj);
- }
+ Collection_CustomFieldSerializerBase.deserialize(streamReader, instance);
}
public static void serialize(SerializationStreamWriter streamWriter,
ArrayList instance) throws SerializationException {
- int size = instance.size();
- streamWriter.writeInt(size);
- for (Object obj : instance) {
- streamWriter.writeObject(obj);
- }
+ Collection_CustomFieldSerializerBase.serialize(streamWriter, instance);
}
}
diff --git a/user/src/com/google/gwt/user/client/rpc/core/java/util/Collection_CustomFieldSerializerBase.java b/user/src/com/google/gwt/user/client/rpc/core/java/util/Collection_CustomFieldSerializerBase.java
new file mode 100644
index 0000000..da0dbd7
--- /dev/null
+++ b/user/src/com/google/gwt/user/client/rpc/core/java/util/Collection_CustomFieldSerializerBase.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2007 Google Inc.
+ *
+ * Licensed 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 com.google.gwt.user.client.rpc.core.java.util;
+
+import com.google.gwt.user.client.rpc.SerializationException;
+import com.google.gwt.user.client.rpc.SerializationStreamReader;
+import com.google.gwt.user.client.rpc.SerializationStreamWriter;
+
+import java.util.Collection;
+
+/**
+ * Custom field serializer for {@link java.util.ArrayList}.
+ */
+public final class Collection_CustomFieldSerializerBase {
+
+ public static void deserialize(SerializationStreamReader streamReader,
+ Collection instance) throws SerializationException {
+ int size = streamReader.readInt();
+ for (int i = 0; i < size; ++i) {
+ Object obj = streamReader.readObject();
+ instance.add(obj);
+ }
+ }
+
+ public static void serialize(SerializationStreamWriter streamWriter,
+ Collection instance) throws SerializationException {
+ int size = instance.size();
+ streamWriter.writeInt(size);
+ for (Object obj : instance) {
+ streamWriter.writeObject(obj);
+ }
+ }
+}
diff --git a/user/src/com/google/gwt/user/client/rpc/core/java/util/HashMap_CustomFieldSerializer.java b/user/src/com/google/gwt/user/client/rpc/core/java/util/HashMap_CustomFieldSerializer.java
index bb32020..34cab03 100644
--- a/user/src/com/google/gwt/user/client/rpc/core/java/util/HashMap_CustomFieldSerializer.java
+++ b/user/src/com/google/gwt/user/client/rpc/core/java/util/HashMap_CustomFieldSerializer.java
@@ -20,8 +20,6 @@
import com.google.gwt.user.client.rpc.SerializationStreamWriter;
import java.util.HashMap;
-import java.util.Set;
-import java.util.Map.Entry;
/**
* Custom field serializer for {@link java.util.HashMap}.
@@ -30,25 +28,12 @@
public static void deserialize(SerializationStreamReader streamReader,
HashMap instance) throws SerializationException {
- int size = streamReader.readInt();
-
- for (int i = 0; i < size; ++i) {
- Object key = streamReader.readObject();
- Object value = streamReader.readObject();
-
- instance.put(key, value);
- }
+ Map_CustomFieldSerializerBase.deserialize(streamReader, instance);
}
public static void serialize(SerializationStreamWriter streamWriter,
HashMap instance) throws SerializationException {
- int size = instance.size();
- streamWriter.writeInt(size);
-
- for (Entry entry : (Set<Entry>) instance.entrySet()) {
- streamWriter.writeObject(entry.getKey());
- streamWriter.writeObject(entry.getValue());
- }
+ Map_CustomFieldSerializerBase.serialize(streamWriter, instance);
}
}
\ No newline at end of file
diff --git a/user/src/com/google/gwt/user/client/rpc/core/java/util/HashSet_CustomFieldSerializer.java b/user/src/com/google/gwt/user/client/rpc/core/java/util/HashSet_CustomFieldSerializer.java
index d732fbe..7a99148 100644
--- a/user/src/com/google/gwt/user/client/rpc/core/java/util/HashSet_CustomFieldSerializer.java
+++ b/user/src/com/google/gwt/user/client/rpc/core/java/util/HashSet_CustomFieldSerializer.java
@@ -28,17 +28,11 @@
public static void deserialize(SerializationStreamReader streamReader,
HashSet instance) throws SerializationException {
- int size = streamReader.readInt();
- for (int i = 0; i < size; ++i) {
- instance.add(streamReader.readObject());
- }
+ Collection_CustomFieldSerializerBase.deserialize(streamReader, instance);
}
public static void serialize(SerializationStreamWriter streamWriter,
HashSet instance) throws SerializationException {
- streamWriter.writeInt(instance.size());
- for (Object obj : instance) {
- streamWriter.writeObject(obj);
- }
+ Collection_CustomFieldSerializerBase.serialize(streamWriter, instance);
}
}
diff --git a/user/src/com/google/gwt/user/client/rpc/core/java/util/IdentityHashMap_CustomFieldSerializer.java b/user/src/com/google/gwt/user/client/rpc/core/java/util/IdentityHashMap_CustomFieldSerializer.java
new file mode 100644
index 0000000..0f70860
--- /dev/null
+++ b/user/src/com/google/gwt/user/client/rpc/core/java/util/IdentityHashMap_CustomFieldSerializer.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2008 Google Inc.
+ *
+ * Licensed 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 com.google.gwt.user.client.rpc.core.java.util;
+
+import com.google.gwt.user.client.rpc.SerializationException;
+import com.google.gwt.user.client.rpc.SerializationStreamReader;
+import com.google.gwt.user.client.rpc.SerializationStreamWriter;
+
+import java.util.IdentityHashMap;
+
+/**
+ * Custom field serializer for {@link java.util.HashMap}.
+ */
+public final class IdentityHashMap_CustomFieldSerializer {
+
+ public static void deserialize(SerializationStreamReader streamReader,
+ IdentityHashMap instance) throws SerializationException {
+ Map_CustomFieldSerializerBase.deserialize(streamReader, instance);
+ }
+
+ public static void serialize(SerializationStreamWriter streamWriter,
+ IdentityHashMap instance) throws SerializationException {
+ Map_CustomFieldSerializerBase.serialize(streamWriter, instance);
+ }
+
+}
\ No newline at end of file
diff --git a/user/src/com/google/gwt/user/client/rpc/core/java/util/Map_CustomFieldSerializerBase.java b/user/src/com/google/gwt/user/client/rpc/core/java/util/Map_CustomFieldSerializerBase.java
new file mode 100644
index 0000000..eea66e2
--- /dev/null
+++ b/user/src/com/google/gwt/user/client/rpc/core/java/util/Map_CustomFieldSerializerBase.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2008 Google Inc.
+ *
+ * Licensed 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 com.google.gwt.user.client.rpc.core.java.util;
+
+import com.google.gwt.user.client.rpc.SerializationException;
+import com.google.gwt.user.client.rpc.SerializationStreamReader;
+import com.google.gwt.user.client.rpc.SerializationStreamWriter;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+/**
+ * Custom field serializer for {@link java.util.HashMap}.
+ */
+public final class Map_CustomFieldSerializerBase {
+
+ public static void deserialize(SerializationStreamReader streamReader,
+ Map instance) throws SerializationException {
+ int size = streamReader.readInt();
+
+ for (int i = 0; i < size; ++i) {
+ Object key = streamReader.readObject();
+ Object value = streamReader.readObject();
+
+ instance.put(key, value);
+ }
+ }
+
+ public static void serialize(SerializationStreamWriter streamWriter,
+ Map instance) throws SerializationException {
+ int size = instance.size();
+ streamWriter.writeInt(size);
+
+ for (Entry entry : (Set<Entry>) instance.entrySet()) {
+ streamWriter.writeObject(entry.getKey());
+ streamWriter.writeObject(entry.getValue());
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/user/src/com/google/gwt/user/client/rpc/core/java/util/Vector_CustomFieldSerializer.java b/user/src/com/google/gwt/user/client/rpc/core/java/util/Vector_CustomFieldSerializer.java
index b3a4478..61b1eff 100644
--- a/user/src/com/google/gwt/user/client/rpc/core/java/util/Vector_CustomFieldSerializer.java
+++ b/user/src/com/google/gwt/user/client/rpc/core/java/util/Vector_CustomFieldSerializer.java
@@ -28,20 +28,11 @@
public static void deserialize(SerializationStreamReader streamReader,
Vector instance) throws SerializationException {
- int size = streamReader.readInt();
- for (int i = 0; i < size; ++i) {
- Object obj = streamReader.readObject();
- instance.add(obj);
- }
+ Collection_CustomFieldSerializerBase.deserialize(streamReader, instance);
}
public static void serialize(SerializationStreamWriter streamWriter,
Vector instance) throws SerializationException {
- int size = instance.size();
- streamWriter.writeInt(size);
- for (Object obj : instance) {
- streamWriter.writeObject(obj);
- }
+ Collection_CustomFieldSerializerBase.serialize(streamWriter, instance);
}
-
}