Can fetch JSON numbers in an array model
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 07 Apr 2013 21:41:57 +0200
branchmodel
changeset 9441e2b0dcc8326
parent 943 28aae214c202
child 945 c8f760b2eb5a
Can fetch JSON numbers in an array
javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java
javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java
     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          + "]",