diff --git a/java/client/src/org/openqa/selenium/json/BeanToJsonConverter.java b/java/client/src/org/openqa/selenium/json/BeanToJsonConverter.java index 7da884bbe8b7c..75138611a8e11 100644 --- a/java/client/src/org/openqa/selenium/json/BeanToJsonConverter.java +++ b/java/client/src/org/openqa/selenium/json/BeanToJsonConverter.java @@ -34,6 +34,7 @@ import java.io.File; import java.lang.reflect.Array; import java.lang.reflect.Method; +import java.net.URL; import java.util.Collection; import java.util.Date; import java.util.Map; @@ -173,6 +174,10 @@ private JsonElement convertObject(Object toConvert, int maxDepth) throws Excepti return new JsonPrimitive(((File) toConvert).getAbsolutePath()); } + if (toConvert instanceof URL) { + return new JsonPrimitive(((URL) toConvert).toExternalForm()); + } + Method toJson = getMethod(toConvert, "toJson"); if (toJson != null) { try { diff --git a/java/client/src/org/openqa/selenium/json/Json.java b/java/client/src/org/openqa/selenium/json/Json.java index 842a86b2dff2c..49b6dc93350eb 100644 --- a/java/client/src/org/openqa/selenium/json/Json.java +++ b/java/client/src/org/openqa/selenium/json/Json.java @@ -46,6 +46,7 @@ public class Json { .registerTypeAdapterFactory(MapAdapter.FACTORY) .setLenient() .serializeNulls() + .disableHtmlEscaping() .create(); public static final Type LIST_OF_MAPS_TYPE = new TypeToken>>() {}.getType(); diff --git a/java/client/test/org/openqa/selenium/json/BeanToJsonConverterTest.java b/java/client/test/org/openqa/selenium/json/BeanToJsonConverterTest.java index 8a3449bbe8de8..7ca667001be80 100644 --- a/java/client/test/org/openqa/selenium/json/BeanToJsonConverterTest.java +++ b/java/client/test/org/openqa/selenium/json/BeanToJsonConverterTest.java @@ -60,6 +60,8 @@ import java.awt.*; import java.io.StringReader; +import java.net.MalformedURLException; +import java.net.URL; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -521,6 +523,17 @@ public void testShouldBeAbleToConvertACommand() { assertEquals(pars.get("param2").getAsString(), parameters.get("param2")); } + @Test + public void shouldConvertAUrlToAString() throws MalformedURLException { + URL url = new URL("http://example.com/cheese?type=edam"); + ImmutableMap toConvert = ImmutableMap.of("url", url); + + String seen = new Json().toJson(toConvert); + JsonObject converted = new JsonParser().parse(seen).getAsJsonObject(); + + assertEquals(url.toExternalForm(), converted.get("url").getAsString()); + } + @SuppressWarnings("unused") private static class SimpleBean {