1.1 --- a/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java Mon Aug 31 22:55:01 2015 +0200
1.2 +++ b/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java Sat Sep 05 22:35:56 2015 +0200
1.3 @@ -590,7 +590,7 @@
1.4 w.write(" Object o = prop_" + p.name() + ";\n");
1.5 if (isModel[0]) {
1.6 w.write(" prop_" + p.name() + " = v;\n");
1.7 - w.write(" if (TYPE.isSame(prop_" + p.name() + ", v)) return;\n");
1.8 + w.write(" if (TYPE.isSame(o , v)) return;\n");
1.9 } else {
1.10 w.write(" if (TYPE.isSame(prop_" + p.name() + ", v)) return;\n");
1.11 w.write(" prop_" + p.name() + " = v;\n");
2.1 --- a/json/src/test/java/org/netbeans/html/json/impl/DeepChangeTest.java Mon Aug 31 22:55:01 2015 +0200
2.2 +++ b/json/src/test/java/org/netbeans/html/json/impl/DeepChangeTest.java Sat Sep 05 22:35:56 2015 +0200
2.3 @@ -178,6 +178,31 @@
2.4 assertEquals(o.changes, 1, "One change so far");
2.5 }
2.6
2.7 + @Test public void changingModelClass() throws Exception {
2.8 + final MyY myY = new MyY("Ahoj", 0);
2.9 + MyX p = Models.bind(
2.10 + new MyX(myY, new MyY("Hi", 333), new MyY("Hello", 999)),
2.11 + c)
2.12 + .applyBindings();
2.13 + MyY realY = p.getOne();
2.14 +
2.15 + Map m = (Map)Models.toRaw(p);
2.16 + Object v = m.get("one");
2.17 + assertNotNull(v, "Value should be in the map");
2.18 + assertEquals(v.getClass(), One.class, "It is instance of One");
2.19 + One o = (One)v;
2.20 + assertEquals(o.changes, 0, "No changes so far");
2.21 + assertFalse(o.pb.isReadOnly(), "Normal property");
2.22 + assertEquals(o.get(), myY);
2.23 + assertSame(o.get(), realY);
2.24 +
2.25 + final MyY newY = new MyY("Hi", 1);
2.26 + p.setOne(newY);
2.27 +
2.28 + assertSame(p.getOne(), newY);
2.29 + assertEquals(o.changes, 1, "One change");
2.30 + }
2.31 +
2.32 @Test public void addingIntoArray() throws Exception {
2.33 MyX p = Models.bind(
2.34 new MyX(new MyY("Ahoj", 0), new MyY("Hi", 333), new MyY("Hello", 999)
2.35 @@ -417,10 +442,10 @@
2.36 public void rebindReplacesTheInstance() throws Exception {
2.37 BrwsrCtx ctx = Contexts.newBuilder().build();
2.38 MyX x = new MyX();
2.39 -
2.40 +
2.41 MyY y = Models.bind(new MyY(), ctx);
2.42 x.setOne(y);
2.43 -
2.44 +
2.45 assertSame(x.getOne(), y);
2.46 }
2.47