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 2020/12/16 15:30:18 UTC
[netbeans-html4j] branch master updated: Real life JSON downloading
TCK test
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 <ja...@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.bluth@gmail.com\"\n" +
+" }, {\n" +
+" \"id\": 2,\n" +
+" \"email\": \"janet.weaver@gmail.com\"\n" +
+" }, {\n" +
+" \"id\": 3,\n" +
+" \"email\": \"emma.wong@gmail.com\"\n" +
+" }, {\n" +
+" \"email\": \"eve.holt@gmail.com\"\n" +
+" }, {\n" +
+" \"email\": \"charles.morris@rgmail.com\"\n" +
+" }, {\n" +
+" \"id\": 6,\n" +
+" \"email\": \"tracey.ramos@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-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