More gentle fix for #254670: Convert the value before it enters JavaScript space
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 }