Example usage for com.fasterxml.jackson.core JsonGenerator writeEndArray

List of usage examples for com.fasterxml.jackson.core JsonGenerator writeEndArray

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonGenerator writeEndArray.

Prototype

public abstract void writeEndArray() throws IOException, JsonGenerationException;

Source Link

Document

Method for writing closing marker of a JSON Array value (character ']'; plus possible white space decoration if pretty-printing is enabled).

Usage

From source file:com.baidubce.services.bmr.BmrClient.java

/**
 * Add steps to a BMR cluster.//from w w  w  . ja  v  a 2s  .com
 *
 * @param request containing the ID of target BMR cluster and several steps to be added.
 * @return The response containing a list of IDs of newly added steps.
 */
public AddStepsResponse addSteps(AddStepsRequest request) {
    checkNotNull(request, "request should not be null.");
    checkNotNull(request.getSteps(), "The parameter steps should not be null.");
    checkStringNotEmpty(request.getClusterId(), "The parameter clusterId should not be null or empty string.");

    StringWriter writer = new StringWriter();
    List<StepConfig> steps = request.getSteps();
    try {
        JsonGenerator jsonGenerator = JsonUtils.jsonGeneratorOf(writer);
        jsonGenerator.writeStartObject();
        jsonGenerator.writeArrayFieldStart("steps");
        for (StepConfig step : steps) {
            jsonGenerator.writeStartObject();
            if (step.getName() != null) {
                jsonGenerator.writeStringField("name", step.getName());
            }
            jsonGenerator.writeStringField("type", step.getType());
            jsonGenerator.writeStringField("actionOnFailure", step.getActionOnFailure());
            jsonGenerator.writeObjectFieldStart("properties");
            for (String propertyKey : step.getProperties().keySet()) {
                jsonGenerator.writeObjectField(propertyKey, step.getProperties().get(propertyKey));
            }
            jsonGenerator.writeEndObject();
            jsonGenerator.writeEndObject();
        }
        jsonGenerator.writeEndArray();
        jsonGenerator.writeEndObject();
        jsonGenerator.close();
    } catch (IOException e) {
        throw new BceClientException("Fail to generate json", e);
    }

    byte[] json = null;
    try {
        json = writer.toString().getBytes(DEFAULT_ENCODING);
    } catch (UnsupportedEncodingException e) {
        throw new BceClientException("Fail to get UTF-8 bytes", e);
    }

    InternalRequest internalRequest = this.createRequest(request, HttpMethodName.POST, CLUSTER,
            request.getClusterId(), STEP);
    internalRequest.addHeader(Headers.CONTENT_LENGTH, String.valueOf(json.length));
    internalRequest.addHeader(Headers.CONTENT_TYPE, "application/json");

    internalRequest.setContent(RestartableInputStream.wrap(json));

    if (request.getClientToken() != null) {
        internalRequest.addParameter("clientToken", request.getClientToken());
    }

    return this.invokeHttpClient(internalRequest, AddStepsResponse.class);
}

From source file:com.strategicgains.hyperexpress.serialization.jackson.HalResourceSerializer.java

private void writeLinks(HalResource resource, boolean isEmbedded, JsonGenerator jgen)
        throws JsonGenerationException, IOException {
    List<Link> links = resource.getLinks();
    List<Namespace> namespaces = resource.getNamespaces();
    if (links.isEmpty() && (isEmbedded || namespaces.isEmpty()))
        return;//from   ww w. jav a 2s  . co  m

    jgen.writeObjectFieldStart(LINKS);
    writeCuries(namespaces, isEmbedded, jgen);

    Map<String, List<HalLink>> linksByRel = indexLinksByRel(resource.getLinks());

    for (Entry<String, List<HalLink>> entry : linksByRel.entrySet()) {
        if (entry.getValue().size() == 1 && !resource.isMultipleLinks(entry.getKey())) // Write single link
        {
            HalLink link = entry.getValue().iterator().next();

            if (null == link.getTemplated()) {
                link.setTemplated(link.hasTemplate() ? true : null);
            }

            jgen.writeObjectField(entry.getKey(), link);
        } else // Write link array
        {
            jgen.writeArrayFieldStart(entry.getKey());

            for (HalLink link : entry.getValue()) {
                if (null == link.getTemplated()) {
                    link.setTemplated(link.hasTemplate() ? true : null);
                }

                jgen.writeObject(link);
            }

            jgen.writeEndArray();
        }

    }

    jgen.writeEndObject();
}

