json/src/main/java/org/netbeans/html/json/impl/JSONList.java
branchNonMutable258088
changeset 1054 4c40ceb185e5
parent 1028 453e44c757ff
     1.1 --- a/json/src/main/java/org/netbeans/html/json/impl/JSONList.java	Sun Dec 13 21:12:26 2015 +0100
     1.2 +++ b/json/src/main/java/org/netbeans/html/json/impl/JSONList.java	Mon Feb 22 06:09:33 2016 +0100
     1.3 @@ -88,6 +88,7 @@
     1.4      
     1.5      @Override
     1.6      public boolean add(T e) {
     1.7 +        prepareChange();
     1.8          boolean ret = super.add(e);
     1.9          notifyChange();
    1.10          return ret;
    1.11 @@ -95,6 +96,7 @@
    1.12  
    1.13      @Override
    1.14      public boolean addAll(Collection<? extends T> c) {
    1.15 +        prepareChange();
    1.16          boolean ret = super.addAll(c);
    1.17          notifyChange();
    1.18          return ret;
    1.19 @@ -102,12 +104,14 @@
    1.20  
    1.21      @Override
    1.22      public boolean addAll(int index, Collection<? extends T> c) {
    1.23 +        prepareChange();
    1.24          boolean ret = super.addAll(index, c);
    1.25          notifyChange();
    1.26          return ret;
    1.27      }
    1.28  
    1.29      public void fastReplace(Collection<? extends T> c) {
    1.30 +        prepareChange();
    1.31          super.clear();
    1.32          super.addAll(c);
    1.33          notifyChange();
    1.34 @@ -115,6 +119,7 @@
    1.35  
    1.36      @Override
    1.37      public boolean remove(Object o) {
    1.38 +        prepareChange();
    1.39          boolean ret = super.remove(o);
    1.40          notifyChange();
    1.41          return ret;
    1.42 @@ -122,12 +127,14 @@
    1.43  
    1.44      @Override
    1.45      public void clear() {
    1.46 +        prepareChange();
    1.47          super.clear();
    1.48          notifyChange();
    1.49      }
    1.50  
    1.51      @Override
    1.52      public boolean removeAll(Collection<?> c) {
    1.53 +        prepareChange();
    1.54          boolean ret = super.removeAll(c);
    1.55          notifyChange();
    1.56          return ret;
    1.57 @@ -135,6 +142,7 @@
    1.58  
    1.59      @Override
    1.60      public boolean retainAll(Collection<?> c) {
    1.61 +        prepareChange();
    1.62          boolean ret = super.retainAll(c);
    1.63          notifyChange();
    1.64          return ret;
    1.65 @@ -142,6 +150,7 @@
    1.66  
    1.67      @Override
    1.68      public T set(int index, T element) {
    1.69 +        prepareChange();
    1.70          T ret = super.set(index, element);
    1.71          notifyChange();
    1.72          return ret;
    1.73 @@ -149,12 +158,14 @@
    1.74  
    1.75      @Override
    1.76      public void add(int index, T element) {
    1.77 +        prepareChange();
    1.78          super.add(index, element);
    1.79          notifyChange();
    1.80      }
    1.81  
    1.82      @Override
    1.83      public T remove(int index) {
    1.84 +        prepareChange();
    1.85          T ret = super.remove(index);
    1.86          notifyChange();
    1.87          return ret;
    1.88 @@ -179,6 +190,16 @@
    1.89          return sb.toString();
    1.90      }
    1.91  
    1.92 +    private void prepareChange() {
    1.93 +        if (index == Integer.MIN_VALUE) {
    1.94 +            try {
    1.95 +                proto.initTo(null, null);
    1.96 +            } catch (IllegalStateException ex) {
    1.97 +                throw new UnsupportedOperationException();
    1.98 +            }
    1.99 +        }
   1.100 +    }
   1.101 +
   1.102      private void notifyChange() {
   1.103          proto.getContext().execute(new Runnable() {
   1.104              @Override