Revision: 6639
Author: r...@google.com
Date: Wed Nov  4 07:30:47 2009
Log: Merge tr...@6609 into this branch
Avoid calling overridable methods from constructors to avoid subclassing  
glitches
svn merge --ignore-ancestry -c 6609  
http://google-web-toolkit.googlecode.com/svn/trunk/ .


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

Modified:
  /releases/2.0/branch-info.txt
  /releases/2.0/user/super/com/google/gwt/emul/java/util/ArrayList.java

=======================================
--- /releases/2.0/branch-info.txt       Wed Nov  4 07:16:01 2009
+++ /releases/2.0/branch-info.txt       Wed Nov  4 07:30:47 2009
@@ -254,3 +254,7 @@
  tr...@6520 was merged into this branch
    Fix javadoc tag errors
    svn merge --ignore-ancestry -c 6520  
http://google-web-toolkit.googlecode.com/svn/trunk/ .
+
+tr...@6609 was merged into this branch
+  Avoid calling overridable methods from constructors to avoid subclassing  
glitches
+  svn merge --ignore-ancestry -c 6609  
http://google-web-toolkit.googlecode.com/svn/trunk/ .
=======================================
--- /releases/2.0/user/super/com/google/gwt/emul/java/util/ArrayList.java       
 
Fri Oct  9 15:22:16 2009
+++ /releases/2.0/user/super/com/google/gwt/emul/java/util/ArrayList.java       
 
Wed Nov  4 07:30:47 2009
@@ -61,7 +61,7 @@
    /**
     * This field holds a JavaScript array.
     */
-  private transient E[] array;
+  private transient E[] array = (E[]) new Object[0];

    /**
     * Ensures that RPC will consider type parameter E to be exposed. It  
will be
@@ -73,22 +73,21 @@
    /**
     * The size of the array.
     */
-  private int size;
-
-  {
-    clearImpl();
-  }
+  private int size = 0;

    public ArrayList() {
    }
-
+
    public ArrayList(Collection<? extends E> c) {
-    addAll(c);
+    // Avoid calling overridable methods from constructors
+    spliceArray(array, 0, 0, c.toArray());
+    size = c.size();
    }

    public ArrayList(int initialCapacity) {
+    // Avoid calling overridable methods from constructors
      assert (initialCapacity >= 0);
-    ensureCapacity(initialCapacity);
+    setCapacity(array, initialCapacity);
    }

    @Override
@@ -130,7 +129,8 @@

    @Override
    public void clear() {
-    clearImpl();
+    array = (E[]) new Object[0];
+    size = 0;
    }

    public Object clone() {
@@ -275,10 +275,4 @@
      setCapacity(array, newSize);
      size = newSize;
    }
-
-  @SuppressWarnings("unchecked")
-  private void clearImpl() {
-    array = (E[]) new Object[0];
-    size = 0;
-  }
-}
+}

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

Reply via email to