From source file:org.jmxtrans.embedded.output.StackdriverWriter.java

/**
 * Put the values into the JSON format expected by the Stackdriver custom metrics gateway
 *
  * @param results// w  w  w.  j a v  a2 s. c o  m
  *            Iterable collection of data points (gauges and counters)
 * @param out
 *            OutputStream to write JSON to
 * @throws IOException
 */
public void serialize(@Nonnull Iterable<QueryResult> results, @Nonnull OutputStream out) throws IOException {
    JsonGenerator g = jsonFactory.createGenerator(out, JsonEncoding.UTF8);
    g.writeStartObject();
    g.writeNumberField("timestamp", System.currentTimeMillis() / 1000);
    g.writeNumberField("proto_version", STACKDRIVER_PROTOCOL_VERSION);
    g.writeArrayFieldStart("data");

    for (QueryResult metric : results) {
        g.writeStartObject();
        g.writeStringField("name", metric.getName());
        if (instanceId != null && !instanceId.isEmpty()) {
            g.writeStringField("instance", instanceId);
        }
        g.writeNumberField("collected_at", metric.getEpoch(TimeUnit.SECONDS));
        if (metric.getValue() instanceof Integer) {
            g.writeNumberField("value", (Integer) metric.getValue());
        } else if (metric.getValue() instanceof Long) {
            g.writeNumberField("value", (Long) metric.getValue());
        } else if (metric.getValue() instanceof Float) {
            g.writeNumberField("value", (Float) metric.getValue());
        } else if (metric.getValue() instanceof Double) {
            g.writeNumberField("value", (Double) metric.getValue());
        }
        g.writeEndObject();
    }

    g.writeEndArray();
    g.writeEndObject();
    g.flush();
    g.close();
}

From source file:org.apache.olingo.server.core.serializer.json.ODataJsonSerializer.java

private void writeGeoPolygon(JsonGenerator json, final Polygon polygon) throws IOException {
    json.writeStartArray();/*www .jav  a 2 s . co m*/
    writeGeoPoints(json, polygon.getExterior());
    json.writeEndArray();
    for (int i = 0; i < polygon.getNumberOfInteriorRings(); i++) {
        json.writeStartArray();
        writeGeoPoints(json, polygon.getInterior(i));
        json.writeEndArray();
    }
}

From source file:com.msopentech.odatajclient.engine.data.json.DOMTreeUtilsV3.java

/**
 * Serializes DOM content as JSON.//w  w  w  .j a  va 2  s . com
 *
 * @param client OData client.
 * @param jgen JSON generator.
 * @param content content.
 * @param propType whether to output type information in the way needed for property values or not.
 * @throws IOException in case of write error.
 */
