You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by jt...@apache.org on 2017/09/08 21:06:16 UTC

[08/28] incubator-netbeans-html4j git commit: Test to verify that keepAlive=true objects are really kept in memory

Test to verify that keepAlive=true objects are really kept in memory


Project: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/commit/323e9ba0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/tree/323e9ba0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/diff/323e9ba0

Branch: refs/heads/master
Commit: 323e9ba0782e85637a7e962531d7d49ca4010803
Parents: c3034c1
Author: Jaroslav Tulach <jt...@netbeans.org>
Authored: Fri Jan 13 19:38:45 2017 +0100
Committer: Jaroslav Tulach <ja...@apidesign.org>
Committed: Fri Sep 8 17:13:55 2017 +0200

----------------------------------------------------------------------
 .../java/net/java/html/js/tests/Bodies.java     | 12 ++++++++++++
 .../java/net/java/html/js/tests/GCBodyTest.java | 20 ++++++++++++++++++++
 2 files changed, 32 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/blob/323e9ba0/json-tck/src/main/java/net/java/html/js/tests/Bodies.java
----------------------------------------------------------------------
diff --git a/json-tck/src/main/java/net/java/html/js/tests/Bodies.java b/json-tck/src/main/java/net/java/html/js/tests/Bodies.java
index 029a3a2..122f9f7 100644
--- a/json-tck/src/main/java/net/java/html/js/tests/Bodies.java
+++ b/json-tck/src/main/java/net/java/html/js/tests/Bodies.java
@@ -92,6 +92,18 @@ final class Bodies {
         "return c.@net.java.html.js.tests.Sum::sum(II)(a, b);"
     )
     public static native int sumIndirect(Sum c, int a, int b);
+
+    @JavaScriptBody(args = { "c" }, javacall = true, body =
+        "return {\n" +
+        "  'sum' : function(a,b) {\n" +
+        "     return c.@net.java.html.js.tests.Sum::sum(II)(a, b);\n" +
+        "  }\n" +
+        "};\n"
+    )
+    public static native Object sumDelayed(Sum c);
+
+    @JavaScriptBody(args = { "sum", "a", "b" }, body = "return sum.sum(a, b);")
+    public static native int sumNow(Object sum, int a, int b);
     
     @JavaScriptBody(args = { "arr", "index" }, body = "return arr[index];")
     public static native Object select(Object[] arr, int index);

http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/blob/323e9ba0/json-tck/src/main/java/net/java/html/js/tests/GCBodyTest.java
----------------------------------------------------------------------
diff --git a/json-tck/src/main/java/net/java/html/js/tests/GCBodyTest.java b/json-tck/src/main/java/net/java/html/js/tests/GCBodyTest.java
index 46d0775..5baa865 100644
--- a/json-tck/src/main/java/net/java/html/js/tests/GCBodyTest.java
+++ b/json-tck/src/main/java/net/java/html/js/tests/GCBodyTest.java
@@ -67,6 +67,26 @@ public class GCBodyTest {
         s = null;
         assertGC(ref, "Can disappear!");
     }
+
+    @KOTest public void callbackInterfaceShallNotDisappear() throws InterruptedException {
+        Sum sum = new Sum();
+        Object jsSum = Bodies.sumDelayed(sum);
+        Reference<?> ref = new WeakReference<Object>(sum);
+        sum = null;
+        IllegalStateException gcError = null;
+        try {
+            assertNotGC(ref, false, "object s should still stay");
+        } catch (IllegalStateException ex) {
+            gcError = ex;
+        }
+
+        int res = Bodies.sumNow(jsSum, 22, 20);
+        assertEquals(res, 42, "Expecting 42");
+        assertGC(ref, "Can disappear!");
+        if (gcError != null) {
+            throw gcError;
+        }
+    }
     
     private Object assignInst() {
         Object obj = Bodies.instance(0);