You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by jt...@apache.org on 2017/10/10 06:34:20 UTC

incubator-netbeans-html4j git commit: Empty strings shall not be treated as null

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 <ja...@oracle.com>
Authored: Tue Oct 10 08:34:00 2017 +0200
Committer: Jaroslav Tulach <ja...@oracle.com>
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;