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 2019/05/04 11:05:10 UTC

[netbeans-html4j] 03/07: No presenter means empty MapObjs.toArray

This is an automated email from the ASF dual-hosted git repository.

jtulach pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans-html4j.git

commit dd0f930218fe9820c40b583d12f5e2a6028999f9
Author: Jaroslav Tulach <ja...@apidesign.org>
AuthorDate: Sat May 4 09:01:21 2019 +0200

    No presenter means empty MapObjs.toArray
---
 .../main/java/org/netbeans/html/ko4j/Knockout.java    |  2 --
 .../src/main/java/org/netbeans/html/ko4j/MapObjs.java | 19 ++++++++++++-------
 .../test/java/org/netbeans/html/ko4j/MapObjsTest.java |  7 +++++++
 3 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java b/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java
index e95ff87..f2f7635 100644
--- a/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java
+++ b/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java
@@ -21,8 +21,6 @@ package org.netbeans.html.ko4j;
 import java.io.Closeable;
 import java.io.IOException;
 import java.lang.ref.Reference;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.concurrent.Executor;
 import net.java.html.js.JavaScriptBody;
 import net.java.html.js.JavaScriptResource;
diff --git a/ko4j/src/main/java/org/netbeans/html/ko4j/MapObjs.java b/ko4j/src/main/java/org/netbeans/html/ko4j/MapObjs.java
index bf9d998..96114ec 100644
--- a/ko4j/src/main/java/org/netbeans/html/ko4j/MapObjs.java
+++ b/ko4j/src/main/java/org/netbeans/html/ko4j/MapObjs.java
@@ -33,8 +33,8 @@ final class MapObjs {
         reset();
     }
 
-    static void reset() {
-        setOnlyPresenter(null);
+    synchronized static void reset() {
+        onlyPresenter = null;
         usePresenter = true;
     }
 
@@ -74,7 +74,7 @@ final class MapObjs {
         return key == getOnlyPresenter() ? now : null;
     }
 
-    static Object[] remove(Object now, Fn.Presenter key) {
+    synchronized static Object[] remove(Object now, Fn.Presenter key) {
         if (now instanceof MapObjs) {
             return ((MapObjs)now).remove(key);
         }
@@ -85,7 +85,11 @@ final class MapObjs {
         if (now instanceof MapObjs) {
             return ((MapObjs) now).all.toArray();
         }
-        return new Object[] { getOnlyPresenter(), now };
+        final Fn.Presenter p = getOnlyPresenter();
+        if (p == null) {
+            return new Object[0];
+        }
+        return new Object[] { p, now };
     }
 
     private Object put(Fn.Presenter key, Object js) {
@@ -127,10 +131,11 @@ final class MapObjs {
     }
 
     private static Fn.Presenter getOnlyPresenter() {
-        return onlyPresenter.get();
+        final Fn.Presenter p = onlyPresenter == null ? null : onlyPresenter.get();
+        return p;
     }
 
-    private static void setOnlyPresenter(Fn.Presenter aOnlyPresenter) {
-        onlyPresenter = new WeakReference<Fn.Presenter>(aOnlyPresenter);
+    private static void setOnlyPresenter(Fn.Presenter p) {
+        onlyPresenter = new WeakReference<Fn.Presenter>(p);
     }
 }
diff --git a/ko4j/src/test/java/org/netbeans/html/ko4j/MapObjsTest.java b/ko4j/src/test/java/org/netbeans/html/ko4j/MapObjsTest.java
index 43c5c18..1f397d8 100644
--- a/ko4j/src/test/java/org/netbeans/html/ko4j/MapObjsTest.java
+++ b/ko4j/src/test/java/org/netbeans/html/ko4j/MapObjsTest.java
@@ -20,6 +20,7 @@ package org.netbeans.html.ko4j;
 
 import java.io.Reader;
 import java.net.URL;
+import java.util.Arrays;
 import org.netbeans.html.boot.spi.Fn;
 import static org.testng.Assert.*;
 import org.testng.annotations.BeforeMethod;
@@ -41,6 +42,12 @@ public class MapObjsTest {
     }
 
     @Test
+    public void testToArrayNoPresenterYet() {
+        Object[] arr = MapObjs.toArray(null);
+        assertEquals(arr.length, 0, "Empty array: " + Arrays.toString(arr));
+    }
+
+    @Test
     public void testValuesForP1P2() {
         Value v1 = new Value();
         Value v2 = new Value();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists