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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected] For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
