More gentle fix for #254670: Convert the value before it enters JavaScript space
authorJaroslav Tulach <jtulach@netbeans.org>
Tue, 15 Sep 2015 21:08:02 +0200
changeset 9843dfb8f1fd2f5
parent 978 38e010f4ba25
child 985 7fe3c71e76a1
More gentle fix for #254670: Convert the value before it enters JavaScript space
ko4j/src/main/java/org/netbeans/html/ko4j/KOTech.java
ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java
     1.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/KOTech.java	Sun Sep 06 14:48:43 2015 +0200
     1.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/KOTech.java	Tue Sep 15 21:08:02 2015 +0200
     1.3 @@ -72,7 +72,11 @@
     1.4          for (int i = 0; i < propNames.length; i++) {
     1.5              propNames[i] = propArr[i].getPropertyName();
     1.6              propReadOnly[i] = propArr[i].isReadOnly();
     1.7 -            propValues[i] = propArr[i].getValue();
     1.8 +            Object value = propArr[i].getValue();
     1.9 +            if (value instanceof Enum) {
    1.10 +                value = value.toString();
    1.11 +            }
    1.12 +            propValues[i] = value;
    1.13          }
    1.14          String[] funcNames = new String[funcArr.length];
    1.15          for (int i = 0; i < funcNames.length; i++) {
    1.16 @@ -121,6 +125,9 @@
    1.17      @Override
    1.18      public void valueHasMutated(Object data, String propertyName, Object oldValue, Object newValue) {
    1.19          Knockout.cleanUp();
    1.20 +        if (newValue instanceof Enum) {
    1.21 +            newValue = newValue.toString();
    1.22 +        }
    1.23          Knockout.valueHasMutated(data, propertyName, oldValue, newValue);
    1.24      }
    1.25  
     2.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java	Sun Sep 06 14:48:43 2015 +0200
     2.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java	Tue Sep 15 21:08:02 2015 +0200
     2.3 @@ -171,7 +171,6 @@
     2.4          + "      trigger();\n"
     2.5          + "      var r = activeGetter();\n"
     2.6          + "      activeGetter = realGetter;\n"
     2.7 -        + "      r = @org.netbeans.html.ko4j.Knockout::noEnum(Ljava/lang/Object;)(r);\n"
     2.8          + "      if (r) try { var br = r.valueOf(); } catch (err) {}\n"
     2.9          + "      return br === undefined ? r: br;\n"
    2.10          + "    },\n"
    2.11 @@ -231,11 +230,4 @@
    2.12              return o;
    2.13          }
    2.14      }
    2.15 -
    2.16 -    static Object noEnum(Object o) {
    2.17 -        if (o instanceof Enum) {
    2.18 -            return o.toString();
    2.19 -        }
    2.20 -        return o;
    2.21 -    }
    2.22  }