Repository: incubator-netbeans-html4j Updated Branches: refs/heads/master 593fe288c -> 210f773c3
Empty strings shall not be treated as null Project: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/commit/210f773c Tree: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/tree/210f773c Diff: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/diff/210f773c Branch: refs/heads/master Commit: 210f773c35b721e20b6f11bfa4ffd475442c303c Parents: 593fe28 Author: Jaroslav Tulach <[email protected]> Authored: Tue Oct 10 08:34:00 2017 +0200 Committer: Jaroslav Tulach <[email protected]> Committed: Tue Oct 10 08:34:00 2017 +0200 ---------------------------------------------------------------------- .../main/java/net/java/html/json/tests/JSONTest.java | 14 ++++++++++++++ .../main/java/org/netbeans/html/ko4j/Knockout.java | 8 +++++++- .../main/java/org/netbeans/html/xhr4j/LoadJSON.java | 10 ++++++++-- 3 files changed, 29 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/blob/210f773c/json-tck/src/main/java/net/java/html/json/tests/JSONTest.java ---------------------------------------------------------------------- diff --git a/json-tck/src/main/java/net/java/html/json/tests/JSONTest.java b/json-tck/src/main/java/net/java/html/json/tests/JSONTest.java index 19e989f..6aaf236 100644 --- a/json-tck/src/main/java/net/java/html/json/tests/JSONTest.java +++ b/json-tck/src/main/java/net/java/html/json/tests/JSONTest.java @@ -100,6 +100,20 @@ public final class JSONTest { "Should be the same: " + p.getFirstName() + " != " + p2.getFirstName()); } + @KOTest public void fromJsonEmptyValues() throws Throwable { + final BrwsrCtx c = newContext(); + Person p = Models.bind(new Person(), c); + p.setSex(Sex.MALE); + p.setFirstName(""); + p.setLastName(""); + + byte[] arr = p.toString().getBytes("UTF-8"); + Person p2 = Models.parse(c, Person.class, new ByteArrayInputStream(arr)); + + assertEquals(p2.getFirstName(), p.getFirstName(), + "Should be the same: " + p.getFirstName() + " != " + p2.getFirstName()); + } + @KOTest public void toJSONWithEscapeCharactersInABrowser() throws Throwable { Person p = Models.bind(new Person(), newContext()); p.setSex(Sex.MALE); http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/blob/210f773c/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java ---------------------------------------------------------------------- diff --git a/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java b/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java index df5b03a..7500715 100644 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java @@ -41,7 +41,13 @@ final class Knockout { "if (property === null) ret = object;\n" + "else if (object === null) ret = null;\n" + "else ret = object[property];\n" + - "return ret ? ko['utils']['unwrapObservable'](ret) : null;" + "if (typeof ret !== 'undefined' && ret !== null) {\n" + + " if (typeof ko !== 'undefined' && ko['utils'] && ko['utils']['unwrapObservable']) {\n" + + " return ko['utils']['unwrapObservable'](ret);\n" + + " }\n" + + " return ret;\n" + + "}\n" + + "return null;\n" ) static Object getProperty(Object object, String property) { return null; http://git-wip-us.apache.org/repos/asf/incubator-netbeans-html4j/blob/210f773c/xhr4j/src/main/java/org/netbeans/html/xhr4j/LoadJSON.java ---------------------------------------------------------------------- diff --git a/xhr4j/src/main/java/org/netbeans/html/xhr4j/LoadJSON.java b/xhr4j/src/main/java/org/netbeans/html/xhr4j/LoadJSON.java index 3f5e807..9f1ac6e 100644 --- a/xhr4j/src/main/java/org/netbeans/html/xhr4j/LoadJSON.java +++ b/xhr4j/src/main/java/org/netbeans/html/xhr4j/LoadJSON.java @@ -226,8 +226,14 @@ final class LoadJSON implements Runnable { "var ret;\n" + "if (property === null) ret = object;\n" + "else if (object === null) ret = null;\n" + - "else ret = object[property];\n" + - "return ret ? (typeof ko === 'undefined' ? ret : ko.utils.unwrapObservable(ret)) : null;" + "else ret = object[property];\n" + + "if (typeof ret !== 'undefined' && ret !== null) {\n" + + " if (typeof ko !== 'undefined' && ko['utils'] && ko['utils']['unwrapObservable']) {\n" + + " return ko['utils']['unwrapObservable'](ret);\n" + + " }\n" + + " return ret;\n" + + "}\n" + + "return null;\n" ) private static Object getProperty(Object object, String property) { return null;
