Replacing two Boolean arrays holding readOnly and constant info by one numeric array. Helps portability.
1.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/KOTech.java Tue Mar 01 18:07:55 2016 +0100
1.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/KOTech.java Wed Mar 02 03:08:19 2016 +0100
1.3 @@ -71,13 +71,14 @@
1.4
1.5 final Object createKO(Object model, Object copyFrom, PropertyBinding[] propArr, FunctionBinding[] funcArr, Knockout[] ko) {
1.6 String[] propNames = new String[propArr.length];
1.7 - Boolean[] propReadOnly = new Boolean[propArr.length];
1.8 - Boolean[] propConstant = new Boolean[propArr.length];
1.9 + Number[] propInfo = new Number[propArr.length];
1.10 Object[] propValues = new Object[propArr.length];
1.11 for (int i = 0; i < propNames.length; i++) {
1.12 propNames[i] = propArr[i].getPropertyName();
1.13 - propReadOnly[i] = propArr[i].isReadOnly();
1.14 - propConstant[i] = propArr[i].isConstant();
1.15 + int info =
1.16 + (propArr[i].isReadOnly() ? 1 : 0) +
1.17 + (propArr[i].isConstant()? 2 : 0);
1.18 + propInfo[i] = info;
1.19 Object value = propArr[i].getValue();
1.20 if (value instanceof Enum) {
1.21 value = value.toString();
1.22 @@ -95,8 +96,7 @@
1.23 }
1.24 newKO.wrapModel(
1.25 ret, copyFrom,
1.26 - propNames, propReadOnly, propConstant, propValues,
1.27 - funcNames
1.28 + propNames, propInfo, propValues, funcNames
1.29 );
1.30 return ret;
1.31 }
2.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java Tue Mar 01 18:07:55 2016 +0100
2.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java Wed Mar 02 03:08:19 2016 +0100
2.3 @@ -168,7 +168,7 @@
2.4 javacall = true,
2.5 keepAlive = false,
2.6 wait4js = false,
2.7 - args = { "ret", "copyFrom", "propNames", "propReadOnly", "propConstant", "propValues", "funcNames" },
2.8 + args = { "ret", "copyFrom", "propNames", "propInfo", "propValues", "funcNames" },
2.9 body =
2.10 "Object.defineProperty(ret, 'ko4j', { value : this });\n"
2.11 + "function koComputed(index, name, readOnly, value) {\n"
2.12 @@ -225,10 +225,10 @@
2.13 + " ret[name] = cmpt;\n"
2.14 + "}\n"
2.15 + "for (var i = 0; i < propNames.length; i++) {\n"
2.16 - + " if (propConstant[i]) {\n"
2.17 + + " if ((propInfo[i] & 2) !== 0) {\n"
2.18 + " ret[propNames[i]] = propValues[i];\n"
2.19 + " } else {\n"
2.20 - + " koComputed(i, propNames[i], propReadOnly[i], propValues[i]);\n"
2.21 + + " koComputed(i, propNames[i], (propInfo[i] & 1) !== 0, propValues[i]);\n"
2.22 + " }\n"
2.23 + "}\n"
2.24 + "function koExpose(index, name) {\n"
2.25 @@ -244,7 +244,7 @@
2.26 )
2.27 native void wrapModel(
2.28 Object ret, Object copyFrom,
2.29 - String[] propNames, Boolean[] propReadOnly, Boolean[] propConstant,
2.30 + String[] propNames, Number[] propInfo,
2.31 Object propValues,
2.32 String[] funcNames
2.33 );