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
The following commit(s) were added to refs/heads/master by this push: new 1f8b842 Real life JSON downloading TCK test 1f8b842 is described below commit 1f8b842647560ca8725119415c03101803500657 Author: Jaroslav Tulach <jaroslav.tul...@apidesign.org> AuthorDate: Wed Dec 16 16:29:53 2020 +0100 Real life JSON downloading TCK test --- .../net/java/html/boot/script/DynamicHTTP.java | 2 +- .../html/presenters/browser/DynamicHTTP.java | 2 +- .../java/net/java/html/json/tests/MinesTest.java | 16 +-- .../java/html/json/tests/ObtainAndComputeTest.java | 136 +++++++++++++++++++++ .../main/java/net/java/html/json/tests/Utils.java | 13 ++ .../org/netbeans/html/json/tck/KnockoutTCK.java | 2 + .../netbeans/html/json/impl/ModelProcessor.java | 2 +- .../netbeans/html/ko/felix/test/DynamicHTTP.java | 2 +- .../netbeans/html/ko/osgi/test/DynamicHTTP.java | 2 +- .../netbeans/html/wstyrus/TyrusDynamicHTTP.java | 2 +- .../java/org/netbeans/html/ko4j/DynamicHTTP.java | 2 +- .../html/presenters/webkit/DynamicHTTP.java | 2 +- .../org/netbeans/html/xhr4j/JsonDynamicHTTP.java | 2 +- 13 files changed, 161 insertions(+), 24 deletions(-) diff --git a/boot-script/src/test/java/net/java/html/boot/script/DynamicHTTP.java b/boot-script/src/test/java/net/java/html/boot/script/DynamicHTTP.java index eb0f401..5e39cad 100644 --- a/boot-script/src/test/java/net/java/html/boot/script/DynamicHTTP.java +++ b/boot-script/src/test/java/net/java/html/boot/script/DynamicHTTP.java @@ -98,7 +98,7 @@ final class DynamicHTTP extends HttpHandler { params.add(p); } final String cnt = request.getParameter("content"); - String mangle = cnt.replace("%20", " ").replace("%0A", "\n"); + String mangle = cnt.replace("%20", " ").replace("%0A", "\n").replace("\\\"", "\""); ByteArrayInputStream is = new ByteArrayInputStream(mangle.getBytes("UTF-8")); URI url; final Resource res = new Resource(is, mimeType, "/dynamic/res" + ++resourcesCount, params.toArray(new String[params.size()])); diff --git a/browser/src/test/java/org/netbeans/html/presenters/browser/DynamicHTTP.java b/browser/src/test/java/org/netbeans/html/presenters/browser/DynamicHTTP.java index 9ad1f18..cf7cb41 100644 --- a/browser/src/test/java/org/netbeans/html/presenters/browser/DynamicHTTP.java +++ b/browser/src/test/java/org/netbeans/html/presenters/browser/DynamicHTTP.java @@ -60,7 +60,7 @@ final class DynamicHTTP extends Handler { params.add(p); } final String cnt = s.getParameter(request, "content"); - String mangle = cnt.replace("%20", " ").replace("%0A", "\n"); + String mangle = cnt.replace("%20", " ").replace("%0A", "\n").replace("\\\"", "\""); ByteArrayInputStream is = new ByteArrayInputStream(mangle.getBytes("UTF-8")); URI url; final Resource res = new Resource(is, mimeType, "/dynamic/res" + ++resourcesCount, params.toArray(new String[params.size()])); diff --git a/json-tck/src/main/java/net/java/html/json/tests/MinesTest.java b/json-tck/src/main/java/net/java/html/json/tests/MinesTest.java index 55c5ce3..e436bd8 100644 --- a/json-tck/src/main/java/net/java/html/json/tests/MinesTest.java +++ b/json-tck/src/main/java/net/java/html/json/tests/MinesTest.java @@ -61,7 +61,7 @@ public final class MinesTest { m.applyBindings(); int cnt = Utils.countChildren(MinesTest.class, "table"); assertEquals(cnt, 0, "Table is empty: " + cnt); - scheduleClick("init", 100); + Utils.scheduleClick(MinesTest.class, "init", 100); } @@ -85,20 +85,6 @@ public final class MinesTest { assertEquals(cnt, 3, "There are three mines around. Was: " + cnt); } - private static void scheduleClick(String id, int delay) throws Exception { - String s = "var id = arguments[0]; var delay = arguments[1];" - + "var e = window.document.getElementById(id);\n " - + "var f = function() {;\n " - + " var ev = window.document.createEvent('MouseEvents');\n " - + " ev.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n " - + " e.dispatchEvent(ev);\n" - + "};\n" - + "window.setTimeout(f, delay);"; - Utils.executeScript( - MinesTest.class, - s, id, delay); - } - enum GameState { IN_PROGRESS, WON, LOST; } diff --git a/json-tck/src/main/java/net/java/html/json/tests/ObtainAndComputeTest.java b/json-tck/src/main/java/net/java/html/json/tests/ObtainAndComputeTest.java new file mode 100644 index 0000000..a1b99c4 --- /dev/null +++ b/json-tck/src/main/java/net/java/html/json/tests/ObtainAndComputeTest.java @@ -0,0 +1,136 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package net.java.html.json.tests; + +import java.util.ArrayList; +import java.util.List; +import net.java.html.BrwsrCtx; +import net.java.html.json.ComputedProperty; +import net.java.html.json.Function; +import net.java.html.json.Model; +import net.java.html.json.Models; +import net.java.html.json.OnReceive; +import net.java.html.json.Property; +import static net.java.html.json.tests.Utils.assertEquals; +import org.netbeans.html.json.tck.KOTest; + +public class ObtainAndComputeTest { + ObtainData m; + + @KOTest + public void obtainAndComputeTest() throws Throwable { + if (m == null) { + BrwsrCtx ctx = Utils.newContext(ObtainAndComputeTest.class); + Utils.exposeHTML(ObtainAndComputeTest.class, + "<input type=\"text\" data-bind=\"textInput: filter\">\n" + + "<ul id='list' data-bind=\"foreach: filteredUsers\">\n" + + " <li><div data-bind=\"text: email\"></div></li>\n" + + "</ul>\n" + + "<button id='button' data-bind=\"click: nextUsers\">more...</button>" + ); + String d = "{\n" + +" \"data\": [{\n" + +" \"id\": 1,\n" + +" \"email\": \"george.bl...@gmail.com\"\n" + +" }, {\n" + +" \"id\": 2,\n" + +" \"email\": \"janet.wea...@gmail.com\"\n" + +" }, {\n" + +" \"id\": 3,\n" + +" \"email\": \"emma.w...@gmail.com\"\n" + +" }, {\n" + +" \"email\": \"eve.h...@gmail.com\"\n" + +" }, {\n" + +" \"email\": \"charles.mor...@rgmail.com\"\n" + +" }, {\n" + +" \"id\": 6,\n" + +" \"email\": \"tracey.ra...@gmail.com\"\n" + +" }]\n" + +"}\n" + +""; + String url = Utils.prepareURL(ObtainAndComputeTest.class, d, "application/json"); + + m = Models.bind(new ObtainData("holt", url, false), ctx); + m.applyBindings(); + int cnt = Utils.countChildren(ObtainAndComputeTest.class, "list"); + assertEquals(cnt, 0, "No filtered users so far: " + cnt); + Utils.scheduleClick(ObtainAndComputeTest.class, "button", 100); + } + + if (!m.isGotReply()) { + throw new InterruptedException(); + } + + try { + assertEquals(6, m.getUsers().size(), "Expecting some users: " + m); + assertEquals(1, m.getFilteredUsers().size(), "Only one holt matching filter: " + m); + int cnt = Utils.countChildren(ObtainAndComputeTest.class, "list"); + assertEquals(cnt, 1, "Also one user: " + cnt); + } finally { + Utils.exposeHTML(ObtainAndComputeTest.class, ""); + } + } + + // + // application logic + // + + @Model(className = "ObtainData", targetId = "", instance = true, properties = { + @Property(name = "users", type = ObtainUser.class, array = true), + @Property(name = "filter", type = String.class), + @Property(name = "url", type = String.class), + @Property(name = "gotReply", type = boolean.class) + }) + static final class ObtainModel { + @ComputedProperty + public static List<ObtainUser> filteredUsers(List<ObtainUser> users, String filter) { + List<ObtainUser> res = new ArrayList<>(); + for (ObtainUser user : users) { + if (user.getEmail().contains(filter)) { + res.add(user); + } + } + return res; + } + + @Function + public static void nextUsers(ObtainData model) { + model.loadUsers(model.getUrl()); + } + + @OnReceive(method = "GET", url = "{url}") + public static void loadUsers(ObtainData model, ObtainMessage reply) { + model.getUsers().addAll(reply.getData()); + model.setGotReply(true); + } + + @Model(className = "ObtainMessage", properties = { + @Property(name = "data", type = ObtainUser.class, array = true)}) + public static class MessageVMD { + } + + @Model(className = "ObtainUser", properties = { + @Property(name = "email", type = java.lang.String.class),} + ) + public static class UserVMD { + } + + } + +} diff --git a/json-tck/src/main/java/net/java/html/json/tests/Utils.java b/json-tck/src/main/java/net/java/html/json/tests/Utils.java index faa346c..94a2e3a 100644 --- a/json-tck/src/main/java/net/java/html/json/tests/Utils.java +++ b/json-tck/src/main/java/net/java/html/json/tests/Utils.java @@ -160,6 +160,19 @@ public final class Utils { ); } + static void scheduleClick(Class<?> clazz, String id, int delay) throws Exception { + String s = "var id = arguments[0]; var delay = arguments[1];" + + "var e = window.document.getElementById(id);\n " + + "var f = function() {;\n " + + " var ev = window.document.createEvent('MouseEvents');\n " + + " ev.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n " + + " e.dispatchEvent(ev);\n" + + "};\n" + + "window.setTimeout(f, delay);"; + Utils.executeScript(clazz, s, id, delay); + } + + static String prepareURL( Class<?> clazz, String content, String mimeType, String... parameters) { for (KnockoutTCK tck : tcks(clazz)) { diff --git a/json-tck/src/main/java/org/netbeans/html/json/tck/KnockoutTCK.java b/json-tck/src/main/java/org/netbeans/html/json/tck/KnockoutTCK.java index 59b1774..c6430c5 100644 --- a/json-tck/src/main/java/org/netbeans/html/json/tck/KnockoutTCK.java +++ b/json-tck/src/main/java/org/netbeans/html/json/tck/KnockoutTCK.java @@ -27,6 +27,7 @@ import net.java.html.json.tests.GCKnockoutTest; import net.java.html.json.tests.JSONTest; import net.java.html.json.tests.KnockoutTest; import net.java.html.json.tests.MinesTest; +import net.java.html.json.tests.ObtainAndComputeTest; import net.java.html.json.tests.OperationsTest; import net.java.html.json.tests.Utils; import net.java.html.json.tests.WebSocketTest; @@ -140,6 +141,7 @@ public abstract class KnockoutTCK { JSONTest.class, KnockoutTest.class, MinesTest.class, + ObtainAndComputeTest.class, OperationsTest.class, WebSocketTest.class, GCKnockoutTest.class diff --git a/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java b/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java index 7e342d3..99d13a7 100644 --- a/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java +++ b/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java @@ -1472,7 +1472,7 @@ public final class ModelProcessor extends AbstractProcessor { " TYPE.copyJSON(model.proto.getContext(), ev, " + modelClass + ".class, arr);\n" ); { - body.append(" ").append(clazz.getSimpleName()).append(".").append(n).append("("); + body.append(" ").append(inPckName(clazz, false)).append(".").append(n).append("("); String sep = ""; for (String arg : args) { body.append(sep); diff --git a/ko-felix-test/src/test/java/org/netbeans/html/ko/felix/test/DynamicHTTP.java b/ko-felix-test/src/test/java/org/netbeans/html/ko/felix/test/DynamicHTTP.java index 932a69e..4a3a019 100644 --- a/ko-felix-test/src/test/java/org/netbeans/html/ko/felix/test/DynamicHTTP.java +++ b/ko-felix-test/src/test/java/org/netbeans/html/ko/felix/test/DynamicHTTP.java @@ -98,7 +98,7 @@ final class DynamicHTTP extends HttpHandler { params.add(p); } final String cnt = request.getParameter("content"); - String mangle = cnt.replace("%20", " ").replace("%0A", "\n"); + String mangle = cnt.replace("%20", " ").replace("%0A", "\n").replace("\\\"", "\""); ByteArrayInputStream is = new ByteArrayInputStream(mangle.getBytes("UTF-8")); URI url; final Resource res = new Resource(is, mimeType, "/dynamic/res" + ++resourcesCount, params.toArray(new String[params.size()])); diff --git a/ko-osgi-test/src/test/java/org/netbeans/html/ko/osgi/test/DynamicHTTP.java b/ko-osgi-test/src/test/java/org/netbeans/html/ko/osgi/test/DynamicHTTP.java index b8c6d1d..4e56199 100644 --- a/ko-osgi-test/src/test/java/org/netbeans/html/ko/osgi/test/DynamicHTTP.java +++ b/ko-osgi-test/src/test/java/org/netbeans/html/ko/osgi/test/DynamicHTTP.java @@ -98,7 +98,7 @@ final class DynamicHTTP extends HttpHandler { params.add(p); } final String cnt = request.getParameter("content"); - String mangle = cnt.replace("%20", " ").replace("%0A", "\n"); + String mangle = cnt.replace("%20", " ").replace("%0A", "\n").replace("\\\"", "\""); ByteArrayInputStream is = new ByteArrayInputStream(mangle.getBytes("UTF-8")); URI url; final Resource res = new Resource(is, mimeType, "/dynamic/res" + ++resourcesCount, params.toArray(new String[params.size()])); diff --git a/ko-ws-tyrus/src/test/java/org/netbeans/html/wstyrus/TyrusDynamicHTTP.java b/ko-ws-tyrus/src/test/java/org/netbeans/html/wstyrus/TyrusDynamicHTTP.java index 1ed0205..01a096b 100644 --- a/ko-ws-tyrus/src/test/java/org/netbeans/html/wstyrus/TyrusDynamicHTTP.java +++ b/ko-ws-tyrus/src/test/java/org/netbeans/html/wstyrus/TyrusDynamicHTTP.java @@ -97,7 +97,7 @@ final class TyrusDynamicHTTP extends HttpHandler { params.add(p); } final String cnt = request.getParameter("content"); - String mangle = cnt.replace("%20", " ").replace("%0A", "\n"); + String mangle = cnt.replace("%20", " ").replace("%0A", "\n").replace("\\\"", "\""); ByteArrayInputStream is = new ByteArrayInputStream(mangle.getBytes("UTF-8")); URI url; final Resource res = new Resource(is, mimeType, "/dynamic/res" + ++resourcesCount, params.toArray(new String[params.size()])); diff --git a/ko4j/src/test/java/org/netbeans/html/ko4j/DynamicHTTP.java b/ko4j/src/test/java/org/netbeans/html/ko4j/DynamicHTTP.java index b120848..1c9b3fe 100644 --- a/ko4j/src/test/java/org/netbeans/html/ko4j/DynamicHTTP.java +++ b/ko4j/src/test/java/org/netbeans/html/ko4j/DynamicHTTP.java @@ -98,7 +98,7 @@ final class DynamicHTTP extends HttpHandler { params.add(p); } final String cnt = request.getParameter("content"); - String mangle = cnt.replace("%20", " ").replace("%0A", "\n"); + String mangle = cnt.replace("%20", " ").replace("%0A", "\n").replace("\\\"", "\""); ByteArrayInputStream is = new ByteArrayInputStream(mangle.getBytes("UTF-8")); URI url; final Resource res = new Resource(is, mimeType, "/dynamic/res" + ++resourcesCount, params.toArray(new String[params.size()])); diff --git a/webkit/src/test/java/org/netbeans/html/presenters/webkit/DynamicHTTP.java b/webkit/src/test/java/org/netbeans/html/presenters/webkit/DynamicHTTP.java index e69c321..c376c98 100644 --- a/webkit/src/test/java/org/netbeans/html/presenters/webkit/DynamicHTTP.java +++ b/webkit/src/test/java/org/netbeans/html/presenters/webkit/DynamicHTTP.java @@ -99,7 +99,7 @@ final class DynamicHTTP extends HttpHandler { params.add(p); } final String cnt = request.getParameter("content"); - String mangle = cnt.replace("%20", " ").replace("%0A", "\n"); + String mangle = cnt.replace("%20", " ").replace("%0A", "\n").replace("\\\"", "\""); ByteArrayInputStream is = new ByteArrayInputStream(mangle.getBytes("UTF-8")); URI url; final Resource res = new Resource(is, mimeType, "/dynamic/res" + ++resourcesCount, params.toArray(new String[params.size()])); diff --git a/xhr4j/src/test/java/org/netbeans/html/xhr4j/JsonDynamicHTTP.java b/xhr4j/src/test/java/org/netbeans/html/xhr4j/JsonDynamicHTTP.java index 8af3132..a8ce6c4 100644 --- a/xhr4j/src/test/java/org/netbeans/html/xhr4j/JsonDynamicHTTP.java +++ b/xhr4j/src/test/java/org/netbeans/html/xhr4j/JsonDynamicHTTP.java @@ -97,7 +97,7 @@ final class JsonDynamicHTTP extends HttpHandler { params.add(p); } final String cnt = request.getParameter("content"); - String mangle = cnt.replace("%20", " ").replace("%0A", "\n"); + String mangle = cnt.replace("%20", " ").replace("%0A", "\n").replace("\\\"", "\""); ByteArrayInputStream is = new ByteArrayInputStream(mangle.getBytes("UTF-8")); URI url; final Resource res = new Resource(is, mimeType, "/dynamic/res" + ++resourcesCount, params.toArray(new String[params.size()])); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists