Skip to content

Commit a3ad75e

Browse files
committed
FIX : Use JSONArray instead of ArrayOf to have primitives value
1 parent 7eb7614 commit a3ad75e

File tree

10 files changed

+57
-72
lines changed

10 files changed

+57
-72
lines changed

ponysdk/src/main/java/com/ponysdk/core/terminal/JavascriptAddOn.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,12 @@
2525

2626
import com.google.gwt.core.client.JavaScriptObject;
2727

28-
import elemental.util.ArrayOf;
29-
3028
public class JavascriptAddOn extends JavaScriptObject {
3129

3230
protected JavascriptAddOn() {
3331
}
3432

35-
public final native void update(String methodName,
36-
ArrayOf<JavaScriptObject> arguments) /*-{ this.update(methodName, arguments); }-*/;
33+
public final native void update(String methodName, JavaScriptObject arguments) /*-{ this.update(methodName, arguments); }-*/;
3734

3835
public final native void onInit() /*-{ this.onInit(); }-*/;
3936

ponysdk/src/main/java/com/ponysdk/core/terminal/model/BinaryModel.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,12 @@
2323

2424
package com.ponysdk.core.terminal.model;
2525

26-
import com.google.gwt.core.client.JavaScriptObject;
26+
import com.google.gwt.json.client.JSONArray;
2727
import com.ponysdk.core.model.ServerToClientModel;
2828
import com.ponysdk.core.model.ValueTypeModel;
2929

3030
import elemental.json.Json;
3131
import elemental.json.JsonObject;
32-
import elemental.util.ArrayOf;
3332

3433
public class BinaryModel {
3534

@@ -42,7 +41,7 @@ public class BinaryModel {
4241
private float floatValue;
4342
private double doubleValue;
4443
private String stringValue;
45-
private ArrayOf<JavaScriptObject> arrayValue;
44+
private JSONArray arrayValue;
4645

4746
protected BinaryModel() {
4847
}
@@ -77,7 +76,7 @@ public void init(final ServerToClientModel key, final String value, final int si
7776
this.stringValue = value;
7877
}
7978

80-
public void init(final ServerToClientModel key, final ArrayOf<JavaScriptObject> value, final int size) {
79+
public void init(final ServerToClientModel key, final JSONArray value, final int size) {
8180
init(key, size);
8281
this.arrayValue = value;
8382
}
@@ -119,7 +118,7 @@ public JsonObject getJsonObject() {
119118
return Json.parse(stringValue);
120119
}
121120

122-
public ArrayOf<JavaScriptObject> getArrayValue() {
121+
public JSONArray getArrayValue() {
123122
return arrayValue;
124123
}
125124

ponysdk/src/main/java/com/ponysdk/core/terminal/model/ReaderBuffer.java

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,13 @@
2323

2424
package com.ponysdk.core.terminal.model;
2525

26-
import com.google.gwt.core.client.JavaScriptObject;
26+
import com.google.gwt.json.client.JSONArray;
27+
import com.google.gwt.json.client.JSONBoolean;
28+
import com.google.gwt.json.client.JSONException;
29+
import com.google.gwt.json.client.JSONNumber;
30+
import com.google.gwt.json.client.JSONParser;
31+
import com.google.gwt.json.client.JSONString;
32+
import com.google.gwt.json.client.JSONValue;
2733
import com.ponysdk.core.model.ArrayValueModel;
2834
import com.ponysdk.core.model.BooleanModel;
2935
import com.ponysdk.core.model.ServerToClientModel;
@@ -35,11 +41,6 @@
3541
import elemental.html.DataView;
3642
import elemental.html.Uint8Array;
3743
import elemental.html.Window;
38-
import elemental.json.Json;
39-
import elemental.json.JsonException;
40-
import elemental.json.JsonValue;
41-
import elemental.util.ArrayOf;
42-
import elemental.util.Collections;
4344

4445
public class ReaderBuffer {
4546

@@ -253,47 +254,47 @@ private String readStringModelValue() {
253254
return getString(ascii, stringLength);
254255
}
255256

256-
private ArrayOf<JavaScriptObject> readArrayModelValue() {
257+
private JSONArray readArrayModelValue() {
257258
modelSize += ValueTypeModel.BYTE_SIZE; //array size
258259
final int arraySize = getUnsignedByte();
259-
final ArrayOf<JavaScriptObject> array = Collections.arrayOf();
260+
final JSONArray array = new JSONArray();
260261
modelSize += arraySize; //array elements types
261262
for (int i = 0; i < arraySize; i++) {
262263
final ArrayValueModel arrayValueModel = ArrayValueModel.fromRawValue(getByte());
263264
modelSize += arrayValueModel.getMinSize();
264-
JsonValue value;
265+
JSONValue value;
265266
if (arrayValueModel.isDynamicSize()) {
266267
final String stringValue = getDynamicSizeArrayElement(arrayValueModel);
267268
try {
268269
if (!stringValue.isEmpty() && (stringValue.charAt(0) == '{' || stringValue.charAt(0) == '['))
269-
value = Json.parse(stringValue);
270-
else value = Json.create(stringValue);
271-
} catch (final JsonException e) {
272-
value = Json.create(stringValue);
270+
value = JSONParser.parseStrict(stringValue);
271+
else value = new JSONString(stringValue);
272+
} catch (final JSONException e) {
273+
value = new JSONString(stringValue);
273274
}
274275
} else if (arrayValueModel == ArrayValueModel.NULL) {
275276
value = null;
276277
} else if (arrayValueModel == ArrayValueModel.INTEGER) {
277-
value = Json.create(getInt());
278+
value = new JSONNumber(getInt());
278279
} else if (arrayValueModel == ArrayValueModel.SHORT) {
279-
value = Json.create(getShort());
280+
value = new JSONNumber(getShort());
280281
} else if (arrayValueModel == ArrayValueModel.BOOLEAN_FALSE) {
281-
value = Json.create(false);
282+
value = JSONBoolean.getInstance(false);
282283
} else if (arrayValueModel == ArrayValueModel.BOOLEAN_TRUE) {
283-
value = Json.create(true);
284+
value = JSONBoolean.getInstance(true);
284285
} else if (arrayValueModel == ArrayValueModel.LONG) {
285-
value = Json.create(getLong());
286+
value = new JSONNumber(getLong());
286287
} else if (arrayValueModel == ArrayValueModel.BYTE) {
287-
value = Json.create(getByte());
288+
value = new JSONNumber(getByte());
288289
} else if (arrayValueModel == ArrayValueModel.DOUBLE) {
289-
value = Json.create(getDouble());
290+
value = new JSONNumber(getDouble());
290291
} else if (arrayValueModel == ArrayValueModel.FLOAT) {
291-
value = Json.create(getFloat());
292+
value = new JSONNumber(getFloat());
292293
} else {
293294
throw new IllegalArgumentException("Unsupported ArrayValueModel " + arrayValueModel);
294295
}
295296

296-
array.push((JavaScriptObject) value);
297+
array.set(i, value);
297298
}
298299
return array;
299300
}

ponysdk/src/main/java/com/ponysdk/core/terminal/ui/JsTextFunction.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,11 @@
2525

2626
import com.google.gwt.core.client.JavaScriptObject;
2727

28-
import elemental.util.ArrayOf;
2928
import jsinterop.annotations.JsFunction;
3029

3130
@JsFunction
3231
public interface JsTextFunction {
3332

34-
String apply(ArrayOf<JavaScriptObject> args);
33+
String apply(JavaScriptObject args);
3534

3635
}

ponysdk/src/main/java/com/ponysdk/core/terminal/ui/PTAddOn.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import com.ponysdk.core.terminal.model.ReaderBuffer;
3737

3838
import elemental.json.JsonObject;
39-
import elemental.util.ArrayOf;
4039

4140
public class PTAddOn extends AbstractPTObject {
4241

@@ -87,7 +86,7 @@ public boolean update(final ReaderBuffer buffer, final BinaryModel binaryModel)
8786
final String methodName = binaryModel.getStringValue();
8887
final BinaryModel arguments = buffer.readBinaryModel();
8988
if (ServerToClientModel.PADDON_ARGUMENTS == arguments.getModel()) {
90-
doUpdate(methodName, arguments.getArrayValue());
89+
doUpdate(methodName, arguments.getArrayValue().getJavaScriptObject());
9190
} else {
9291
buffer.rewind(arguments);
9392
doUpdate(methodName, null);
@@ -101,7 +100,7 @@ public boolean update(final ReaderBuffer buffer, final BinaryModel binaryModel)
101100
}
102101
}
103102

104-
protected void doUpdate(final String methodName, final ArrayOf<JavaScriptObject> arguments) {
103+
protected void doUpdate(final String methodName, final JavaScriptObject arguments) {
105104
try {
106105
if (!destroyed) addOn.update(methodName, arguments);
107106
else log.warning("PTAddOn #" + getObjectID() + " destroyed, so updates will be discarded : " + arguments);

ponysdk/src/main/java/com/ponysdk/core/terminal/ui/PTAddOnComposite.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
import com.ponysdk.core.terminal.model.ReaderBuffer;
3939

4040
import elemental.json.JsonObject;
41-
import elemental.util.ArrayOf;
4241

4342
public class PTAddOnComposite extends PTAddOn {
4443

@@ -93,7 +92,7 @@ protected void doCreate(final ReaderBuffer buffer, final int objectId, final UIB
9392
}
9493

9594
@Override
96-
protected void doUpdate(final String methodName, final ArrayOf<JavaScriptObject> arguments) {
95+
protected void doUpdate(final String methodName, final JavaScriptObject arguments) {
9796
if (!destroyed) {
9897
if (initialized && widget.isAttached()) {
9998
flushPendingUpdates();
@@ -126,9 +125,9 @@ public void destroy() {
126125
private static final class PAddOnExecution {
127126

128127
private final String methodName;
129-
private final ArrayOf<JavaScriptObject> arguments;
128+
private final JavaScriptObject arguments;
130129

131-
public PAddOnExecution(final String methodName, final ArrayOf<JavaScriptObject> arguments) {
130+
public PAddOnExecution(final String methodName, final JavaScriptObject arguments) {
132131
this.methodName = methodName;
133132
this.arguments = arguments;
134133
}
@@ -137,7 +136,7 @@ public String getMethodName() {
137136
return methodName;
138137
}
139138

140-
public ArrayOf<JavaScriptObject> getArguments() {
139+
public JavaScriptObject getArguments() {
141140
return arguments;
142141
}
143142
}

ponysdk/src/main/java/com/ponysdk/core/terminal/ui/PTDatePicker.java

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@
2525

2626
import java.util.Date;
2727

28-
import com.google.gwt.core.client.JavaScriptObject;
2928
import com.google.gwt.event.logical.shared.ValueChangeEvent;
3029
import com.google.gwt.i18n.client.DateTimeFormat;
30+
import com.google.gwt.json.client.JSONArray;
31+
import com.google.gwt.json.client.JSONValue;
3132
import com.google.gwt.user.datepicker.client.DatePicker;
3233
import com.ponysdk.core.model.ClientToServerModel;
3334
import com.ponysdk.core.model.DateConverter;
@@ -37,9 +38,6 @@
3738
import com.ponysdk.core.terminal.model.BinaryModel;
3839
import com.ponysdk.core.terminal.model.ReaderBuffer;
3940

40-
import elemental.json.JsonNumber;
41-
import elemental.util.ArrayOf;
42-
4341
public class PTDatePicker extends PTWidget<DatePicker> {
4442

4543
private DateTimeFormat format;
@@ -84,33 +82,33 @@ public boolean update(final ReaderBuffer buffer, final BinaryModel binaryModel)
8482
uiObject.setCurrentMonth(DateConverter.fromTimestamp(binaryModel.getLongValue()));
8583
return true;
8684
} else if (ServerToClientModel.DATE_ENABLED == model) {
87-
final ArrayOf<JavaScriptObject> dates = binaryModel.getArrayValue();
85+
final JSONArray dates = binaryModel.getArrayValue();
8886
// ServerToClientModel.ENABLED
8987
final boolean enabled = buffer.readBinaryModel().getBooleanValue();
90-
for (int i = 0; i < dates.length(); i++) {
91-
final JsonNumber rawObject = (JsonNumber) dates.get(i);
92-
final Date date = DateConverter.decode((long) rawObject.asNumber());
88+
for (int i = 0; i < dates.size(); i++) {
89+
final JSONValue rawObject = dates.get(i);
90+
final Date date = DateConverter.decode((long) rawObject.isNumber().doubleValue());
9391
if (date.after(uiObject.getFirstDate()) && date.before(uiObject.getLastDate())) {
9492
uiObject.setTransientEnabledOnDates(enabled, date);
9593
}
9694
}
9795
return true;
9896
} else if (ServerToClientModel.ADD_DATE_STYLE == model) {
99-
final ArrayOf<JavaScriptObject> dates = binaryModel.getArrayValue();
97+
final JSONArray dates = binaryModel.getArrayValue();
10098
// ServerToClientModel.STYLE_NAME
10199
final String style = buffer.readBinaryModel().getStringValue();
102-
for (int i = 0; i < dates.length(); i++) {
103-
final JsonNumber rawObject = (JsonNumber) dates.get(i);
104-
uiObject.addStyleToDates(style, DateConverter.decode((long) rawObject.asNumber()));
100+
for (int i = 0; i < dates.size(); i++) {
101+
final JSONValue rawObject = dates.get(i);
102+
uiObject.addStyleToDates(style, DateConverter.decode((long) rawObject.isNumber().doubleValue()));
105103
}
106104
return true;
107105
} else if (ServerToClientModel.REMOVE_DATE_STYLE == model) {
108-
final ArrayOf<JavaScriptObject> dates = binaryModel.getArrayValue();
106+
final JSONArray dates = binaryModel.getArrayValue();
109107
// ServerToClientModel.STYLE_NAME
110108
final String style = buffer.readBinaryModel().getStringValue();
111-
for (int i = 0; i < dates.length(); i++) {
112-
final JsonNumber rawObject = (JsonNumber) dates.get(i);
113-
uiObject.removeStyleFromDates(style, DateConverter.decode((long) rawObject.asNumber()));
109+
for (int i = 0; i < dates.size(); i++) {
110+
final JSONValue rawObject = dates.get(i);
111+
uiObject.removeStyleFromDates(style, DateConverter.decode((long) rawObject.isNumber().doubleValue()));
114112
}
115113
return true;
116114
} else if (ServerToClientModel.YEAR_ARROWS_VISIBLE == model) {

ponysdk/src/main/java/com/ponysdk/core/terminal/ui/PTFunctionalLabel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ protected Label createUIObject() {
4141
public boolean update(final ReaderBuffer buffer, final BinaryModel binaryModel) {
4242
final ServerToClientModel model = binaryModel.getModel();
4343
if (ServerToClientModel.FUNCTION_ARGS == model) {
44-
setText(uiObject.getElement(), function.getFunction().apply(binaryModel.getArrayValue()));
44+
setText(uiObject.getElement(), function.getFunction().apply(binaryModel.getArrayValue().getJavaScriptObject()));
4545
return true;
4646
} else if (ServerToClientModel.FUNCTION_ID == model) {
4747
function = (PTFunction) uiBuilder.getPTObject(binaryModel.getIntValue());

ponysdk/src/main/java/com/ponysdk/core/terminal/ui/PTListBox.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@
2323

2424
package com.ponysdk.core.terminal.ui;
2525

26-
import com.google.gwt.core.client.JavaScriptObject;
2726
import com.google.gwt.dom.client.Document;
2827
import com.google.gwt.dom.client.OptGroupElement;
2928
import com.google.gwt.dom.client.OptionElement;
3029
import com.google.gwt.dom.client.SelectElement;
30+
import com.google.gwt.json.client.JSONArray;
3131
import com.google.gwt.user.client.ui.ListBox;
3232
import com.ponysdk.core.model.ClientToServerModel;
3333
import com.ponysdk.core.model.ServerToClientModel;
@@ -36,8 +36,6 @@
3636
import com.ponysdk.core.terminal.model.BinaryModel;
3737
import com.ponysdk.core.terminal.model.ReaderBuffer;
3838

39-
import elemental.util.ArrayOf;
40-
4139
public class PTListBox extends PTFocusWidget<ListBox> {
4240

4341
@Override
@@ -94,18 +92,17 @@ public boolean update(final ReaderBuffer buffer, final BinaryModel binaryModel)
9492
}
9593
return true;
9694
} else if (ServerToClientModel.ITEM_ADD == model) {
97-
final ArrayOf<JavaScriptObject> items = binaryModel.getArrayValue();
95+
final JSONArray items = binaryModel.getArrayValue();
9896
// ServerToClientModel.ITEM_GROUP
9997
final String groupName = buffer.readBinaryModel().getStringValue();
10098
final SelectElement select = uiObject.getElement().cast();
10199

102100
final OptGroupElement groupElement = Document.get().createOptGroupElement();
103101
groupElement.setLabel(groupName);
104102

105-
for (int i = 0; i < items.length(); i++) {
103+
for (int i = 0; i < items.size(); i++) {
106104
final OptionElement optElement = Document.get().createOptionElement();
107-
final Object item = items.get(i);
108-
optElement.setInnerText(item.toString());
105+
optElement.setInnerText(items.get(i).isString().stringValue());
109106
groupElement.appendChild(optElement);
110107
}
111108
select.appendChild(groupElement);

ponysdk/src/main/java/com/ponysdk/core/terminal/ui/PTWidget.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import java.util.function.Consumer;
2929
import java.util.logging.Logger;
3030

31-
import com.google.gwt.core.client.JavaScriptObject;
3231
import com.google.gwt.dom.client.Element;
3332
import com.google.gwt.event.dom.client.BlurEvent;
3433
import com.google.gwt.event.dom.client.ClickEvent;
@@ -66,9 +65,6 @@
6665
import com.ponysdk.core.terminal.model.BinaryModel;
6766
import com.ponysdk.core.terminal.model.ReaderBuffer;
6867

69-
import elemental.json.JsonNumber;
70-
import elemental.util.ArrayOf;
71-
7268
public abstract class PTWidget<T extends Widget> extends PTUIObject<T> implements IsWidget {
7369

7470
private static final String HUNDRED_PERCENT = "100%";
@@ -300,11 +296,11 @@ private void stopEvent(final DomEvent<?> event) {
300296
private static final int[] extractKeyFilter(final ReaderBuffer buffer) {
301297
final BinaryModel binaryModel = buffer.readBinaryModel();
302298
if (ServerToClientModel.KEY_FILTER == binaryModel.getModel()) {
303-
final ArrayOf<JavaScriptObject> keys = binaryModel.getArrayValue();
304-
final int length = keys.length();
299+
final JSONArray keys = binaryModel.getArrayValue();
300+
final int length = keys.size();
305301
final int[] keyCodes = new int[length];
306302
for (int i = 0; i < length; i++) {
307-
keyCodes[i] = (int) ((JsonNumber) keys.get(i)).asNumber();
303+
keyCodes[i] = (int) keys.get(i).isNumber().doubleValue();
308304
}
309305
return keyCodes;
310306
} else {

0 commit comments

Comments
 (0)