ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java
changeset 1007 2ea65c6d3a8b
parent 984 3dfb8f1fd2f5
child 1020 b5d5cbb44ce0
     1.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java	Tue Sep 15 21:08:02 2015 +0200
     1.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java	Sun Oct 04 14:55:01 2015 +0200
     1.3 @@ -44,6 +44,9 @@
     1.4  
     1.5  import java.lang.ref.ReferenceQueue;
     1.6  import java.lang.ref.WeakReference;
     1.7 +import java.util.Collections;
     1.8 +import java.util.HashSet;
     1.9 +import java.util.Set;
    1.10  import net.java.html.js.JavaScriptBody;
    1.11  import net.java.html.js.JavaScriptResource;
    1.12  import net.java.html.json.Model;
    1.13 @@ -62,6 +65,7 @@
    1.14  @JavaScriptResource("knockout-3.2.0.debug.js")
    1.15  final class Knockout extends WeakReference<Object> {
    1.16      private static final ReferenceQueue<Object> QUEUE = new ReferenceQueue();
    1.17 +    private static final Set<Knockout> active = Collections.synchronizedSet(new HashSet<Knockout>());
    1.18      
    1.19      private PropertyBinding[] props;
    1.20      private FunctionBinding[] funcs;
    1.21 @@ -79,6 +83,7 @@
    1.22          for (int i = 0; i < funcs.length; i++) {
    1.23              this.funcs[i] = funcs[i].weak();
    1.24          }
    1.25 +        active.add(this);
    1.26      }
    1.27      
    1.28      static void cleanUp() {
    1.29 @@ -87,6 +92,7 @@
    1.30              if (ko == null) {
    1.31                  return;
    1.32              }
    1.33 +            active.remove(ko);
    1.34              clean(ko.js);
    1.35              ko.js = null;
    1.36              ko.props = null;