Refactor PersonWriter

This commit is contained in:
pivovarit 2017-01-17 06:38:31 +01:00
parent e17dd32c49
commit ffd8963fd5

View File

@ -1,5 +1,7 @@
package com.baeldung.json; package com.baeldung.json;
import javax.json.*;
import javax.json.stream.JsonGenerator;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter; import java.io.StringWriter;
import java.io.Writer; import java.io.Writer;
@ -7,50 +9,42 @@ import java.text.SimpleDateFormat;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.json.Json;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.json.JsonWriterFactory;
import javax.json.stream.JsonGenerator;
public class PersonWriter { public class PersonWriter {
private Person person; private Person person;
private SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); private SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
public PersonWriter(Person person) { public PersonWriter(Person person) {
this.person = person; this.person = person;
} }
public String write() throws IOException { public String write() throws IOException {
JsonObjectBuilder objectBuilder = Json.createObjectBuilder() JsonObjectBuilder objectBuilder = Json
.add("firstName", person.getFirstName()) .createObjectBuilder()
.add("lastName", person.getLastName()) .add("firstName", person.getFirstName())
.add("birthdate", dateFormat.format(person.getBirthdate())); .add("lastName", person.getLastName())
.add("birthdate", dateFormat.format(person.getBirthdate()));
JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();
final JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();
for(String email : person.getEmails()) {
arrayBuilder.add(email); person.getEmails().forEach(arrayBuilder::add);
}
objectBuilder.add("emails", arrayBuilder); objectBuilder.add("emails", arrayBuilder);
JsonObject jsonObject = objectBuilder.build(); JsonObject jsonObject = objectBuilder.build();
JsonWriterFactory writerFactory = createWriterFactory(); JsonWriterFactory writerFactory = createWriterFactory();
String jsonString = writeToString(jsonObject, writerFactory); return writeToString(jsonObject, writerFactory);
return jsonString;
} }
private String writeToString(JsonObject jsonObject, JsonWriterFactory writerFactory) throws IOException { private String writeToString(JsonObject jsonObject, JsonWriterFactory writerFactory) throws IOException {
String jsonString; String jsonString;
try(Writer writer = new StringWriter()) { try (Writer writer = new StringWriter()) {
writerFactory.createWriter(writer).write(jsonObject); writerFactory
.createWriter(writer)
.write(jsonObject);
jsonString = writer.toString(); jsonString = writer.toString();
} }
return jsonString; return jsonString;
@ -60,8 +54,7 @@ public class PersonWriter {
Map<String, Boolean> config = new HashMap<>(); Map<String, Boolean> config = new HashMap<>();
config.put(JsonGenerator.PRETTY_PRINTING, true); config.put(JsonGenerator.PRETTY_PRINTING, true);
JsonWriterFactory writerFactory = Json.createWriterFactory(config); return Json.createWriterFactory(config);
return writerFactory;
} }
} }