1.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java Fri Apr 05 15:17:54 2013 +0200
1.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java Fri Apr 05 17:55:23 2013 +0200
1.3 @@ -17,7 +17,9 @@
1.4 */
1.5 package org.apidesign.bck2brwsr.htmlpage;
1.6
1.7 +import java.util.Arrays;
1.8 import java.util.Iterator;
1.9 +import java.util.List;
1.10 import org.apidesign.bck2brwsr.htmlpage.api.OnReceive;
1.11 import org.apidesign.bck2brwsr.htmlpage.api.Page;
1.12 import org.apidesign.bck2brwsr.htmlpage.api.Property;
1.13 @@ -36,7 +38,8 @@
1.14 * @author Jaroslav Tulach <jtulach@netbeans.org>
1.15 */
1.16 @Page(xhtml = "Empty.html", className = "JSONik", properties = {
1.17 - @Property(name = "fetched", type = PersonImpl.class)
1.18 + @Property(name = "fetched", type = PersonImpl.class),
1.19 + @Property(name = "fetchedCount", type = int.class)
1.20 })
1.21 public class JSONTest {
1.22
1.23 @@ -125,6 +128,13 @@
1.24 model.setFetched(p);
1.25 throw new IllegalStateException("Got him: " + p);
1.26 }
1.27 +
1.28 + @OnReceive(url="/{url}")
1.29 + static void fetchArray(Person[] p, JSONik model) {
1.30 + model.setFetchedCount(p.length);
1.31 + model.setFetched(p[0]);
1.32 + throw new IllegalStateException("Got in array him: " + Arrays.asList(p));
1.33 + }
1.34
1.35 @Http(@Http.Resource(
1.36 content = "{'firstName': 'Sitar', 'sex': 'MALE'}",
1.37 @@ -149,11 +159,33 @@
1.38 }
1.39
1.40 @Http(@Http.Resource(
1.41 + content = "{'firstName': 'Sitar', 'sex': 'MALE'}",
1.42 + path="/person.json",
1.43 + mimeType = "application/json"
1.44 + ))
1.45 + @BrwsrTest public void loadAndParseJSONSentToArray() {
1.46 + JSONik js = new JSONik();
1.47 + js.applyBindings();
1.48 +
1.49 + js.fetchArray("person.json");
1.50 +
1.51 + Person p = null;
1.52 + for (int i = 0; i < 10000000; i++) {
1.53 + if (js.getFetched() != null) {
1.54 + p = js.getFetched();
1.55 + }
1.56 + }
1.57 + assert p != null : "We should get our person back: " + p;
1.58 + assert "Sitar".equals(p.getFirstName()) : "Expecting Sitar: " + p.getFirstName();
1.59 + assert Sex.MALE.equals(p.getSex()) : "Expecting MALE: " + p.getSex();
1.60 + }
1.61 +
1.62 + @Http(@Http.Resource(
1.63 content = "[{'firstName': 'Gitar', 'sex': 'FEMALE'}]",
1.64 path="/person.json",
1.65 mimeType = "application/json"
1.66 ))
1.67 - @BrwsrTest public void loadAndParseJSONArray() {
1.68 + @BrwsrTest public void loadAndParseJSONArraySingle() {
1.69 JSONik js = new JSONik();
1.70 js.applyBindings();
1.71
1.72 @@ -170,6 +202,33 @@
1.73 assert Sex.MALE.equals(p.getSex()) : "Expecting MALE: " + p.getSex();
1.74 }
1.75
1.76 +
1.77 + @Http(@Http.Resource(
1.78 + content = "[{'firstName': 'Gitar', 'sex': 'FEMALE'}"
1.79 + + "{'firstName': 'Peter', 'sex': 'MALE'}"
1.80 + + "]",
1.81 + path="/person.json",
1.82 + mimeType = "application/json"
1.83 + ))
1.84 + @BrwsrTest public void loadAndParseJSONArray() {
1.85 + JSONik js = new JSONik();
1.86 + js.applyBindings();
1.87 +
1.88 + js.fetchArray("person.json");
1.89 +
1.90 + Person p = null;
1.91 + for (int i = 0; i < 10000000; i++) {
1.92 + if (js.getFetched() != null) {
1.93 + p = js.getFetched();
1.94 + }
1.95 + }
1.96 +
1.97 + assert js.getFetchedCount() == 2 : "We got two values: " + js.getFetchedCount();
1.98 + assert p != null : "We should get our person back: " + p;
1.99 + assert "Sitar".equals(p.getFirstName()) : "Expecting Sitar: " + p.getFirstName();
1.100 + assert Sex.MALE.equals(p.getSex()) : "Expecting MALE: " + p.getSex();
1.101 + }
1.102 +
1.103 @Factory public static Object[] create() {
1.104 return VMTest.create(JSONTest.class);
1.105 }