public static void writeSubtree(final ODataClient client, final JsonGenerator jgen, final Node content,
        final boolean propType) throws IOException {

    for (Node child : XMLUtils.getChildNodes(content, Node.ELEMENT_NODE)) {
        final String childName = XMLUtils.getSimpleName(child);

        final Node typeAttr = child.getAttributes().getNamedItem(ODataConstants.ATTR_M_TYPE);
        if (typeAttr != null && EdmSimpleType.isGeospatial(typeAttr.getTextContent())) {
            jgen.writeStringField(
                    propType ? ODataConstants.JSON_TYPE : childName + "@" + ODataConstants.JSON_TYPE,
                    typeAttr.getTextContent());

            jgen.writeObjectFieldStart(childName);
            GeospatialJSONHandler.serialize(jgen, (Element) child, typeAttr.getTextContent());
            jgen.writeEndObject();
        } else if (XMLUtils.hasOnlyTextChildNodes(child)) {
            if (child.hasChildNodes()) {
                final String out;
                if (typeAttr == null) {
                    out = child.getChildNodes().item(0).getNodeValue();
                } else {
                    final EdmSimpleType type = EdmSimpleType.fromValue(typeAttr.getTextContent());
                    final ODataPrimitiveValue value = client.getPrimitiveValueBuilder().setType(type)
                            .setText(child.getChildNodes().item(0).getNodeValue()).build();
                    out = value.toString();

                    jgen.writeStringField(childName + "@" + ODataConstants.JSON_TYPE, type.toString());
                }
                jgen.writeStringField(childName, out);
            } else {
                if (child.getAttributes().getNamedItem(ODataConstants.ATTR_NULL) == null) {
                    if (typeAttr != null && EdmSimpleType.String.toString().equals(typeAttr.getTextContent())) {
                        jgen.writeStringField(childName + "@" + ODataConstants.JSON_TYPE,
                                typeAttr.getTextContent());
                        jgen.writeStringField(childName, StringUtils.EMPTY);
                    } else {
                        jgen.writeArrayFieldStart(childName);
                        jgen.writeEndArray();
                    }
                } else {
                    jgen.writeNullField(childName);
                }
            }
        } else {
            if (XMLUtils.hasElementsChildNode(child)) {
                jgen.writeArrayFieldStart(childName);

                for (Node nephew : XMLUtils.getChildNodes(child, Node.ELEMENT_NODE)) {
                    if (XMLUtils.hasOnlyTextChildNodes(nephew)) {
                        jgen.writeString(nephew.getChildNodes().item(0).getNodeValue());
                    } else {
                        jgen.writeStartObject();
                        DOMTreeUtils.writeSubtree(client, jgen, nephew);
                        jgen.writeEndObject();
                    }
                }

                jgen.writeEndArray();
            } else {
                jgen.writeObjectFieldStart(childName);
                if (typeAttr != null) {
                    jgen.writeStringField(ODataConstants.JSON_TYPE, typeAttr.getTextContent());
                }

                DOMTreeUtils.writeSubtree(client, jgen, child);

                jgen.writeEndObject();
            }
        }
    }
}

From source file:com.msopentech.odatajclient.engine.data.json.DOMTreeUtils.java

/**
 * Serializes DOM content as JSON.//w w w.j  av a  2  s  .  c o  m
 *
 * @param jgen JSON generator.
 * @param content content.
 * @param propType whether to output type information in the way needed for property values or not.
 * @throws IOException in case of write error.
 */
