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