diff --git a/java/src/org/openqa/selenium/bidi/script/RemoteValue.java b/java/src/org/openqa/selenium/bidi/script/RemoteValue.java index 677cba41cb19d..891b3e846ee94 100644 --- a/java/src/org/openqa/selenium/bidi/script/RemoteValue.java +++ b/java/src/org/openqa/selenium/bidi/script/RemoteValue.java @@ -194,35 +194,42 @@ private Map 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>() {}.getType()); - } - } else if (Type.MAP.equals(type) || Type.OBJECT.equals(type)) { - List> result = (List>) value; - Map map = new HashMap<>(); - - for (List 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>() {}.getType()); + } + break; + + case MAP: + case OBJECT: + List> result = (List>) value; + Map map = new HashMap<>(); + + for (List 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;