Need to convert values toModel to make sure all TCK tests pass properly in FXbrwsr
1.1 --- a/json/src/main/java/org/apidesign/html/json/impl/JSON.java Thu Apr 25 16:21:50 2013 +0200
1.2 +++ b/json/src/main/java/org/apidesign/html/json/impl/JSON.java Thu Apr 25 16:41:13 2013 +0200
1.3 @@ -23,7 +23,9 @@
1.4 import java.util.HashMap;
1.5 import java.util.Map;
1.6 import net.java.html.json.Context;
1.7 +import static org.apidesign.html.json.impl.ContextAccessor.findTechnology;
1.8 import org.apidesign.html.json.spi.JSONCall;
1.9 +import org.apidesign.html.json.spi.Technology;
1.10 import org.apidesign.html.json.spi.Transfer;
1.11
1.12 /**
1.13 @@ -79,8 +81,10 @@
1.14 }
1.15 return (Number)obj;
1.16 }
1.17 - public static <M> M toModel(Class<M> aClass, Object data, Object object) {
1.18 - return aClass.cast(data);
1.19 + public static <M> M toModel(Context c, Class<M> aClass, Object data, Object object) {
1.20 + Technology<?> t = findTechnology(c);
1.21 + Object o = t.toModel(aClass, data);
1.22 + return aClass.cast(o);
1.23 }
1.24
1.25
2.1 --- a/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java Thu Apr 25 16:21:50 2013 +0200
2.2 +++ b/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java Thu Apr 25 16:41:13 2013 +0200
2.3 @@ -854,7 +854,7 @@
2.4 toFinish = ".intValue()";
2.5 }
2.6 if (dataName != null && ve.getSimpleName().contentEquals(dataName) && isModel(ve.asType())) {
2.7 - toCall = "org.apidesign.html.json.impl.JSON.toModel(" + ve.asType() + ".class, ";
2.8 + toCall = "org.apidesign.html.json.impl.JSON.toModel(context, " + ve.asType() + ".class, ";
2.9 }
2.10
2.11 if (toCall != null) {
3.1 --- a/json/src/main/java/org/apidesign/html/json/spi/ContextBuilder.java Thu Apr 25 16:21:50 2013 +0200
3.2 +++ b/json/src/main/java/org/apidesign/html/json/spi/ContextBuilder.java Thu Apr 25 16:41:13 2013 +0200
3.3 @@ -117,6 +117,11 @@
3.4 public void loadJSON(JSONCall call) {
3.5 call.notifyError(new UnsupportedOperationException());
3.6 }
3.7 +
3.8 + @Override
3.9 + public <M> M toModel(Class<M> modelClass, Object data) {
3.10 + return modelClass.cast(data);
3.11 + }
3.12 }
3.13
3.14 }
4.1 --- a/json/src/main/java/org/apidesign/html/json/spi/Technology.java Thu Apr 25 16:21:50 2013 +0200
4.2 +++ b/json/src/main/java/org/apidesign/html/json/spi/Technology.java Thu Apr 25 16:41:13 2013 +0200
4.3 @@ -38,6 +38,13 @@
4.4 */
4.5 public Data wrapModel(Object model);
4.6
4.7 + /** Converts an element potentially representing a model into the model.
4.8 + * @param modelClass expected class to convert the data to
4.9 + * @param data the current data provided from the browser
4.10 + * @return the instance of modelClass somehow extracted from the data, may return <code>null</code>
4.11 + */
4.12 + public <M> M toModel(Class<M> modelClass, Object data);
4.13 +
4.14 /** Binds a property between the model and the data as used by the technology.
4.15 *
4.16 * @param b the description of the requested binding
5.1 --- a/json/src/test/java/net/java/html/json/MapModelTest.java Thu Apr 25 16:21:50 2013 +0200
5.2 +++ b/json/src/test/java/net/java/html/json/MapModelTest.java Thu Apr 25 16:41:13 2013 +0200
5.3 @@ -199,5 +199,10 @@
5.4 public void loadJSON(JSONCall call) {
5.5 call.notifyError(new UnsupportedOperationException());
5.6 }
5.7 +
5.8 + @Override
5.9 + public <M> M toModel(Class<M> modelClass, Object data) {
5.10 + return modelClass.cast(data);
5.11 + }
5.12 }
5.13 }
6.1 --- a/json/src/test/java/net/java/html/json/ModelTest.java Thu Apr 25 16:21:50 2013 +0200
6.2 +++ b/json/src/test/java/net/java/html/json/ModelTest.java Thu Apr 25 16:41:13 2013 +0200
6.3 @@ -268,5 +268,10 @@
6.4 public Object wrapArray(Object[] arr) {
6.5 return arr;
6.6 }
6.7 +
6.8 + @Override
6.9 + public <M> M toModel(Class<M> modelClass, Object data) {
6.10 + return modelClass.cast(data);
6.11 + }
6.12 }
6.13 }
7.1 --- a/json/src/test/java/org/apidesign/html/json/impl/JSONListTest.java Thu Apr 25 16:21:50 2013 +0200
7.2 +++ b/json/src/test/java/org/apidesign/html/json/impl/JSONListTest.java Thu Apr 25 16:41:13 2013 +0200
7.3 @@ -157,4 +157,9 @@
7.4 return replaceArray ? this : arr;
7.5 }
7.6
7.7 + @Override
7.8 + public <M> M toModel(Class<M> modelClass, Object data) {
7.9 + return modelClass.cast(data);
7.10 + }
7.11 +
7.12 }
8.1 --- a/ko-fx/src/main/java/org/apidesign/html/kofx/FXContext.java Thu Apr 25 16:21:50 2013 +0200
8.2 +++ b/ko-fx/src/main/java/org/apidesign/html/kofx/FXContext.java Thu Apr 25 16:41:13 2013 +0200
8.3 @@ -86,4 +86,12 @@
8.4 public void loadJSON(final JSONCall call) {
8.5 LoadJSON.loadJSON(call);
8.6 }
8.7 +
8.8 + @Override
8.9 + public <M> M toModel(Class<M> modelClass, Object data) {
8.10 + if (data instanceof JSObject) {
8.11 + data = ((JSObject)data).getMember("ko-fx.model"); // NOI18N
8.12 + }
8.13 + return modelClass.cast(data);
8.14 + }
8.15 }
9.1 --- a/ko-fx/src/main/java/org/apidesign/html/kofx/Knockout.java Thu Apr 25 16:21:50 2013 +0200
9.2 +++ b/ko-fx/src/main/java/org/apidesign/html/kofx/Knockout.java Thu Apr 25 16:41:13 2013 +0200
9.3 @@ -85,7 +85,7 @@
9.4 try {
9.5 InvokeJS.KObject.call("bind", bindings, pb, prop, "getValue", pb.isReadOnly() ? null : "setValue", primitive, array);
9.6
9.7 - ((JSObject)bindings).setMember("koModel", model);
9.8 + ((JSObject)bindings).setMember("ko-fx.model", model);
9.9 LOG.log(Level.FINE, "binding defined for {0}: {1}", new Object[]{prop, ((JSObject)bindings).getMember(prop)});
9.10 } catch (Throwable ex) {
9.11 LOG.log(Level.WARNING, "binding failed for {0} on {1}", new Object[]{prop, bindings});