Better conversion for JSONList
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Mon, 22 Apr 2013 16:14:52 +0200
changeset 16fc6bdb2a2b98
parent 15 2c85a5c0fd0d
child 17 b3a45f840583
Better conversion for JSONList
json/src/main/java/org/apidesign/html/json/impl/JSONList.java
json/src/test/java/org/apidesign/html/json/impl/JSONListTest.java
     1.1 --- a/json/src/main/java/org/apidesign/html/json/impl/JSONList.java	Mon Apr 22 16:07:00 2013 +0200
     1.2 +++ b/json/src/main/java/org/apidesign/html/json/impl/JSONList.java	Mon Apr 22 16:14:52 2013 +0200
     1.3 @@ -141,10 +141,6 @@
     1.4          return sb.toString();
     1.5      }
     1.6  
     1.7 -    public Object koData() {
     1.8 -        return toArray();
     1.9 -    }
    1.10 -
    1.11      private void notifyChange() {
    1.12          Bindings m = model;
    1.13          if (m != null) {
    1.14 @@ -165,4 +161,21 @@
    1.15          ko.model = null;
    1.16          return ko;
    1.17      }
    1.18 +
    1.19 +    @Override
    1.20 +    public boolean equals(Object o) {
    1.21 +        if (o instanceof WrapperObject) {
    1.22 +            ((WrapperObject)o).setRealObject(koData());
    1.23 +        }
    1.24 +        return super.equals(o);
    1.25 +    }
    1.26 +
    1.27 +    private Object[] koData() {
    1.28 +        Object[] arr = toArray();
    1.29 +        for (int i = 0; i < arr.length; i++) {
    1.30 +            arr[i] = WrapperObject.find(arr[i]);
    1.31 +        }
    1.32 +        return arr;
    1.33 +    }
    1.34 +    
    1.35  }
     2.1 --- a/json/src/test/java/org/apidesign/html/json/impl/JSONListTest.java	Mon Apr 22 16:07:00 2013 +0200
     2.2 +++ b/json/src/test/java/org/apidesign/html/json/impl/JSONListTest.java	Mon Apr 22 16:14:52 2013 +0200
     2.3 @@ -60,11 +60,14 @@
     2.4          p.setLastName("2");
     2.5          p.setSex(Sex.MALE);
     2.6          
     2.7 -        People arr = new People(c);
     2.8 -        arr.getInfo().add(p);
     2.9 +        People people = new People(c);
    2.10 +        people.getInfo().add(p);
    2.11  
    2.12 -        Object real = WrapperObject.find(p);
    2.13 -        assertEquals(this, real, "I am the right model");
    2.14 +        Object real = WrapperObject.find(people.getInfo());
    2.15 +        assertTrue(real instanceof Object[], "It is an array: " + real);
    2.16 +        Object[] arr = (Object[])real;
    2.17 +        assertEquals(arr.length, 1, "Size is one");
    2.18 +        assertEquals(this, arr[0], "I am the right model");
    2.19      }
    2.20  
    2.21      @Override