public static void writeSubtree(final JsonGenerator jgen, final Node content, final boolean propType)
        throws IOException {

    for (Node child : XMLUtils.getChildNodes(content, Node.ELEMENT_NODE)) {
        final String childName = XMLUtils.getSimpleName(child);

        final Node typeAttr = child.getAttributes().getNamedItem(ODataConstants.ATTR_M_TYPE);
        if (typeAttr != null && EdmSimpleType.isGeospatial(typeAttr.getTextContent())) {
            jgen.writeStringField(
                    propType ? ODataConstants.JSON_TYPE : childName + "@" + ODataConstants.JSON_TYPE,
                    typeAttr.getTextContent());

            jgen.writeObjectFieldStart(childName);
            GeospatialJSONHandler.serialize(jgen, (Element) child, typeAttr.getTextContent());
            jgen.writeEndObject();
        } else if (XMLUtils.hasOnlyTextChildNodes(child)) {
            if (child.hasChildNodes()) {
                final String out;
                if (typeAttr == null) {
                    out = child.getChildNodes().item(0).getNodeValue();
                } else {
                    final EdmSimpleType type = EdmSimpleType.fromValue(typeAttr.getTextContent());
                    final ODataPrimitiveValue value = new ODataPrimitiveValue.Builder().setType(type)
                            .setText(child.getChildNodes().item(0).getNodeValue()).build();
                    out = value.toString();

                    jgen.writeStringField(childName + "@" + ODataConstants.JSON_TYPE, type.toString());
                }
                jgen.writeStringField(childName, out);
            } else {
                if (child.getAttributes().getNamedItem(ODataConstants.ATTR_NULL) == null) {
                    if (typeAttr != null && EdmSimpleType.String.toString().equals(typeAttr.getTextContent())) {
                        jgen.writeStringField(childName + "@" + ODataConstants.JSON_TYPE,
                                typeAttr.getTextContent());
                        jgen.writeStringField(childName, StringUtils.EMPTY);
                    } else {
                        jgen.writeArrayFieldStart(childName);
                        jgen.writeEndArray();
                    }
                } else {
                    jgen.writeNullField(childName);
                }
            }
        } else {
            if (XMLUtils.hasElementsChildNode(child)) {
                jgen.writeArrayFieldStart(childName);

                for (Node nephew : XMLUtils.getChildNodes(child, Node.ELEMENT_NODE)) {
                    if (XMLUtils.hasOnlyTextChildNodes(nephew)) {
                        jgen.writeString(nephew.getChildNodes().item(0).getNodeValue());
                    } else {
                        jgen.writeStartObject();
                        writeSubtree(jgen, nephew);
                        jgen.writeEndObject();
                    }
                }

                jgen.writeEndArray();
            } else {
                jgen.writeObjectFieldStart(childName);
                if (typeAttr != null) {
                    jgen.writeStringField(ODataConstants.JSON_TYPE, typeAttr.getTextContent());
                }

                writeSubtree(jgen, child);

                jgen.writeEndObject();
            }
        }
    }
}

From source file:com.ntsync.shared.RawContact.java

private static void writeAddress(StringBuilder hashValue, JsonGenerator g, List<RawAddressData> list)
        throws IOException {
    if (list != null) {
        g.writeArrayFieldStart(ContactConstants.STRUCTUREDPOSTAL);
        for (RawAddressData listItem : list) {
            g.writeStartObject();/*from  w  ww  .ja  v  a  2 s  .  com*/
            g.writeStringField(ContactConstants.TYPE, String.valueOf(listItem.getType().getVal()));
            writeField(g, ContactConstants.LABEL, listItem.getLabel());

            writeField(g, ContactConstants.STREET, listItem.getStreet());
            writeField(g, ContactConstants.POBOX, listItem.getPobox());
            writeField(g, ContactConstants.POSTCODE, listItem.getPostcode());
            writeField(g, ContactConstants.COUNTRY, listItem.getCountry());
            writeField(g, ContactConstants.CITY, listItem.getCity());
            writeField(g, ContactConstants.REGION, listItem.getRegion());
            writeField(g, ContactConstants.NEIGHBORHOOD, listItem.getNeighborhood());

            if (listItem.isSuperPrimary()) {
                g.writeBooleanField(ContactConstants.SUPERPRIMARY, true);
            }
            if (listItem.isPrimary()) {
                g.writeBooleanField(ContactConstants.PRIMARY, true);
            }
            g.writeEndObject();

            hashValue.append(listItem.getStreet());
            hashValue.append(':');
            hashValue.append(listItem.getType().getVal());
        }
        g.writeEndArray();
    }
}

