Automatic boxing of primitive types for arrays model
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Mon, 18 Feb 2013 19:52:06 +0100
branchmodel
changeset 764605791f059b0
parent 763 ecd7294f1e17
child 765 1bc37d5f30d8
Automatic boxing of primitive types for arrays
javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java
javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java
     1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java	Mon Feb 18 19:42:02 2013 +0100
     1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java	Mon Feb 18 19:52:06 2013 +0100
     1.3 @@ -458,10 +458,35 @@
     1.4      }
     1.5  
     1.6      private static String typeName(Property p) {
     1.7 +        String ret;
     1.8          try {
     1.9 -            return p.type().getName();
    1.10 +            ret = p.type().getName();
    1.11          } catch (MirroredTypeException ex) {
    1.12 -            return ex.getTypeMirror().toString();
    1.13 +            ret = ex.getTypeMirror().toString();
    1.14          }
    1.15 +        if (p.array()) {
    1.16 +            if (ret.equals("byte")) {
    1.17 +                return Byte.class.getName();
    1.18 +            }
    1.19 +            if (ret.equals("short")) {
    1.20 +                return Short.class.getName();
    1.21 +            }
    1.22 +            if (ret.equals("char")) {
    1.23 +                return Character.class.getName();
    1.24 +            }
    1.25 +            if (ret.equals("int")) {
    1.26 +                return Integer.class.getName();
    1.27 +            }
    1.28 +            if (ret.equals("long")) {
    1.29 +                return Long.class.getName();
    1.30 +            }
    1.31 +            if (ret.equals("float")) {
    1.32 +                return Float.class.getName();
    1.33 +            }
    1.34 +            if (ret.equals("double")) {
    1.35 +                return Double.class.getName();
    1.36 +            }
    1.37 +        }
    1.38 +        return ret;
    1.39      }
    1.40  }
     2.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java	Mon Feb 18 19:42:02 2013 +0100
     2.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java	Mon Feb 18 19:52:06 2013 +0100
     2.3 @@ -35,7 +35,8 @@
     2.4  @Page(xhtml = "Empty.html", className = "Model", properties = {
     2.5      @Property(name = "value", type = int.class),
     2.6      @Property(name = "unrelated", type = long.class),
     2.7 -    @Property(name = "names", type = String.class, array = true)
     2.8 +    @Property(name = "names", type = String.class, array = true),
     2.9 +    @Property(name = "values", type = int.class, array = true)
    2.10  })
    2.11  public class ModelTest {
    2.12      private Model model;
    2.13 @@ -91,6 +92,17 @@
    2.14          assertTrue(my.mutated.contains("names"), "Change in names property: " + my.mutated);
    2.15      }
    2.16      
    2.17 +    @Test public void autoboxedArray() {
    2.18 +        MockKnockout my = new MockKnockout();
    2.19 +        MockKnockout.next = my;
    2.20 +        
    2.21 +        model.applyBindings();
    2.22 +        
    2.23 +        model.getValues().add(10);
    2.24 +        
    2.25 +        assertEquals(model.getValues().get(0), Integer.valueOf(10), "Really ten");
    2.26 +    }
    2.27 +    
    2.28      @Test public void derivedPropertiesAreNotified() {
    2.29          MockKnockout my = new MockKnockout();
    2.30          MockKnockout.next = my;