Revision: 8409
Author: [email protected]
Date: Fri Jul 23 07:41:23 2010
Log: Rolls back r8394, allow RPC for unmodifiable collections, due
to increase in client size of unwitting clients, especially those that
return special empty and singleton collections.

http://code.google.com/p/google-web-toolkit/source/detail?r=8409

Modified:
/trunk/user/src/com/google/gwt/user/client/rpc/core/java/util/Collections.java /trunk/user/src/com/google/gwt/user/client/rpc/core/java/util/TreeSet_CustomFieldSerializer.java
 /trunk/user/super/com/google/gwt/emul/java/util/Collections.java
 /trunk/user/test/com/google/gwt/emultest/java/util/CollectionsTest.java
 /trunk/user/test/com/google/gwt/user/client/rpc/CollectionsTest.java
 /trunk/user/test/com/google/gwt/user/client/rpc/CollectionsTestService.java
/trunk/user/test/com/google/gwt/user/client/rpc/CollectionsTestServiceAsync.java
 /trunk/user/test/com/google/gwt/user/client/rpc/TestSetFactory.java
 /trunk/user/test/com/google/gwt/user/client/rpc/TestSetValidator.java
/trunk/user/test/com/google/gwt/user/server/rpc/CollectionsTestServiceImpl.java

=======================================
--- /trunk/user/src/com/google/gwt/user/client/rpc/core/java/util/Collections.java Tue Jul 20 05:31:21 2010 +++ /trunk/user/src/com/google/gwt/user/client/rpc/core/java/util/Collections.java Fri Jul 23 07:41:23 2010
@@ -19,18 +19,9 @@
 import com.google.gwt.user.client.rpc.SerializationStreamReader;
 import com.google.gwt.user.client.rpc.SerializationStreamWriter;