From source file:org.sfs.nodes.compute.container.GetContainer.java

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();
    aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAuthenticated(httpServerRequest))
            .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateContainerPath())
            .flatMap(new LoadAccountAndContainer(vertxContext))
            .flatMap(new ValidateActionContainerListObjects(httpServerRequest)).flatMap(persistentContainer -> {

                HttpServerResponse httpServerResponse = httpServerRequest.response();

                MultiMap queryParams = httpServerRequest.params();
                MultiMap headerParams = httpServerRequest.headers();

                String format = queryParams.get(FORMAT);
                String accept = headerParams.get(ACCEPT);

                MediaType parsedAccept = null;

                if (equalsIgnoreCase("xml", format)) {
                    parsedAccept = APPLICATION_XML_UTF_8;
                } else if (equalsIgnoreCase("json", format)) {
                    parsedAccept = JSON_UTF_8;
                }/*from www . j  a v a  2  s .c  o m*/

                if (parsedAccept == null) {
                    if (!isNullOrEmpty(accept)) {
                        parsedAccept = parse(accept);
                    }
                }

                if (parsedAccept == null || (!PLAIN_TEXT_UTF_8.is(parsedAccept)
                        && !APPLICATION_XML_UTF_8.is(parsedAccept) && !JSON_UTF_8.equals(parsedAccept))) {
                    parsedAccept = PLAIN_TEXT_UTF_8;
                }

                Observable<Optional<ContainerStats>> oContainerStats;
                boolean hasPrefix = !Strings.isNullOrEmpty(queryParams.get(SfsHttpQueryParams.PREFIX));
                if (hasPrefix) {
                    oContainerStats = just(persistentContainer)
                            .flatMap(new LoadContainerStats(httpServerRequest.vertxContext()))
                            .map(Optional::of);
                } else {
                    oContainerStats = Defer.just(Optional.<ContainerStats>absent());
                }

                Observable<ObjectList> oObjectListing = just(persistentContainer)
                        .flatMap(new ListObjects(httpServerRequest));

                MediaType finalParsedAccept = parsedAccept;
                return combineSinglesDelayError(oContainerStats, oObjectListing,
                        (containerStats, objectList) -> {

                            if (containerStats.isPresent()) {

                                Metadata metadata = persistentContainer.getMetadata();

                                for (String key : metadata.keySet()) {
                                    SortedSet<String> values = metadata.get(key);
                                    if (values != null && !values.isEmpty()) {
                                        httpServerResponse.putHeader(
                                                format("%s%s", X_ADD_CONTAINER_META_PREFIX, key), values);
                                    }
                                }

                                httpServerResponse.putHeader(X_CONTAINER_OBJECT_COUNT,
                                        valueOf(containerStats.get().getObjectCount()));
                                httpServerResponse.putHeader(X_CONTAINER_BYTES_USED,
                                        BigDecimal.valueOf(containerStats.get().getBytesUsed())
                                                .setScale(0, ROUND_HALF_UP).toString());
                            }

                            BufferOutputStream bufferOutputStream = new BufferOutputStream();

                            if (JSON_UTF_8.is(finalParsedAccept)) {

                                try {
                                    JsonFactory jsonFactory = vertxContext.verticle().jsonFactory();
                                    JsonGenerator jg = jsonFactory.createGenerator(bufferOutputStream, UTF8);
                                    jg.writeStartArray();

                                    for (ListedObject listedObject : ordered(objectList.getObjects())) {

                                        jg.writeStartObject();
                                        jg.writeStringField("hash",
                                                base16().lowerCase().encode(listedObject.getEtag()));
                                        jg.writeStringField("last_modified",
                                                toDateTimeString(listedObject.getLastModified()));
                                        jg.writeNumberField("bytes", listedObject.getLength());
                                        jg.writeStringField("content_type", listedObject.getContentType());
                                        jg.writeStringField("name", listedObject.getName());
                                        jg.writeEndObject();
                                    }

                                    jg.writeEndArray();
                                    jg.close();
                                } catch (IOException e) {
                                    throw new RuntimeException(e);
                                }

                            } else if (APPLICATION_XML_UTF_8.is(finalParsedAccept)) {

                                String charset = UTF_8.toString();
                                XMLStreamWriter writer = null;
                                try {
                                    writer = newFactory().createXMLStreamWriter(bufferOutputStream, charset);

                                    writer.writeStartDocument(charset, "1.0");

                                    writer.writeStartElement("container");

                                    writer.writeAttribute("name",
                                            fromPaths(persistentContainer.getId()).containerName().get());

                                    for (ListedObject listedObject : ordered(objectList.getObjects())) {

                                        writer.writeStartElement("object");

                                        writer.writeStartElement("name");
                                        writer.writeCharacters(listedObject.getName());
                                        writer.writeEndElement();

                                        writer.writeStartElement("hash");
                                        writer.writeCharacters(
                                                base16().lowerCase().encode(listedObject.getEtag()));
                                        writer.writeEndElement();

                                        writer.writeStartElement("bytes");
                                        writer.writeCharacters(valueOf(listedObject.getLength()));
                                        writer.writeEndElement();

                                        writer.writeStartElement("content_type");
                                        writer.writeCharacters(listedObject.getContentType());
                                        writer.writeEndElement();

                                        writer.writeStartElement("last_modified");
                                        writer.writeCharacters(
                                                toDateTimeString(listedObject.getLastModified()));
                                        writer.writeEndElement();

                                        writer.writeEndElement();
                                    }

                                    writer.writeEndElement();

                                    writer.writeEndDocument();

                                } catch (XMLStreamException e) {
                                    throw new RuntimeException(e);
                                } finally {
                                    try {
                                        if (writer != null) {
                                            writer.close();
                                        }
                                    } catch (XMLStreamException e) {
                                        LOGGER.warn(e.getLocalizedMessage(), e);
                                    }
                                }

                            } else {
                                String charset = UTF_8.toString();
                                try (OutputStreamWriter outputStreamWriter = new OutputStreamWriter(
                                        bufferOutputStream, charset)) {
                                    for (ListedObject listedObject : ordered(objectList.getObjects())) {
                                        outputStreamWriter.write(listedObject.getName());
                                        outputStreamWriter.write("\n");
                                    }
                                } catch (IOException e) {
                                    throw new RuntimeException(e);
                                }
                            }
                            objectList.clear();
                            return bufferOutputStream;
                        }).flatMap(bufferOutputStream -> {
                            Buffer buffer = bufferOutputStream.toBuffer();
                            httpServerResponse.putHeader(HttpHeaders.CONTENT_TYPE, finalParsedAccept.toString())
                                    .putHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(buffer.length()));
                            return AsyncIO.append(buffer, httpServerRequest.response());
                        });
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {

                }
            }

    );

}

