Skip to content

Commit

Permalink
[java] Improve readability
Browse files Browse the repository at this point in the history
  • Loading branch information
pujagani committed Jan 9, 2024
1 parent 3bfd6c4 commit f8944cd
Showing 1 changed file with 33 additions and 26 deletions.
59 changes: 33 additions & 26 deletions java/src/org/openqa/selenium/bidi/script/RemoteValue.java
Expand Up @@ -194,35 +194,42 @@ private Map<String, Object> toJson() {

private static Object deserializeValue(Object value, Type type) {

if (Type.ARRAY.equals(type) || Type.SET.equals(type)) {
try (StringReader reader = new StringReader(JSON.toJson(value));
JsonInput input = JSON.newInput(reader)) {
value = input.read(new TypeToken<List<RemoteValue>>() {}.getType());
}
} else if (Type.MAP.equals(type) || Type.OBJECT.equals(type)) {
List<List<Object>> result = (List<List<Object>>) value;
Map<Object, RemoteValue> map = new HashMap<>();

for (List<Object> list : result) {
Object key = list.get(0);
if (!(key instanceof String)) {
try (StringReader reader = new StringReader(JSON.toJson(key));
JsonInput keyInput = JSON.newInput(reader)) {
key = keyInput.read(RemoteValue.class);
switch (type) {
case ARRAY:
case SET:
try (StringReader reader = new StringReader(JSON.toJson(value));
JsonInput input = JSON.newInput(reader)) {
value = input.read(new TypeToken<List<RemoteValue>>() {}.getType());
}
break;

case MAP:
case OBJECT:
List<List<Object>> result = (List<List<Object>>) value;
Map<Object, RemoteValue> map = new HashMap<>();

for (List<Object> list : result) {
Object key = list.get(0);
if (!(key instanceof String)) {
try (StringReader reader = new StringReader(JSON.toJson(key));
JsonInput keyInput = JSON.newInput(reader)) {
key = keyInput.read(RemoteValue.class);
}
}
try (StringReader reader = new StringReader(JSON.toJson(list.get(1)));
JsonInput valueInput = JSON.newInput(reader)) {
RemoteValue value1 = valueInput.read(RemoteValue.class);
map.put(key, value1);
}
}
try (StringReader reader = new StringReader(JSON.toJson(list.get(1)));
JsonInput valueInput = JSON.newInput(reader)) {
RemoteValue value1 = valueInput.read(RemoteValue.class);
map.put(key, value1);
value = map;
break;

case REGULAR_EXPRESSION:
try (StringReader reader = new StringReader(JSON.toJson(value));
JsonInput input = JSON.newInput(reader)) {
value = input.read(RegExpValue.class);
}
}
value = map;
} else if (Type.REGULAR_EXPRESSION.equals(type)) {
try (StringReader reader = new StringReader(JSON.toJson(value));
JsonInput input = JSON.newInput(reader)) {
value = input.read(RegExpValue.class);
}
}

return value;
Expand Down

0 comments on commit f8944cd

Please sign in to comment.