-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.TreeMap;
-import java.util.TreeSet;

 /**
  * Dummy class for nesting the custom serializer.
@@ -131,210 +122,4 @@
       streamWriter.writeObject(instance.get(0));
     }
   }
-
-  /**
- * Custom field serializer for {...@link java.util.Collections$SingletonMap}.
-   */
-  public static final class SingletonMap_CustomFieldSerializer {
-
-    @SuppressWarnings({"unused", "unchecked"})
-    public static void deserialize(SerializationStreamReader streamReader,
-        Map instance) throws SerializationException {
-    }
-
-    @SuppressWarnings("unchecked")
-    public static Map instantiate(SerializationStreamReader streamReader)
-        throws SerializationException {
-      Object key = streamReader.readObject();
-      Object value = streamReader.readObject();
-      return java.util.Collections.singletonMap(key, value);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static void serialize(SerializationStreamWriter streamWriter,
-        Map instance) throws SerializationException {
-      Map.Entry entry = (Map.Entry) instance.entrySet().iterator().next();
-      streamWriter.writeObject(entry.getKey());
-      streamWriter.writeObject(entry.getValue());
-    }
-  }
-
-  /**
- * Custom field serializer for {...@link java.util.Collections$UnmodifiableCollection}.
-   */
-  public static final class UnmodifiableCollection_CustomFieldSerializer {
-
-    @SuppressWarnings({"unused", "unchecked"})
-    public static void deserialize(SerializationStreamReader streamReader,
-        Collection instance) throws SerializationException {
-    }
-
-    @SuppressWarnings("unchecked")
- public static Collection instantiate(SerializationStreamReader streamReader)
-        throws SerializationException {
-      Collection collection = new ArrayList();
- Collection_CustomFieldSerializerBase.deserialize(streamReader, collection);
-      return java.util.Collections.unmodifiableCollection(collection);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static void serialize(SerializationStreamWriter streamWriter,
-        Collection instance) throws SerializationException {
- Collection_CustomFieldSerializerBase.serialize(streamWriter, instance);
-    }
-  }
-
-  /**
- * Custom field serializer for {...@link java.util.Collections$UnmodifiableList}.
-   */
-  public static final class UnmodifiableList_CustomFieldSerializer {
-
-    @SuppressWarnings({"unused", "unchecked"})
-    public static void deserialize(SerializationStreamReader streamReader,
-        List instance) throws SerializationException {
-    }
-
-    @SuppressWarnings("unchecked")
-    public static List instantiate(SerializationStreamReader streamReader)
-        throws SerializationException {
-      ArrayList list = new ArrayList();
-      Collection_CustomFieldSerializerBase.deserialize(streamReader, list);
-      return java.util.Collections.unmodifiableList(list);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static void serialize(SerializationStreamWriter streamWriter,
-        List instance) throws SerializationException {
- Collection_CustomFieldSerializerBase.serialize(streamWriter, instance);
-    }
-  }
-
-  /**
- * Custom field serializer for {...@link java.util.Collections$UnmodifiableMap}.
-   */
-  public static final class UnmodifiableMap_CustomFieldSerializer {
-
-    @SuppressWarnings({"unused", "unchecked"})
-    public static void deserialize(SerializationStreamReader streamReader,
-        Map instance) throws SerializationException {
-    }
-
-    @SuppressWarnings("unchecked")
-    public static Map instantiate(SerializationStreamReader streamReader)
-        throws SerializationException {
-      HashMap map = new HashMap();
-      Map_CustomFieldSerializerBase.deserialize(streamReader, map);
-      return java.util.Collections.unmodifiableMap(map);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static void serialize(SerializationStreamWriter streamWriter,
-        Map instance) throws SerializationException {
-      Map_CustomFieldSerializerBase.serialize(streamWriter, instance);
-    }
-  }
-
-  /**
- * Custom field serializer for {...@link java.util.Collections$UnmodifiableRandomAccessList}.
-   */
- public static final class UnmodifiableRandomAccessList_CustomFieldSerializer {
-
-    @SuppressWarnings({"unused", "unchecked"})
-    public static void deserialize(SerializationStreamReader streamReader,
-        List instance) throws SerializationException {
-    }
-
-    @SuppressWarnings("unchecked")
-    public static List instantiate(SerializationStreamReader streamReader)
-        throws SerializationException {
-      ArrayList list = new ArrayList();
-      Collection_CustomFieldSerializerBase.deserialize(streamReader, list);
-      return java.util.Collections.unmodifiableList(list);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static void serialize(SerializationStreamWriter streamWriter,
-        List instance) throws SerializationException {
- Collection_CustomFieldSerializerBase.serialize(streamWriter, instance);
-    }
-  }
-
-  /**
- * Custom field serializer for {...@link java.util.Collections$UnmodifiableSet}.
-   */
-  public static final class UnmodifiableSet_CustomFieldSerializer {
-
-    @SuppressWarnings({"unused", "unchecked"})
-    public static void deserialize(SerializationStreamReader streamReader,
-        Set instance) throws SerializationException {
-    }
-
-    @SuppressWarnings("unchecked")
-    public static Set instantiate(SerializationStreamReader streamReader)
-        throws SerializationException {
-      HashSet set = new HashSet();
-      Collection_CustomFieldSerializerBase.deserialize(streamReader, set);
-      return java.util.Collections.unmodifiableSet(set);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static void serialize(SerializationStreamWriter streamWriter,
-        Set instance) throws SerializationException {
- Collection_CustomFieldSerializerBase.serialize(streamWriter, instance);
-    }
-  }
-
-  /**
- * Custom field serializer for {...@link java.util.Collections$UnmodifiableSortedMap}.
-   */
-  public static final class UnmodifiableSortedMap_CustomFieldSerializer {
-
-    @SuppressWarnings({"unused", "unchecked"})
-    public static void deserialize(SerializationStreamReader streamReader,
-        SortedMap instance) throws SerializationException {
-    }
-
-    @SuppressWarnings("unchecked")
- public static SortedMap instantiate(SerializationStreamReader streamReader)
-        throws SerializationException {
-      Comparator comparator = (Comparator) streamReader.readObject();
-      TreeMap map = new TreeMap(comparator);
-      Map_CustomFieldSerializerBase.deserialize(streamReader, map);
-      return java.util.Collections.unmodifiableSortedMap(map);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static void serialize(SerializationStreamWriter streamWriter,
-        SortedMap instance) throws SerializationException {
-      streamWriter.writeObject(instance.comparator());
-      Map_CustomFieldSerializerBase.serialize(streamWriter, instance);
-    }
-  }
-
-  /**
- * Custom field serializer for {...@link java.util.Collections$UnmodifiableSortedSet}.
-   */
-  public static final class UnmodifiableSortedSet_CustomFieldSerializer {
-
-    @SuppressWarnings({"unused", "unchecked"})
-    public static void deserialize(SerializationStreamReader streamReader,
-        SortedSet instance) throws SerializationException {
-    }
-
-    @SuppressWarnings("unchecked")
- public static SortedSet instantiate(SerializationStreamReader streamReader)
-        throws SerializationException {
-      Comparator comparator = (Comparator) streamReader.readObject();
-      TreeSet set = new TreeSet(comparator);
-      Collection_CustomFieldSerializerBase.deserialize(streamReader, set);
-      return java.util.Collections.unmodifiableSortedSet(set);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static void serialize(SerializationStreamWriter streamWriter,
-        SortedSet instance) throws SerializationException {
-      streamWriter.writeObject(instance.comparator());
- Collection_CustomFieldSerializerBase.serialize(streamWriter, instance);
-    }
-  }
-}
+}
=======================================
--- /trunk/user/src/com/google/gwt/user/client/rpc/core/java/util/TreeSet_CustomFieldSerializer.java Tue Jul 20 05:31:21 2010 +++ /trunk/user/src/com/google/gwt/user/client/rpc/core/java/util/TreeSet_CustomFieldSerializer.java Fri Jul 23 07:41:23 2010
@@ -23,7 +23,7 @@
 import java.util.TreeSet;

 /**
- * Custom field serializer for {...@link java.util.TreeSet}.
+ * Custom field serializer for {...@link java.util.TreeMap}.
  */
 @SuppressWarnings("unchecked")
 public class TreeSet_CustomFieldSerializer {
=======================================
--- /trunk/user/super/com/google/gwt/emul/java/util/Collections.java Tue Jul 20 05:31:21 2010 +++ /trunk/user/super/com/google/gwt/emul/java/util/Collections.java Fri Jul 23 07:41:23 2010
@@ -134,122 +134,12 @@
     }
   }

-  /**
-   * A Map containing exactly one key/value pair, used to implement
-   * the singletonMap(K key, V value) method.  The map is unmodifiable
-   * and attempt to modify it directly, by iterators, or using the
-   * sets returned from keySet(), entrySet(), or values() will fail
-   * with an UnsupportedOperationException.  Null keys and values are
-   * allowed.
+  /*
+   * TODO: make the unmodifiable collections serializable.
    */
- private static final class SingletonMap<K, V> extends AbstractMap<K, V> implements Serializable {
-    Set<Map.Entry<K, V>> entrySet = null;
-    final K key;
-    Set<K> keySet = null;
-    final V value;
-    Set<V> valueSet = null;
-
-    public SingletonMap(K key, V value) {
-      this.key = key;
-      this.value = value;
-    }
-
-    public void clear() {
-      throw new UnsupportedOperationException();
-    }
-
-    public boolean containsKey(Object key) {
-      return Utility.equalsWithNullCheck(this.key, key);
-    }
-
-    public boolean containsValue(Object value) {
-      return Utility.equalsWithNullCheck(this.value, value);
-    }
-
-    public Set<Map.Entry<K, V>> entrySet() {
-      if (entrySet == null) {
-        HashSet set = new HashSet();
-        set.add(new AbstractMapEntry<K, V>() {
-          public K getKey() {
-            return key;
-          }
-
-          public V getValue() {
-            return value;
-          }
-
-          public V setValue(V value) {
-            throw new UnsupportedOperationException();
-          }
-        });
-        entrySet = unmodifiableSet(set);
-      }
-      return entrySet;
-    }
-
-    public boolean equals(Object o) {
-      if (!(o instanceof Map)) {
-        return false;
-      }
-      Map other = (Map) o;
-      return other.size() == 1
-        && other.containsKey(key)
-        && Utility.equalsWithNullCheck(other.get(key), value);
-    }
-
-    public V get(Object key) {
-      return Utility.equalsWithNullCheck(this.key, key) ? value : null;
-    }
-
-    public boolean isEmpty() {
-      return false;
-    }
-
-    public Set<K> keySet() {
-      if (keySet == null) {
-        HashSet<K> set = new HashSet<K>();
-        set.add(key);
-        keySet = unmodifiableSet(set);
-      }
-      return keySet;
-    }
-
-    public V put(K key, V value) {
-      throw new UnsupportedOperationException();
-    }
-
-    public void putAll(Map<? extends K, ? extends V> t) {
-      if (t.size() > 0) {
-        throw new UnsupportedOperationException();
-      }
-    }
-
-    public V remove(Object key) {
-      if (Utility.equalsWithNullCheck(this.key, key)) {
-        throw new UnsupportedOperationException();
-      }
-      return null;
-    }
-
-    public int size() {
-      return 1;
-    }
-
-    public Collection<V> values() {
-      if (valueSet == null) {
-        HashSet<V> set = new HashSet<V>();
-        set.add(value);
-        valueSet = unmodifiableSet(set);
-      }
-      return valueSet;
-    }
-  }

   static class UnmodifiableCollection<T> implements Collection<T> {
-    protected Collection<? extends T> coll;
-
-    public UnmodifiableCollection() {
-    }
+    protected final Collection<? extends T> coll;

     public UnmodifiableCollection(Collection<? extends T> coll) {
       this.coll = coll;
@@ -313,11 +203,8 @@
   }

static class UnmodifiableList<T> extends UnmodifiableCollection<T> implements
-      List<T>, Serializable {
-    private List<? extends T> list;
-
-    public UnmodifiableList() {
-    }
+      List<T> {
+    private final List<? extends T> list;

     public UnmodifiableList(List<? extends T> list) {
       super(list);
@@ -380,7 +267,7 @@
     }
   }

-  static class UnmodifiableMap<K, V> implements Map<K, V>, Serializable {
+  static class UnmodifiableMap<K, V> implements Map<K, V> {

     static class UnmodifiableEntrySet<K, V> extends
         UnmodifiableSet<Map.Entry<K, V>> {
@@ -486,12 +373,9 @@

     private transient UnmodifiableSet<Map.Entry<K, V>> entrySet;
     private transient UnmodifiableSet<K> keySet;
-    private Map<? extends K, ? extends V> map;
+    private final Map<? extends K, ? extends V> map;
     private transient UnmodifiableCollection<V> values;

-    public UnmodifiableMap() {
-    }
-
     public UnmodifiableMap(Map<? extends K, ? extends V> map) {
       this.map = map;
     }
@@ -570,22 +454,14 @@
   }

   static class UnmodifiableRandomAccessList<T> extends UnmodifiableList<T>
-      implements RandomAccess, Serializable {
-
-    public UnmodifiableRandomAccessList() {
-    }
-
+      implements RandomAccess {
     public UnmodifiableRandomAccessList(List<? extends T> list) {
       super(list);
     }
   }

static class UnmodifiableSet<T> extends UnmodifiableCollection<T> implements
-      Set<T>, Serializable {
-
-    public UnmodifiableSet() {
-    }
-
+      Set<T> {
     public UnmodifiableSet(Set<? extends T> set) {
       super(set);
     }
@@ -602,13 +478,10 @@
   }

   static class UnmodifiableSortedMap<K, V> extends UnmodifiableMap<K, V>
-      implements SortedMap<K, V>, Serializable {
+      implements SortedMap<K, V> {

     private SortedMap<K, ? extends V> sortedMap;

-    public UnmodifiableSortedMap() {
-    }
-
     public UnmodifiableSortedMap(SortedMap<K, ? extends V> sortedMap) {
       super(sortedMap);
       this.sortedMap = sortedMap;
@@ -650,12 +523,9 @@
   }

static class UnmodifiableSortedSet<E> extends UnmodifiableSet<E> implements
-      SortedSet<E>, Serializable {
+      SortedSet<E> {
     private SortedSet<E> sortedSet;

-    public UnmodifiableSortedSet() {
-    }
-
     @SuppressWarnings("unchecked")
     public UnmodifiableSortedSet(SortedSet<? extends E> sortedSet) {
       super(sortedSet);
@@ -1069,7 +939,9 @@
   }

   public static <K, V> Map<K, V> singletonMap(K key, V value) {
-    return new SingletonMap<K, V>(key, value);
+    Map<K, V> map = new HashMap<K, V>(1);
+    map.put(key, value);
+    return unmodifiableMap(map);
   }

   public static <T> void sort(List<T> target) {
=======================================
--- /trunk/user/test/com/google/gwt/emultest/java/util/CollectionsTest.java Tue Jul 20 05:31:21 2010 +++ /trunk/user/test/com/google/gwt/emultest/java/util/CollectionsTest.java Fri Jul 23 07:41:23 2010
@@ -17,7 +17,6 @@

 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -156,116 +155,6 @@
     Collections.reverse(b);
     assertEquals(b, createRandomList());
   }
-
-  public void testSingletonMap() {
-    Map<String, Integer> map = Collections.singletonMap("two", 2);
-    assertEquals(1, map.size());
-    assertFalse(map.isEmpty());
-    assertEquals(Integer.valueOf(2), map.get("two"));
-    assertTrue(map.containsKey("two"));
-    assertFalse(map.containsKey("three"));
-    assertTrue(map.containsValue(2));
-    assertFalse(map.containsValue(3));
-
-    try {
-      map.clear();
-      fail();
-    } catch (UnsupportedOperationException e) {
-    }
-
-    try {
-      map.put("three", 3);
-      fail();
-    } catch (UnsupportedOperationException e) {
-    }
-
-    try {
-      HashMap<String, Integer> m = new HashMap<String, Integer>();
-      map.putAll(m);
-    } catch (UnsupportedOperationException e) {
-      fail();
-    }
-
-    try {
-      HashMap<String, Integer> m = new HashMap<String, Integer>();
-      m.put("three", 3);
-      map.putAll(m);
-      fail();
-    } catch (UnsupportedOperationException e) {
-    }
-
-    try {
-      map.remove("three");
-    } catch (UnsupportedOperationException e) {
-      fail();
-    }
-
-    try {
-      map.remove("two");
-      fail();
-    } catch (UnsupportedOperationException e) {
-    }
-
-    // Test equals, hashCode, keySet, entrySet and values against a
-    // HashMap
-    HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
-    hashMap.put("two", 2);
-    assertEquals(hashMap, map);
-    assertEquals(hashMap.hashCode(), map.hashCode());
-    assertEquals(hashMap.keySet(), map.keySet());
-    assertEquals(hashMap.entrySet(), map.entrySet());
-
-    Collection<Integer> values = map.values();
-    assertNotNull(values);
-    assertEquals(1, values.size());
-    assertEquals(Integer.valueOf(2), values.iterator().next());
-    try {
-      values.add(3);
-      fail();
-    } catch (UnsupportedOperationException e) {
-    }
-
-    // null key
-    map = Collections.singletonMap(null, 2);
-    assertEquals(1, map.size());
-    assertFalse(map.isEmpty());
-    assertEquals(Integer.valueOf(2), map.get(null));
-    assertTrue(map.containsKey(null));
-    assertFalse(map.containsKey("three"));
-    assertTrue(map.containsValue(2));
-    assertFalse(map.containsValue(3));
-
-    // null value
-    map = Collections.singletonMap("null", null);
-    assertEquals(1, map.size());
-    assertFalse(map.isEmpty());
-    assertNull(map.get("null"));
-    assertTrue(map.containsKey("null"));
-    assertFalse(map.containsKey("three"));
-    assertTrue(map.containsValue(null));
-    assertFalse(map.containsValue(3));
-
-    // null key and value
-    map = Collections.singletonMap(null, null);
-    assertEquals(1, map.size());
-    assertFalse(map.isEmpty());
-    assertNull(map.get(null));
-    assertTrue(map.containsKey(null));
-    assertFalse(map.containsKey("three"));
-    assertTrue(map.containsValue(null));
-    assertFalse(map.containsValue(3));
-
-    // Equality for maps with a null value
- Map<Integer, String> map2 = Collections.singletonMap(Integer.valueOf(2), null);
-    HashMap<Integer, String> hashMap2 = new HashMap<Integer, String>();
-    assertFalse(map2.equals(hashMap2));
-    hashMap2.put(Integer.valueOf(1), null);
-    assertFalse(map2.equals(hashMap2));
-    hashMap2.put(Integer.valueOf(2), null);
-    assertFalse(map2.equals(hashMap2));
-    hashMap2.remove(Integer.valueOf(1));
-    assertTrue(map2.equals(hashMap2));
-  }

   public void testSort() {
     List<String> a = createSortedList();
=======================================
--- /trunk/user/test/com/google/gwt/user/client/rpc/CollectionsTest.java Tue Jul 20 05:31:21 2010 +++ /trunk/user/test/com/google/gwt/user/client/rpc/CollectionsTest.java Fri Jul 23 07:41:23 2010
@@ -25,14 +25,12 @@
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeSingleton;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeTreeMap;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeTreeSet;
-import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeUnmodifiable;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeVector;
import com.google.gwt.user.client.rpc.core.java.util.LinkedHashMap_CustomFieldSerializer;

 import java.sql.Time;
 import java.sql.Timestamp;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -583,23 +581,6 @@
           }
         });
   }
-
-  public void testSingletonMap() {
-    CollectionsTestServiceAsync service = getServiceAsync();
-    delayTestFinishForRpc();
-    service.echoSingletonMap(TestSetFactory.createSingletonMap(),
-        new AsyncCallback<Map<Integer, MarkerTypeSingleton>>() {
-          public void onFailure(Throwable caught) {
-            TestSetValidator.rethrowException(caught);
-          }
-
-          public void onSuccess(Map<Integer, MarkerTypeSingleton> result) {
-            assertNotNull(result);
-            assertTrue(TestSetValidator.isValidSingletonMap(result));
-            finishTest();
-          }
-        });
-  }

   public void testSqlDateArray() {
     CollectionsTestServiceAsync service = getServiceAsync();
@@ -725,125 +706,6 @@
           });
     }
   }
-
-  public void testUnmodifiableCollection() {
-    CollectionsTestServiceAsync service = getServiceAsync();
-    delayTestFinishForRpc();
- service.echoUnmodifiableCollection(TestSetFactory.createUnmodifiableCollection(),
-        new AsyncCallback<Collection<MarkerTypeUnmodifiable>>() {
-          public void onFailure(Throwable caught) {
-            TestSetValidator.rethrowException(caught);
-          }
-
- public void onSuccess(Collection<MarkerTypeUnmodifiable> result) {
-            assertNotNull(result);
- assertTrue(TestSetValidator.isValidUnmodifiableCollection(result));
-            finishTest();
-          }
-        });
-  }
-
-  public void testUnmodifiableList() {
-    CollectionsTestServiceAsync service = getServiceAsync();
-    delayTestFinishForRpc();
-    service.echoUnmodifiableList(TestSetFactory.createUnmodifiableList(),
-        new AsyncCallback<List<MarkerTypeUnmodifiable>>() {
-          public void onFailure(Throwable caught) {
-            TestSetValidator.rethrowException(caught);
-          }
-
-          public void onSuccess(List<MarkerTypeUnmodifiable> result) {
-            assertNotNull(result);
-            assertTrue(TestSetValidator.isValidUnmodifiableList(result));
-            finishTest();
-          }
-        });
-  }
-
-  public void testUnmodifiableMap() {
-    CollectionsTestServiceAsync service = getServiceAsync();
-    delayTestFinishForRpc();
-    service.echoUnmodifiableMap(TestSetFactory.createUnmodifiableMap(),
-        new AsyncCallback<Map<Integer, MarkerTypeUnmodifiable>>() {
-          public void onFailure(Throwable caught) {
-            TestSetValidator.rethrowException(caught);
-          }
-
- public void onSuccess(Map<Integer, MarkerTypeUnmodifiable> result) {
-            assertNotNull(result);
-            assertTrue(TestSetValidator.isValidUnmodifiableMap(result));
-            finishTest();
-          }
-        });
-  }
-
-  public void testUnmodifiableRandomAccessList() {
-    CollectionsTestServiceAsync service = getServiceAsync();
-    delayTestFinishForRpc();
- service.echoUnmodifiableList(TestSetFactory.createUnmodifiableRandomAccessList(),
-        new AsyncCallback<List<MarkerTypeUnmodifiable>>() {
-          public void onFailure(Throwable caught) {
-            TestSetValidator.rethrowException(caught);
-          }
-
-          public void onSuccess(List<MarkerTypeUnmodifiable> result) {
-            assertNotNull(result);
- assertTrue(TestSetValidator.isValidUnmodifiableRandomAccessList(result));
-            finishTest();
-          }
-        });
-  }
-
-  public void testUnmodifiableSet() {
-    CollectionsTestServiceAsync service = getServiceAsync();
-    delayTestFinishForRpc();
-    service.echoUnmodifiableSet(TestSetFactory.createUnmodifiableSet(),
-        new AsyncCallback<Set<MarkerTypeUnmodifiable>>() {
-          public void onFailure(Throwable caught) {
-            TestSetValidator.rethrowException(caught);
-          }
-
-          public void onSuccess(Set<MarkerTypeUnmodifiable> result) {
-            assertNotNull(result);
-            assertTrue(TestSetValidator.isValidUnmodifiableSet(result));
-            finishTest();
-          }
-        });
-  }
-
-  public void testUnmodifiableSortedMap() {
-    CollectionsTestServiceAsync service = getServiceAsync();
-    delayTestFinishForRpc();
- service.echoUnmodifiableMap(TestSetFactory.createUnmodifiableSortedMap(),
-        new AsyncCallback<Map<Integer, MarkerTypeUnmodifiable>>() {
-          public void onFailure(Throwable caught) {
-            TestSetValidator.rethrowException(caught);
-          }
-
- public void onSuccess(Map<Integer, MarkerTypeUnmodifiable> result) {
-            assertNotNull(result);
- assertTrue(TestSetValidator.isValidUnmodifiableSortedMap(result));
-            finishTest();
-          }
-        });
-  }
-
-  public void testUnmodifiableSortedSet() {
-    CollectionsTestServiceAsync service = getServiceAsync();
-    delayTestFinishForRpc();
- service.echoUnmodifiableSet(TestSetFactory.createUnmodifiableSortedSet(),
-        new AsyncCallback<Set<MarkerTypeUnmodifiable>>() {
-          public void onFailure(Throwable caught) {
-            TestSetValidator.rethrowException(caught);
-          }
-
-          public void onSuccess(Set<MarkerTypeUnmodifiable> result) {
-            assertNotNull(result);
- assertTrue(TestSetValidator.isValidUnmodifiableSortedSet(result));
-            finishTest();
-          }
-        });
-  }

   public void testVector() {
     CollectionsTestServiceAsync service = getServiceAsync();
=======================================
--- /trunk/user/test/com/google/gwt/user/client/rpc/CollectionsTestService.java Tue Jul 20 05:31:21 2010 +++ /trunk/user/test/com/google/gwt/user/client/rpc/CollectionsTestService.java Fri Jul 23 07:41:23 2010
@@ -25,13 +25,11 @@
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeSingleton;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeTreeMap;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeTreeSet;
-import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeUnmodifiable;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeVector;

 import java.sql.Time;
 import java.sql.Timestamp;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -158,25 +156,4 @@
   // For Collections.singletonList()
List<MarkerTypeSingleton> echoSingletonList(List<MarkerTypeSingleton> value)
       throws CollectionsTestServiceException;
-
-  // For Collections.singletonMap()
- Map<Integer, MarkerTypeSingleton> echoSingletonMap(Map<Integer, MarkerTypeSingleton> value)
-      throws CollectionsTestServiceException;
-
-  // For Collections.unmodifiableCollection()
- Collection<MarkerTypeUnmodifiable> echoUnmodifiableCollection(Collection<MarkerTypeUnmodifiable> value)
-      throws CollectionsTestServiceException;
-
-  // For Collections.unmodifiableList()
- List<MarkerTypeUnmodifiable> echoUnmodifiableList(List<MarkerTypeUnmodifiable> value)
-      throws CollectionsTestServiceException;
-
-  // For Collections.unmodifiableMap()
-  Map<Integer, MarkerTypeUnmodifiable> echoUnmodifiableMap(
-      Map<Integer, MarkerTypeUnmodifiable> value)
-      throws CollectionsTestServiceException;
-
-  // For Collections.unmodifiableSet()
- Set<MarkerTypeUnmodifiable> echoUnmodifiableSet(Set<MarkerTypeUnmodifiable> value)
-      throws CollectionsTestServiceException;
-}
+}
=======================================
--- /trunk/user/test/com/google/gwt/user/client/rpc/CollectionsTestServiceAsync.java Tue Jul 20 05:31:21 2010 +++ /trunk/user/test/com/google/gwt/user/client/rpc/CollectionsTestServiceAsync.java Fri Jul 23 07:41:23 2010
@@ -25,13 +25,11 @@
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeSingleton;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeTreeMap;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeTreeSet;
-import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeUnmodifiable;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeVector;

 import java.sql.Time;
 import java.sql.Timestamp;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -139,24 +137,4 @@
   // For Collections.singletonList()
   void echoSingletonList(List<MarkerTypeSingleton> value,
       AsyncCallback<List<MarkerTypeSingleton>> callback);
-
-  // For Collections.singletonMap()
-  void echoSingletonMap(Map<Integer, MarkerTypeSingleton> value,
-      AsyncCallback<Map<Integer, MarkerTypeSingleton>> callback);
-
-  // For Collections.unmodifiableCollection()
-  void echoUnmodifiableCollection(Collection<MarkerTypeUnmodifiable> value,
-      AsyncCallback<Collection<MarkerTypeUnmodifiable>> callback);
-
-  // For Collections.unmodifiableList()
-  void echoUnmodifiableList(List<MarkerTypeUnmodifiable> value,
-      AsyncCallback<List<MarkerTypeUnmodifiable>> callback);
-
-  // For Collections.unmodifiableMap()
-  void echoUnmodifiableMap(Map<Integer, MarkerTypeUnmodifiable> value,
-      AsyncCallback<Map<Integer, MarkerTypeUnmodifiable>> callback);
-
-  // For Collections.unmodifiableSet()
-  void echoUnmodifiableSet(Set<MarkerTypeUnmodifiable> value,
-      AsyncCallback<Set<MarkerTypeUnmodifiable>> callback);
-}
+}
=======================================
--- /trunk/user/test/com/google/gwt/user/client/rpc/TestSetFactory.java Tue Jul 20 05:31:21 2010 +++ /trunk/user/test/com/google/gwt/user/client/rpc/TestSetFactory.java Fri Jul 23 07:41:23 2010
@@ -20,19 +20,15 @@
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
 import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.Vector;
@@ -194,16 +190,6 @@
       super("singleton");
     }
   }
-
-  /**
- * A single-use marker type to independently check type parameter exposure in
-   * unmodifiable collections.
-   */
-  public static final class MarkerTypeUnmodifiable extends MarkerBase {
-    MarkerTypeUnmodifiable() {
-      super("unmodifiable");
-    }
-  }

   /**
* A single-use marker type to independently check type parameter exposure in
@@ -601,10 +587,6 @@
   public static List<MarkerTypeSingleton> createSingletonList() {
     return java.util.Collections.singletonList(new MarkerTypeSingleton());
   }
-
-  public static Map<Integer, MarkerTypeSingleton> createSingletonMap() {
- return java.util.Collections.singletonMap(2, new MarkerTypeSingleton());
-  }

   public static java.sql.Date[] createSqlDateArray() {
     return new java.sql.Date[] {
@@ -661,50 +643,6 @@
     set.add(new MarkerTypeTreeSet("w00t"));
     return set;
   }
-
- public static Collection<MarkerTypeUnmodifiable> createUnmodifiableCollection() { - List<MarkerTypeUnmodifiable> list = new LinkedList<MarkerTypeUnmodifiable>();
-    list.add(new MarkerTypeUnmodifiable());
-    return java.util.Collections.unmodifiableCollection(list);
-  }
-
-  public static List<MarkerTypeUnmodifiable> createUnmodifiableList() {
- List<MarkerTypeUnmodifiable> list = new LinkedList<MarkerTypeUnmodifiable>();
-    list.add(new MarkerTypeUnmodifiable());
-    return java.util.Collections.unmodifiableList(list);
-  }
-
- public static Map<Integer, MarkerTypeUnmodifiable> createUnmodifiableMap() {
-    Map<Integer, MarkerTypeUnmodifiable> map =
-      new HashMap<Integer, MarkerTypeUnmodifiable>();
-    map.put(1, new MarkerTypeUnmodifiable());
-    return java.util.Collections.unmodifiableMap(map);
-  }
-
- public static Map<Integer, MarkerTypeUnmodifiable> createUnmodifiableSortedMap() {
-    SortedMap<Integer, MarkerTypeUnmodifiable> map =
-      new TreeMap<Integer, MarkerTypeUnmodifiable>();
-    map.put(1, new MarkerTypeUnmodifiable());
-    return java.util.Collections.unmodifiableSortedMap(map);
-  }
-
- public static List<MarkerTypeUnmodifiable> createUnmodifiableRandomAccessList() { - List<MarkerTypeUnmodifiable> list = new ArrayList<MarkerTypeUnmodifiable>();
-    list.add(new MarkerTypeUnmodifiable());
-    return java.util.Collections.unmodifiableList(list);
-  }
-
-  public static Set<MarkerTypeUnmodifiable> createUnmodifiableSet() {
- Set<MarkerTypeUnmodifiable> set = new HashSet<MarkerTypeUnmodifiable>();
-    set.add(new MarkerTypeUnmodifiable());
-    return java.util.Collections.unmodifiableSet(set);
-  }
-
-  public static Set<MarkerTypeUnmodifiable> createUnmodifiableSortedSet() {
- SortedSet<MarkerTypeUnmodifiable> set = new TreeSet<MarkerTypeUnmodifiable>();
-    set.add(new MarkerTypeUnmodifiable());
-    return java.util.Collections.unmodifiableSortedSet(set);
-  }

   public static Vector<MarkerTypeVector> createVector() {
     Vector<MarkerTypeVector> vector = new Vector<MarkerTypeVector>();
=======================================
--- /trunk/user/test/com/google/gwt/user/client/rpc/TestSetValidator.java Tue Jul 20 05:31:21 2010 +++ /trunk/user/test/com/google/gwt/user/client/rpc/TestSetValidator.java Fri Jul 23 07:41:23 2010
@@ -19,7 +19,6 @@
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeSingleton;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeTreeMap;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeTreeSet;
-import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeUnmodifiable; import com.google.gwt.user.client.rpc.TestSetFactory.SerializableDoublyLinkedNode; import com.google.gwt.user.client.rpc.TestSetFactory.SerializableGraphWithCFS; import com.google.gwt.user.client.rpc.TestSetFactory.SerializablePrivateNoArg;
@@ -31,7 +30,6 @@
 import static junit.framework.Assert.assertSame;

 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -39,10 +37,7 @@
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.RandomAccess;
 import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
 import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.Vector;
@@ -555,27 +550,6 @@
     }
     return true;
   }
-
- public static boolean isValidSingletonMap(Map<Integer, MarkerTypeSingleton> map) {
-    if (map == null || map.size() != 1) {
-      return false;
-    }
-    try {
-      map.put(3, new MarkerTypeSingleton());
-      return false;
-    } catch (UnsupportedOperationException e) {
-    }
-    Object value = map.get(2);
-    // Perform instanceof check in case RPC did the wrong thing
-    if (!(value instanceof MarkerTypeSingleton)) {
-      return false;
-    }
-    MarkerTypeSingleton singleton = (MarkerTypeSingleton) value;
-    if (!"singleton".equals(singleton.getValue())) {
-      return false;
-    }
-    return true;
-  }

   public static boolean isValidTrivialCyclicGraph(
       SerializableDoublyLinkedNode actual) {
@@ -603,169 +577,6 @@

     return true;
   }
-
- public static boolean isValidUnmodifiableCollection(Collection<MarkerTypeUnmodifiable> collection) {
-    if (collection == null || collection.size() != 1) {
-      return false;
-    }
-    try {
-      collection.add(new MarkerTypeUnmodifiable());
-      return false;
-    } catch (UnsupportedOperationException e) {
-    }
-
-    Object value = collection.iterator().next();
-    // Perform instanceof check in case RPC did the wrong thing
-    if (!(value instanceof MarkerTypeUnmodifiable)) {
-      return false;
-    }
-    MarkerTypeUnmodifiable v = (MarkerTypeUnmodifiable) value;
-    if (!"unmodifiable".equals(v.getValue())) {
-      return false;
-    }
-    return true;
-  }
-
- public static boolean isValidUnmodifiableList(List<MarkerTypeUnmodifiable> list) {
-    if (list == null || list.size() != 1) {
-      return false;
-    }
-    try {
-      list.add(new MarkerTypeUnmodifiable());
-      return false;
-    } catch (UnsupportedOperationException e) {
-    }
-
-    Object value = list.get(0);
-    // Perform instanceof check in case RPC did the wrong thing
-    if (!(value instanceof MarkerTypeUnmodifiable)) {
-      return false;
-    }
-    MarkerTypeUnmodifiable v = (MarkerTypeUnmodifiable) value;
-    if (!"unmodifiable".equals(v.getValue())) {
-      return false;
-    }
-    return true;
-  }
-
- public static boolean isValidUnmodifiableMap(Map<Integer, MarkerTypeUnmodifiable> map) {
-    if (map == null || map.size() != 1) {
-      return false;
-    }
-    try {
-      map.put(2, new MarkerTypeUnmodifiable());
-      return false;
-    } catch (UnsupportedOperationException e) {
-    }
-
-    Object value = map.get(1);
-    // Perform instanceof check in case RPC did the wrong thing
-    if (!(value instanceof MarkerTypeUnmodifiable)) {
-      return false;
-    }
-    MarkerTypeUnmodifiable v = (MarkerTypeUnmodifiable) value;
-    if (!"unmodifiable".equals(v.getValue())) {
-      return false;
-    }
-    return true;
-  }
-
- public static boolean isValidUnmodifiableRandomAccessList(List<MarkerTypeUnmodifiable> list) {
-    if (list == null || list.size() != 1) {
-      return false;
-    }
-    if (!(list instanceof RandomAccess)) {
-      return false;
-    }
-    try {
-      list.add(new MarkerTypeUnmodifiable());
-      return false;
-    } catch (UnsupportedOperationException e) {
-    }
-
-    Object value = list.get(0);
-    // Perform instanceof check in case RPC did the wrong thing
-    if (!(value instanceof MarkerTypeUnmodifiable)) {
-      return false;
-    }
-    MarkerTypeUnmodifiable v = (MarkerTypeUnmodifiable) value;
-    if (!"unmodifiable".equals(v.getValue())) {
-      return false;
-    }
-    return true;
-  }
-
- public static boolean isValidUnmodifiableSet(Set<MarkerTypeUnmodifiable> set) {
-    if (set == null || set.size() != 1) {
-      return false;
-    }
-    try {
-      set.add(new MarkerTypeUnmodifiable());
-      return false;
-    } catch (UnsupportedOperationException e) {
-    }
-
-    Object value = set.iterator().next();
-    // Perform instanceof check in case RPC did the wrong thing
-    if (!(value instanceof MarkerTypeUnmodifiable)) {
-      return false;
-    }
-    MarkerTypeUnmodifiable v = (MarkerTypeUnmodifiable) value;
-    if (!"unmodifiable".equals(v.getValue())) {
-      return false;
-    }
-    return true;
-  }
-
- public static boolean isValidUnmodifiableSortedMap(Map<Integer, MarkerTypeUnmodifiable> map) {
-    if (map == null || map.size() != 1) {
-      return false;
-    }
-    if (!(map instanceof SortedMap<?, ?>)) {
-      return false;
-    }
-    try {
-      map.put(2, new MarkerTypeUnmodifiable());
-      return false;
-    } catch (UnsupportedOperationException e) {
-    }
-
-    Object value = map.get(1);
-    // Perform instanceof check in case RPC did the wrong thing
-    if (!(value instanceof MarkerTypeUnmodifiable)) {
-      return false;
-    }
-    MarkerTypeUnmodifiable v = (MarkerTypeUnmodifiable) value;
-    if (!"unmodifiable".equals(v.getValue())) {
-      return false;
-    }
-    return true;
-  }
-
- public static boolean isValidUnmodifiableSortedSet(Set<MarkerTypeUnmodifiable> set) {
-    if (set == null || set.size() != 1) {
-      return false;
-    }
-    if (!(set instanceof SortedSet<?>)) {
-      return false;
-    }
-    try {
-      set.add(new MarkerTypeUnmodifiable());
-      return false;
-    } catch (UnsupportedOperationException e) {
-    }
-
-    Object value = set.iterator().next();
-    // Perform instanceof check in case RPC did the wrong thing
-    if (!(value instanceof MarkerTypeUnmodifiable)) {
-      return false;
-    }
-    MarkerTypeUnmodifiable v = (MarkerTypeUnmodifiable) value;
-    if (!"unmodifiable".equals(v.getValue())) {
-      return false;
-    }
-    return true;
-  }

   /**
* Wrap an exception in RuntimeException if necessary so it doesn't have to be
=======================================
--- /trunk/user/test/com/google/gwt/user/server/rpc/CollectionsTestServiceImpl.java Tue Jul 20 05:31:21 2010 +++ /trunk/user/test/com/google/gwt/user/server/rpc/CollectionsTestServiceImpl.java Fri Jul 23 07:41:23 2010
@@ -28,14 +28,12 @@
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeSingleton;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeTreeMap;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeTreeSet;
-import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeUnmodifiable;
 import com.google.gwt.user.client.rpc.TestSetFactory.MarkerTypeVector;

 import java.sql.Time;
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -437,51 +435,6 @@
     if (!TestSetValidator.isValidSingletonList(value)) {
       throw new CollectionsTestServiceException();
     }
-
-    return value;
-  }
-
-  public Map<Integer, MarkerTypeSingleton> echoSingletonMap(
- Map<Integer, MarkerTypeSingleton> value) throws CollectionsTestServiceException {
-    if (!TestSetValidator.isValidSingletonMap(value)) {
-      throw new CollectionsTestServiceException();
-    }
-
-    return value;
-  }
-
-  public Collection<MarkerTypeUnmodifiable> echoUnmodifiableCollection(
- Collection<MarkerTypeUnmodifiable> value) throws CollectionsTestServiceException {
-    if (!TestSetValidator.isValidUnmodifiableCollection(value)) {
-      throw new CollectionsTestServiceException();
-    }
-
-    return value;
-  }
-
-  public List<MarkerTypeUnmodifiable> echoUnmodifiableList(
- List<MarkerTypeUnmodifiable> value) throws CollectionsTestServiceException {
-    if (!TestSetValidator.isValidUnmodifiableList(value)) {
-      throw new CollectionsTestServiceException();
-    }
-
-    return value;
-  }
-
-  public Map<Integer, MarkerTypeUnmodifiable> echoUnmodifiableMap(
- Map<Integer, MarkerTypeUnmodifiable> value) throws CollectionsTestServiceException {
-    if (!TestSetValidator.isValidUnmodifiableMap(value)) {
-      throw new CollectionsTestServiceException();
-    }
-
-    return value;
-  }
-
-  public Set<MarkerTypeUnmodifiable> echoUnmodifiableSet(
- Set<MarkerTypeUnmodifiable> value) throws CollectionsTestServiceException {
-    if (!TestSetValidator.isValidUnmodifiableSet(value)) {
-      throw new CollectionsTestServiceException();
-    }

     return value;
   }

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to