From source file:org.apache.olingo.client.core.serialization.JsonSerializer.java

private void collection(final JsonGenerator jgen, final EdmTypeInfo typeInfo, final ValueType valueType,
        final List<?> value) throws IOException, EdmPrimitiveTypeException {

    jgen.writeStartArray();/* w  ww  .  ja v a 2s  .c  o  m*/

    for (Object item : value) {
        final EdmTypeInfo itemTypeInfo = typeInfo == null ? null
                : new EdmTypeInfo.Builder().setTypeExpression(typeInfo.getFullQualifiedName().toString())
                        .build();
        switch (valueType) {
        case COLLECTION_PRIMITIVE:
            primitiveValue(jgen, itemTypeInfo, item);
            break;

        case COLLECTION_GEOSPATIAL:
            jgen.writeStartObject();
            geoSerializer.serialize(jgen, (Geospatial) item);
            jgen.writeEndObject();
            break;

        case COLLECTION_ENUM:
            jgen.writeString(item.toString());
            break;

        case COLLECTION_COMPLEX:
            final ComplexValue complexItem2 = (ComplexValue) item;
            complexValue(jgen, itemTypeInfo, complexItem2.getValue(), complexItem2);
            break;

        default:
        }
    }

    jgen.writeEndArray();
}

From source file:com.google.openrtb.json.OpenRtbJsonWriter.java

protected void writeDataFields(Data data, JsonGenerator gen) throws IOException {
    if (data.hasId()) {
        gen.writeStringField("id", data.getId());
    }//from   w  ww  .j  a va2  s .c  o m
    if (data.hasName()) {
        gen.writeStringField("name", data.getName());
    }
    if (data.getSegmentCount() != 0) {
        gen.writeArrayFieldStart("segment");
        for (Segment segment : data.getSegmentList()) {
            writeSegment(segment, gen);
        }
        gen.writeEndArray();
    }
}