1.1 --- a/json/src/main/java/org/apidesign/html/json/impl/JSON.java Mon Apr 22 22:30:30 2013 +0200
1.2 +++ b/json/src/main/java/org/apidesign/html/json/impl/JSON.java Mon Apr 22 22:38:59 2013 +0200
1.3 @@ -31,6 +31,15 @@
1.4
1.5 public static void extract(Object value, String[] props, Object[] values) {
1.6 }
1.7 +
1.8 + private static Object getProperty(Object obj, String prop) {
1.9 + if (prop == null) return obj;
1.10 +
1.11 + String[] arr = { prop };
1.12 + Object[] val = { null };
1.13 + extract(obj, arr, val);
1.14 + return val[0];
1.15 + }
1.16
1.17 public static Object toJSON(Object value) {
1.18 if (value == null) {
1.19 @@ -52,7 +61,8 @@
1.20 }
1.21
1.22 public static String toString(Object obj, String prop) {
1.23 - return null;
1.24 + obj = getProperty(obj, prop);
1.25 + return obj instanceof String ? (String)obj : null;
1.26 }
1.27
1.28 public static String createJSONP(Object[] res, Runnable callback) {
2.1 --- a/json/src/test/java/net/java/html/json/MapModelTest.java Mon Apr 22 22:30:30 2013 +0200
2.2 +++ b/json/src/test/java/net/java/html/json/MapModelTest.java Mon Apr 22 22:38:59 2013 +0200
2.3 @@ -89,7 +89,24 @@
2.4 One one = (One)o;
2.5 assertNotNull(one.fb, "Function binding specified");
2.6
2.7 - one.fb.call("Hello", new Object());
2.8 + one.fb.call(null, null);
2.9 +
2.10 + assertEquals(p.getSex(), Sex.FEMALE, "Changed");
2.11 + }
2.12 +
2.13 + @Test public void setSex() {
2.14 + Person p = new Person(c);
2.15 + p.setFirstName("Trans");
2.16 +
2.17 + Map m = (Map)WrapperObject.find(p);
2.18 + Object o = m.get("changeSex");
2.19 + assertNotNull(o, "Function registered in the model");
2.20 + assertEquals(o.getClass(), One.class);
2.21 +
2.22 + One one = (One)o;
2.23 + assertNotNull(one.fb, "Function binding specified");
2.24 +
2.25 + one.fb.call("FEMALE", new Object());
2.26
2.27 assertEquals(p.getSex(), Sex.FEMALE, "Changed");
2.28 }
3.1 --- a/json/src/test/java/net/java/html/json/PersonImpl.java Mon Apr 22 22:30:30 2013 +0200
3.2 +++ b/json/src/test/java/net/java/html/json/PersonImpl.java Mon Apr 22 22:38:59 2013 +0200
3.3 @@ -41,7 +41,11 @@
3.4 }
3.5
3.6 @Function
3.7 - static void changeSex(Person p) {
3.8 + static void changeSex(Person p, String data) {
3.9 + if (data != null) {
3.10 + p.setSex(Sex.valueOf(data));
3.11 + return;
3.12 + }
3.13 if (p.getSex() == Sex.MALE) {
3.14 p.setSex(Sex.FEMALE);
3.15 } else {