# HG changeset patch # User Jaroslav Tulach # Date 1361213526 -3600 # Node ID 605791f059b09c8e72dfc0a47ee687184ea27edf # Parent ecd7294f1e17d40b81e942375711c5fcb1e689a9 Automatic boxing of primitive types for arrays diff -r ecd7294f1e17 -r 605791f059b0 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Mon Feb 18 19:42:02 2013 +0100 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Mon Feb 18 19:52:06 2013 +0100 @@ -458,10 +458,35 @@ } private static String typeName(Property p) { + String ret; try { - return p.type().getName(); + ret = p.type().getName(); } catch (MirroredTypeException ex) { - return ex.getTypeMirror().toString(); + ret = ex.getTypeMirror().toString(); } + if (p.array()) { + if (ret.equals("byte")) { + return Byte.class.getName(); + } + if (ret.equals("short")) { + return Short.class.getName(); + } + if (ret.equals("char")) { + return Character.class.getName(); + } + if (ret.equals("int")) { + return Integer.class.getName(); + } + if (ret.equals("long")) { + return Long.class.getName(); + } + if (ret.equals("float")) { + return Float.class.getName(); + } + if (ret.equals("double")) { + return Double.class.getName(); + } + } + return ret; } } diff -r ecd7294f1e17 -r 605791f059b0 javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java Mon Feb 18 19:42:02 2013 +0100 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java Mon Feb 18 19:52:06 2013 +0100 @@ -35,7 +35,8 @@ @Page(xhtml = "Empty.html", className = "Model", properties = { @Property(name = "value", type = int.class), @Property(name = "unrelated", type = long.class), - @Property(name = "names", type = String.class, array = true) + @Property(name = "names", type = String.class, array = true), + @Property(name = "values", type = int.class, array = true) }) public class ModelTest { private Model model; @@ -91,6 +92,17 @@ assertTrue(my.mutated.contains("names"), "Change in names property: " + my.mutated); } + @Test public void autoboxedArray() { + MockKnockout my = new MockKnockout(); + MockKnockout.next = my; + + model.applyBindings(); + + model.getValues().add(10); + + assertEquals(model.getValues().get(0), Integer.valueOf(10), "Really ten"); + } + @Test public void derivedPropertiesAreNotified() { MockKnockout my = new MockKnockout(); MockKnockout.next = my;