Need to have applyBindings method to tell the model to associate itself with the page
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Mon, 22 Apr 2013 13:52:00 +0200
changeset 14828eb02a1509
parent 13 7279ce7d559f
child 15 2c85a5c0fd0d
Need to have applyBindings method to tell the model to associate itself with the page
json/src/main/java/net/java/html/json/Context.java
json/src/main/java/org/apidesign/html/json/impl/Bindings.java
json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java
json/src/main/java/org/apidesign/html/json/spi/Technology.java
json/src/test/java/net/java/html/json/MapModelTest.java
json/src/test/java/net/java/html/json/ModelTest.java
     1.1 --- a/json/src/main/java/net/java/html/json/Context.java	Mon Apr 22 13:03:34 2013 +0200
     1.2 +++ b/json/src/main/java/net/java/html/json/Context.java	Mon Apr 22 13:52:00 2013 +0200
     1.3 @@ -76,5 +76,9 @@
     1.4          @Override
     1.5          public void expose(FunctionBinding fb, Object model, Object d) {
     1.6          }
     1.7 +
     1.8 +        @Override
     1.9 +        public void applyBindings(Object data) {
    1.10 +        }
    1.11      }
    1.12  }
     2.1 --- a/json/src/main/java/org/apidesign/html/json/impl/Bindings.java	Mon Apr 22 13:03:34 2013 +0200
     2.2 +++ b/json/src/main/java/org/apidesign/html/json/impl/Bindings.java	Mon Apr 22 13:52:00 2013 +0200
     2.3 @@ -76,4 +76,8 @@
     2.4      public void valueHasMutated(String firstName) {
     2.5          bp.valueHasMutated(data, firstName);
     2.6      }
     2.7 +    
     2.8 +    public void applyBindings() {
     2.9 +        bp.applyBindings(data);
    2.10 +    }
    2.11  }
     3.1 --- a/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java	Mon Apr 22 13:03:34 2013 +0200
     3.2 +++ b/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java	Mon Apr 22 13:52:00 2013 +0200
     3.3 @@ -273,6 +273,10 @@
     3.4                  w.append("  };\n");
     3.5                  writeToString(props, w);
     3.6                  writeClone(className, props, w);
     3.7 +                w.write("public " + className + " applyBindings() {\n");
     3.8 +                w.write("  ko.applyBindings();\n");
     3.9 +                w.write("  return this;\n");
    3.10 +                w.write("}\n");
    3.11                  w.append("  public Object koData() {\n");
    3.12                  w.append("    return intKnckt().koData();\n");
    3.13                  w.append("  }\n");
     4.1 --- a/json/src/main/java/org/apidesign/html/json/spi/Technology.java	Mon Apr 22 13:03:34 2013 +0200
     4.2 +++ b/json/src/main/java/org/apidesign/html/json/spi/Technology.java	Mon Apr 22 13:52:00 2013 +0200
     4.3 @@ -56,4 +56,9 @@
     4.4      public void valueHasMutated(Data data, String propertyName);
     4.5  
     4.6      public void expose(FunctionBinding fb, Object model, Data d);
     4.7 +    
     4.8 +    /** Applies given data to current context (usually an HTML page).
     4.9 +     * @param data the data to apply
    4.10 +     */
    4.11 +    public void applyBindings(Data data);
    4.12  }
     5.1 --- a/json/src/test/java/net/java/html/json/MapModelTest.java	Mon Apr 22 13:03:34 2013 +0200
     5.2 +++ b/json/src/test/java/net/java/html/json/MapModelTest.java	Mon Apr 22 13:52:00 2013 +0200
     5.3 @@ -138,6 +138,9 @@
     5.4                  throw new IllegalStateException(ex);
     5.5              }
     5.6          }
     5.7 -    
     5.8 +
     5.9 +        @Override
    5.10 +        public void applyBindings(Map<String, One> data) {
    5.11 +        }
    5.12      }
    5.13  }
     6.1 --- a/json/src/test/java/net/java/html/json/ModelTest.java	Mon Apr 22 13:03:34 2013 +0200
     6.2 +++ b/json/src/test/java/net/java/html/json/ModelTest.java	Mon Apr 22 13:52:00 2013 +0200
     6.3 @@ -165,6 +165,7 @@
     6.4      @OnReceive(url = "{protocol}://{host}?query={query}")
     6.5      static void loadPeople(Modelik thiz, People p) {
     6.6          Modelik m = null;
     6.7 +        m.applyBindings();
     6.8          m.loadPeople("http", "apidesign.org", "query");
     6.9      }
    6.10      
    6.11 @@ -251,5 +252,9 @@
    6.12          @Override
    6.13          public void expose(FunctionBinding fb, Object model, Object d) {
    6.14          }
    6.15 +
    6.16 +        @Override
    6.17 +        public void applyBindings(Object data) {
    6.18 +        }
    6.19      }
    6.20  }