@@ -104,15 +104,15 @@ public void shouldConvertAMapIntoAJsonObject() {
104104
105105 String json = convert (toConvert );
106106
107- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
107+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
108108 assertThat (converted .get ("cheese" ).getAsString ()).isEqualTo ("cheddar" );
109109 }
110110
111111 @ Test
112112 public void shouldConvertASimpleJavaBean () {
113113 String json = convert (new SimpleBean ());
114114
115- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
115+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
116116 assertThat (converted .get ("foo" ).getAsString ()).isEqualTo ("bar" );
117117 assertThat (converted .get ("simple" ).getAsBoolean ()).isEqualTo (true );
118118 assertThat (converted .get ("number" ).getAsDouble ()).isEqualTo (123.456 );
@@ -122,7 +122,7 @@ public void shouldConvertASimpleJavaBean() {
122122 public void shouldConvertArrays () {
123123 String json = convert (new BeanWithArray ());
124124
125- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
125+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
126126 JsonArray allNames = converted .get ("names" ).getAsJsonArray ();
127127 assertThat (allNames ).hasSize (3 );
128128 }
@@ -131,7 +131,7 @@ public void shouldConvertArrays() {
131131 public void shouldConvertCollections () {
132132 String json = convert (new BeanWithCollection ());
133133
134- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
134+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
135135 JsonArray allNames = converted .get ("something" ).getAsJsonArray ();
136136 assertThat (allNames ).hasSize (2 );
137137 }
@@ -182,7 +182,7 @@ public void shouldBeAbleToConvertAPoint() {
182182 public void shouldEncodeClassNameAsClassProperty () {
183183 String json = convert (new SimpleBean ());
184184
185- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
185+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
186186
187187 assertThat (converted .get ("class" ).getAsString ()).isEqualTo (SimpleBean .class .getName ());
188188 }
@@ -192,7 +192,7 @@ public void shouldBeAbleToConvertASessionId() {
192192 SessionId sessionId = new SessionId ("some id" );
193193 String json = convert (sessionId );
194194
195- JsonPrimitive converted = new JsonParser (). parse (json ).getAsJsonPrimitive ();
195+ JsonPrimitive converted = JsonParser . parseString (json ).getAsJsonPrimitive ();
196196
197197 assertThat (converted .getAsString ()).isEqualTo ("some id" );
198198 }
@@ -203,7 +203,7 @@ public void shouldBeAbleToConvertAJsonObject() {
203203 obj .addProperty ("key" , "value" );
204204 String json = convert (obj );
205205
206- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
206+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
207207
208208 assertThat (converted .get ("key" ).getAsString ()).isEqualTo ("value" );
209209 }
@@ -214,7 +214,7 @@ public void shouldBeAbleToConvertACapabilityObject() {
214214
215215 String json = convert (caps );
216216
217- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
217+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
218218
219219 assertThat (converted .get ("key" ).getAsString ()).isEqualTo ("alpha" );
220220 }
@@ -231,7 +231,7 @@ public void shouldConvertAProxyCorrectly() {
231231
232232 String json = convert (command .getParameters ());
233233
234- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
234+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
235235 JsonObject capsAsMap = converted .get ("desiredCapabilities" ).getAsJsonObject ();
236236
237237 assertThat (capsAsMap .get (CapabilityType .PROXY ).getAsJsonObject ().get ("httpProxy" ).getAsString ())
@@ -260,7 +260,7 @@ public Map<String, Object> toJson() {
260260 }
261261
262262 String json = convert (new ToJsonReturnsMap ());
263- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
263+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
264264
265265 assertThat (converted .entrySet ()).hasSize (1 );
266266 assertThat (converted .get ("cheese" ).getAsString ()).isEqualTo ("peas" );
@@ -276,7 +276,7 @@ public Set<String> toJson() {
276276 }
277277
278278 String json = convert (new ToJsonReturnsCollection ());
279- JsonArray converted = new JsonParser (). parse (json ).getAsJsonArray ();
279+ JsonArray converted = JsonParser . parseString (json ).getAsJsonArray ();
280280
281281 assertThat (converted ).hasSize (2 );
282282 JsonArray expected = new JsonArray ();
@@ -333,7 +333,7 @@ public void convertsToJsonMethodResultToPrimitiveIfItIsNotJson() {
333333 // The JSON spec says that we should encode the forward stroke ("solidus"). Decode the string
334334 assertThat (json .startsWith ("\" " )).isTrue ();
335335 assertThat (json .endsWith ("\" " )).isTrue ();
336- json = new JsonParser (). parse (json ).getAsString ();
336+ json = JsonParser . parseString (json ).getAsString ();
337337
338338 assertThat (json ).isEqualTo ("gnu/linux" );
339339 }
@@ -373,7 +373,7 @@ public void shouldBeAbleToConvertAWebDriverException() {
373373 StackTraceElement [] stackTrace = clientError .getStackTrace ();
374374 String raw = convert (clientError );
375375
376- JsonObject converted = new JsonParser (). parse (raw ).getAsJsonObject ();
376+ JsonObject converted = JsonParser . parseString (raw ).getAsJsonObject ();
377377
378378 assertThat (converted .has ("buildInformation" )).isTrue ();
379379 assertThat (converted .has ("systemInformation" )).isTrue ();
@@ -421,7 +421,7 @@ public Date getDate() {
421421 Bean bean = new Bean (date );
422422 String jsonStr = convert (bean );
423423
424- JsonObject converted = new JsonParser (). parse (jsonStr ).getAsJsonObject ();
424+ JsonObject converted = JsonParser . parseString (jsonStr ).getAsJsonObject ();
425425
426426 assertThat (converted .has ("date" )).isTrue ();
427427 assertThat (converted .get ("date" ).getAsLong ()).isEqualTo (123456L );
@@ -434,7 +434,7 @@ public void shouldBeAbleToConvertACookie() {
434434
435435 String jsonStr = convert (cookie );
436436
437- JsonObject converted = new JsonParser (). parse (jsonStr ).getAsJsonObject ();
437+ JsonObject converted = JsonParser . parseString (jsonStr ).getAsJsonObject ();
438438
439439 assertThat (converted .get ("name" ).getAsString ()).isEqualTo ("name" );
440440 assertThat (converted .get ("value" ).getAsString ()).isEqualTo ("value" );
@@ -474,7 +474,7 @@ public void convertLoggingPreferencesToJson() {
474474
475475 String json = convert (prefs );
476476
477- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
477+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
478478
479479 assertThat (converted .get (BROWSER ).getAsString ()).isEqualTo ("WARNING" );
480480 assertThat (converted .get (CLIENT ).getAsString ()).isEqualTo ("DEBUG" );
@@ -486,7 +486,7 @@ public void convertLoggingPreferencesToJson() {
486486 public void convertsLogEntryToJson () {
487487 String raw = convert (new LogEntry (Level .OFF , 17 , "foo" ));
488488
489- JsonObject converted = new JsonParser (). parse (raw ).getAsJsonObject ();
489+ JsonObject converted = JsonParser . parseString (raw ).getAsJsonObject ();
490490
491491 assertThat (converted .get ("message" ).getAsString ()).isEqualTo ("foo" );
492492 assertThat (converted .get ("timestamp" ).getAsLong ()).isEqualTo (17 );
@@ -502,7 +502,7 @@ public void convertLogEntriesToJson() {
502502
503503 String json = convert (entries );
504504
505- JsonArray converted = new JsonParser (). parse (json ).getAsJsonArray ();
505+ JsonArray converted = JsonParser . parseString (json ).getAsJsonArray ();
506506
507507 JsonObject obj1 = converted .get (0 ).getAsJsonObject ();
508508 JsonObject obj2 = converted .get (1 ).getAsJsonObject ();
@@ -525,7 +525,7 @@ public void shouldBeAbleToConvertACommand() {
525525
526526 String json = convert (command );
527527
528- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
528+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
529529
530530 assertThat (converted .has ("sessionId" )).isTrue ();
531531 JsonPrimitive sid = converted .get ("sessionId" ).getAsJsonPrimitive ();
@@ -546,7 +546,7 @@ public void shouldConvertAUrlToAString() throws MalformedURLException {
546546 Map <String , URL > toConvert = ImmutableMap .of ("url" , url );
547547
548548 String seen = new Json ().toJson (toConvert );
549- JsonObject converted = new JsonParser (). parse (seen ).getAsJsonObject ();
549+ JsonObject converted = JsonParser . parseString (seen ).getAsJsonObject ();
550550
551551 assertThat (converted .get ("url" ).getAsString ()).isEqualTo (url .toExternalForm ());
552552 }
@@ -555,7 +555,7 @@ public void shouldConvertAUrlToAString() throws MalformedURLException {
555555 public void shouldNotIncludePropertiesFromJavaLangObjectOtherThanClass () {
556556 String json = convert (new SimpleBean ());
557557
558- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
558+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
559559
560560 Stream .of (SimplePropertyDescriptor .getPropertyDescriptors (Object .class ))
561561 .filter (pd -> !"class" .equals (pd .getName ()))
@@ -597,7 +597,7 @@ public void shouldAllowValuesToBeStreamedToAnObject() {
597597 public void whenConvertingObjectsContainingClassesDoNotBeNoisy () {
598598 String json = convert (ImmutableMap .of ("thing" , SimpleBean .class ));
599599
600- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
600+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
601601
602602 assertThat (converted .size ()).isEqualTo (1 );
603603 assertThat (converted .getAsJsonPrimitive ("thing" ).getAsString ())
@@ -632,7 +632,7 @@ public void shouldEncodeLogLevelsAsStrings() {
632632 public void shouldNotWriteOptionalFieldsThatAreEmptyInAMap () {
633633 String json = convert (ImmutableMap .of ("there" , Optional .of ("cheese" ), "notThere" , Optional .empty ()));
634634
635- JsonObject converted = new JsonParser (). parse (json ).getAsJsonObject ();
635+ JsonObject converted = JsonParser . parseString (json ).getAsJsonObject ();
636636
637637 assertThat (converted .has ("notThere" )).isFalse ();
638638 assertThat (converted .get ("there" ).getAsString ()).isEqualTo ("cheese" );
@@ -642,12 +642,35 @@ public void shouldNotWriteOptionalFieldsThatAreEmptyInAMap() {
642642 public void shouldNotWriteOptionalsThatAreNotPresentToAList () {
643643 String json = convert (Arrays .asList (Optional .of ("cheese" ), Optional .empty ()));
644644
645- JsonArray converted = new JsonParser (). parse (json ).getAsJsonArray ();
645+ JsonArray converted = JsonParser . parseString (json ).getAsJsonArray ();
646646
647647 assertThat (converted .size ()).isEqualTo (1 );
648648 assertThat (converted .get (0 ).getAsString ()).isEqualTo ("cheese" );
649649 }
650650
651+ @ Test
652+ public void shouldNotWriteOptionalValuesIfOnAnInstanceAndEmpty () {
653+ class WithOptionals {
654+ private final Optional <String > value = Optional .of ("Cheese" );
655+ private final Optional <String > noValue = Optional .empty ();
656+
657+ public Optional <String > getValue () {
658+ return value ;
659+ }
660+
661+ public Optional <String > getNoValue () {
662+ return noValue ;
663+ }
664+ }
665+
666+ String json = convert (new WithOptionals ());
667+
668+ JsonObject obj = JsonParser .parseString (json ).getAsJsonObject ();
669+
670+ assertThat (obj .get ("value" ).getAsString ()).describedAs (json ).isEqualTo ("Cheese" );
671+ assertThat (obj .has ("noValue" )).describedAs (json ).isFalse ();
672+ }
673+
651674 private String convert (Object toConvert ) {
652675 try (Writer writer = new StringWriter ();
653676 JsonOutput jsonOutput = new Json ().newOutput (writer )) {
0 commit comments