1.1 --- a/json-tck/src/main/java/net/java/html/json/tests/KnockoutTest.java Sat Nov 21 18:05:03 2015 +0100
1.2 +++ b/json-tck/src/main/java/net/java/html/json/tests/KnockoutTest.java Sun Nov 22 21:18:35 2015 +0100
1.3 @@ -167,6 +167,18 @@
1.4 Utils.exposeHTML(KnockoutTest.class, "");
1.5 }
1.6 }
1.7 +
1.8 + @KOTest public void rawObject() {
1.9 + final BrwsrCtx ctx = newContext();
1.10 + Person p1 = Models.bind(new Person(), ctx);
1.11 + p1.setFirstName("Jarda");
1.12 + p1.setLastName("Tulach");
1.13 + Object raw = Models.toRaw(p1);
1.14 + Person p2 = Models.fromRaw(ctx, Person.class, raw);
1.15 +
1.16 + assertEquals(p2.getFirstName(), "Jarda", "First name");
1.17 + assertEquals(p2.getLastName(), "Tulach", "Last name");
1.18 + }
1.19
1.20 @KOTest public void modifyComputedProperty() throws Throwable {
1.21 Object exp = Utils.exposeHTML(KnockoutTest.class,
2.1 --- a/ko-ws-tyrus/src/main/java/org/netbeans/html/wstyrus/LoadJSON.java Sat Nov 21 18:05:03 2015 +0100
2.2 +++ b/ko-ws-tyrus/src/main/java/org/netbeans/html/wstyrus/LoadJSON.java Sun Nov 22 21:18:35 2015 +0100
2.3 @@ -275,11 +275,12 @@
2.4 }
2.5 }
2.6
2.7 - @JavaScriptBody(args = {"object", "property"},
2.8 - body
2.9 - = "if (property === null) return object;\n"
2.10 - + "if (object === null) return null;\n"
2.11 - + "var p = object[property]; return p ? p : null;"
2.12 + @JavaScriptBody(args = {"object", "property"}, body =
2.13 + "var ret;\n" +
2.14 + "if (property === null) ret = object;\n" +
2.15 + "else if (object === null) ret = null;\n" +
2.16 + "else ret = object[property];\n" +
2.17 + "return ret ? (typeof ko === 'undefined' ? ret : ko.utils.unwrapObservable(ret)) : null;"
2.18 )
2.19 private static Object getProperty(Object object, String property) {
2.20 return null;
3.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java Sat Nov 21 18:05:03 2015 +0100
3.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java Sun Nov 22 21:18:35 2015 +0100
3.3 @@ -66,6 +66,17 @@
3.4 final class Knockout extends WeakReference<Object> {
3.5 private static final ReferenceQueue<Object> QUEUE = new ReferenceQueue();
3.6 private static final Set<Knockout> active = Collections.synchronizedSet(new HashSet<Knockout>());
3.7 +
3.8 + @JavaScriptBody(args = {"object", "property"}, body =
3.9 + "var ret;\n" +
3.10 + "if (property === null) ret = object;\n" +
3.11 + "else if (object === null) ret = null;\n" +
3.12 + "else ret = object[property];\n" +
3.13 + "return ret ? ko.utils.unwrapObservable(ret) : null;"
3.14 + )
3.15 + static Object getProperty(Object object, String property) {
3.16 + return null;
3.17 + }
3.18
3.19 private PropertyBinding[] props;
3.20 private FunctionBinding[] funcs;
4.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/LoadJSON.java Sat Nov 21 18:05:03 2015 +0100
4.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/LoadJSON.java Sun Nov 22 21:18:35 2015 +0100
4.3 @@ -52,16 +52,6 @@
4.4 final class LoadJSON {
4.5 private LoadJSON() {}
4.6
4.7 - @JavaScriptBody(args = {"object", "property"},
4.8 - body
4.9 - = "if (property === null) return object;\n"
4.10 - + "if (object === null) return null;\n"
4.11 - + "var p = object[property]; return p ? p : null;"
4.12 - )
4.13 - private static Object getProperty(Object object, String property) {
4.14 - return null;
4.15 - }
4.16 -
4.17 static String createJSONP(JSONCall whenDone) {
4.18 int h = whenDone.hashCode();
4.19 String name;
4.20 @@ -141,7 +131,7 @@
4.21
4.22 static void extractJSON(Object jsonObject, String[] props, Object[] values) {
4.23 for (int i = 0; i < props.length; i++) {
4.24 - values[i] = getProperty(jsonObject, props[i]);
4.25 + values[i] = Knockout.getProperty(jsonObject, props[i]);
4.26 }
4.27 }
4.28