Simple conversion to String
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Mon, 22 Apr 2013 22:38:59 +0200
changeset 214a593b351de2
parent 20 21b5d931f4c1
child 22 990ceaedfbe0
Simple conversion to String
json/src/main/java/org/apidesign/html/json/impl/JSON.java
json/src/test/java/net/java/html/json/MapModelTest.java
json/src/test/java/net/java/html/json/PersonImpl.java
     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 {