/*
* JBoss, Home of Professional Open Source
* Copyright 2015, Red Hat, Inc. and/or its affiliates, and individual
* contributors by the @authors tag. See the copyright.txt in the
* distribution for a full listing of individual contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.as.quickstarts.threadracing.stage.json;
import org.jboss.as.quickstarts.threadracing.Race;
import org.jboss.as.quickstarts.threadracing.stage.RaceStage;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonReader;
import javax.json.JsonWriter;
import java.io.StringReader;
import java.io.StringWriter;
/**
* The JSON 1.0 race stage shows how work with the new API for common use cases: building of a JSON object, writing a JSON object to a string/stream, and reading a JSON object from a string/stream.
*
* @author Eduardo Martins
*/
public class JSONRaceStage implements RaceStage {
@Override
public void run(Race.Registration registration) throws Exception {
// 1. build an object with nested structure
JsonObject jsonObject = Json.createObjectBuilder()
// simple pairs
.add("firstName", "John")
.add("lastName", "Smith")
.add("age", 25)
// nested object
.add("address", Json.createObjectBuilder()
.add("streetAddress", "21 2nd Street")
.add("city", "New York")
.add("state", "NY")
.add("postalCode", "10021"))
// nested object array
.add("phoneNumber", Json.createArrayBuilder()
.add(Json.createObjectBuilder()
.add("type", "home")
.add("number", "212 555-1234"))
.add(Json.createObjectBuilder()
.add("type", "fax")
.add("number", "646 555-4567")))
.build();
// 2. write the object to a string
StringWriter stringWriter = new StringWriter();
try (JsonWriter writer = Json.createWriter(stringWriter)) {
writer.write(jsonObject);
}
String toString = stringWriter.toString();
// 3. read object from the string
JsonObject fromString = null;
try (JsonReader jsonReader = Json.createReader(new StringReader(toString))) {
fromString = jsonReader.readObject();
}
// 4. sanity check :)
if (!jsonObject.equals(fromString)) {
throw new IllegalStateException("json object read from string does not equal the one built");
}
}
}