1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Sun Apr 07 19:29:55 2013 +0200
1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Sun Apr 07 21:41:57 2013 +0200
1.3 @@ -199,8 +199,13 @@
1.4 w.append(" this.prop_").append(pn).append(".add(new ");
1.5 w.append(type).append("(e));\n");
1.6 } else {
1.7 - w.append(" this.prop_").append(pn).append(".add((");
1.8 - w.append(type).append(")e);\n");
1.9 + if (isPrimitive(type)) {
1.10 + w.append(" this.prop_").append(pn).append(".add(((Number)e).");
1.11 + w.append(type).append("Value());\n");
1.12 + } else {
1.13 + w.append(" this.prop_").append(pn).append(".add((");
1.14 + w.append(type).append(")e);\n");
1.15 + }
1.16 }
1.17 w.append(" }\n");
1.18 w.append("}\n");
1.19 @@ -1057,4 +1062,14 @@
1.20 }
1.21 return null;
1.22 }
1.23 +
1.24 + private boolean isPrimitive(String type) {
1.25 + return
1.26 + "int".equals(type) ||
1.27 + "double".equals(type) ||
1.28 + "long".equals(type) ||
1.29 + "short".equals(type) ||
1.30 + "byte".equals(type) ||
1.31 + "float".equals(type);
1.32 + }
1.33 }
2.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java Sun Apr 07 19:29:55 2013 +0200
2.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java Sun Apr 07 21:41:57 2013 +0200
2.3 @@ -127,14 +127,12 @@
2.4 @OnReceive(url="/{url}")
2.5 static void fetch(Person p, JSONik model) {
2.6 model.setFetched(p);
2.7 - throw new IllegalStateException("Got him: " + p);
2.8 }
2.9
2.10 @OnReceive(url="/{url}")
2.11 static void fetchArray(Person[] p, JSONik model) {
2.12 model.setFetchedCount(p.length);
2.13 model.setFetched(p[0]);
2.14 - throw new IllegalStateException("Got in array him: " + Arrays.asList(p));
2.15 }
2.16
2.17 @OnReceive(url="/{url}")
2.18 @@ -142,6 +140,15 @@
2.19 model.setFetchedCount(p.getInfo().size());
2.20 model.setFetched(p.getInfo().get(0));
2.21 }
2.22 +
2.23 + @OnReceive(url="/{url}")
2.24 + static void fetchPeopleAge(People p, JSONik model) {
2.25 + int sum = 0;
2.26 + for (int a : p.getAge()) {
2.27 + sum += a;
2.28 + }
2.29 + model.setFetchedCount(sum);
2.30 + }
2.31
2.32 @Http(@Http.Resource(
2.33 content = "{'firstName': 'Sitar', 'sex': 'MALE'}",
2.34 @@ -161,7 +168,6 @@
2.35 throw new InterruptedException();
2.36 }
2.37
2.38 - assert p != null : "We should get our person back: " + p;
2.39 assert "Sitar".equals(p.getFirstName()) : "Expecting Sitar: " + p.getFirstName();
2.40 // assert Sex.MALE.equals(p.getSex()) : "Expecting MALE: " + p.getSex();
2.41 }
2.42 @@ -239,6 +245,26 @@
2.43 }
2.44
2.45 @Http(@Http.Resource(
2.46 + content = "{'age':[1, 2, 3]}",
2.47 + path="/people.json",
2.48 + mimeType = "application/json"
2.49 + ))
2.50 + @BrwsrTest public void loadAndParseArrayOfIntegers() throws InterruptedException {
2.51 + if (js == null) {
2.52 + js = new JSONik();
2.53 + js.applyBindings();
2.54 +
2.55 + js.fetchPeopleAge("people.json");
2.56 + }
2.57 +
2.58 + if (0 == js.getFetchedCount()) {
2.59 + throw new InterruptedException();
2.60 + }
2.61 +
2.62 + assert js.getFetchedCount() == 6 : "1 + 2 + 3 is " + js.getFetchedCount();
2.63 + }
2.64 +
2.65 + @Http(@Http.Resource(
2.66 content = "[{'firstName': 'Gitar', 'sex': 'FEMALE'},"
2.67 + "{'firstName': 'Peter', 'sex': 'MALE'}"
2.68 + "]",