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

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

Introduction

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

Prototype

@Override
public abstract void flush() throws IOException;

Source Link

Document

Method called to flush any buffered content to the underlying target (output stream, writer), and to flush the target itself as well.

Usage

From source file:com.googlecode.jmxtrans.model.output.LibratoWriter.java

private void serialize(Server server, Query query, List<Result> results, OutputStream outputStream)
        throws IOException {
    JsonGenerator g = jsonFactory.createGenerator(outputStream, JsonEncoding.UTF8);
    g.writeStartObject();//  w  w w .ja  v  a  2  s .co m
    g.writeArrayFieldStart("counters");
    g.writeEndArray();

    String source = getSource(server);

    g.writeArrayFieldStart("gauges");
    List<String> typeNames = getTypeNames();
    for (Result result : results) {
        Map<String, Object> resultValues = result.getValues();
        for (Map.Entry<String, Object> values : resultValues.entrySet()) {
            if (isNumeric(values.getValue())) {
                g.writeStartObject();
                g.writeStringField("name", KeyUtils.getKeyString(query, result, values, typeNames));
                if (source != null && !source.isEmpty()) {
                    g.writeStringField("source", source);
                }
                g.writeNumberField("measure_time",
                        TimeUnit.SECONDS.convert(result.getEpoch(), TimeUnit.MILLISECONDS));
                Object value = values.getValue();
                if (value instanceof Integer) {
                    g.writeNumberField("value", (Integer) value);
                } else if (value instanceof Long) {
                    g.writeNumberField("value", (Long) value);
                } else if (value instanceof Float) {
                    g.writeNumberField("value", (Float) value);
                } else if (value instanceof Double) {
                    g.writeNumberField("value", (Double) value);
                }
                g.writeEndObject();
            }
        }
    }
    g.writeEndArray();
    g.writeEndObject();
    g.flush();
    g.close();

}

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

public void cue_serialize(@Nonnull Iterable<QueryResult> counters, @Nonnull OutputStream out)
        throws IOException {
    int first = 0;
    long time = 0;
    String myID = null;//w  w  w.  java  2  s  .  c  om
    JsonGenerator g = jsonFactory.createGenerator(out, JsonEncoding.UTF8);

    for (QueryResult counter : counters) {
        if (0 == first) {
            time = counter.getEpoch(TimeUnit.SECONDS);
            myID = counter.getType();
            first = 1;
            g.writeStartObject();
            g.writeStringField("identifier", myID);
            g.writeNumberField("timestamp", time);
            g.writeObjectFieldStart("values");
        }
        if (counter.getValue() instanceof Integer) {
            g.writeNumberField(counter.getName(), (Integer) counter.getValue());
        } else if (counter.getValue() instanceof Long) {
            g.writeNumberField(counter.getName(), (Long) counter.getValue());
        } else if (counter.getValue() instanceof Float) {
            g.writeNumberField(counter.getName(), (Float) counter.getValue());
        } else if (counter.getValue() instanceof Double) {
            g.writeNumberField(counter.getName(), (Double) counter.getValue());
        }
    }
    g.writeEndObject();
    g.writeEndObject();
    g.flush();
    g.close();
}

From source file:com.arpnetworking.logback.serialization.BaseSerializationStrategy.java

/**
 * Complete writing the Steno JSON wrapper.
 *
 * @param event Instance of <code>ILoggingEvent</code>.
 * @param eventName The name of the event.
 * @param contextKeys The <code>List</code> of context keys.
 * @param contextValues The <code>List</code> of context values.
 * @param jsonGenerator <code>JsonGenerator</code> instance.
 * @param objectMapper <code>ObjectMapper</code> instance.
 * @throws IOException If writing JSON fails.
 *//*from   www  . j  a  v a2s  . c o  m*/
// CHECKSTYLE.OFF: NPathComplexity - Many combinations
protected void endStenoWrapper(final ILoggingEvent event, final String eventName,
        final List<String> contextKeys, final List<Object> contextValues, final JsonGenerator jsonGenerator,
        final ObjectMapper objectMapper) throws IOException {

    jsonGenerator.writeObjectFieldStart("context");
    if (_encoder.isInjectContextHost()) {
        jsonGenerator.writeStringField("host", HOST_CONVERTER.convert(event));
    }
    if (_encoder.isInjectContextProcess()) {
        jsonGenerator.writeStringField("processId", PROCESS_CONVERTER.convert(event));
    }
    if (_encoder.isInjectContextThread()) {
        jsonGenerator.writeStringField("threadId", THREAD_CONVERTER.convert(event));
    }
    if (_encoder.isInjectContextLogger()) {
        if (_encoder.isCompressLoggerName()) {
            jsonGenerator.writeStringField("logger", CONDENSED_LOGGER_CONVERTER.convert(event));
        } else {
            jsonGenerator.writeStringField("logger", LOGGER_CONVERTER.convert(event));
        }
    }
    if (_encoder.isInjectContextFile()) {
        jsonGenerator.writeStringField("file", FILE_CONVERTER.convert(event));
    }
    if (_encoder.isInjectContextClass()) {
        jsonGenerator.writeStringField("class", CLASS_CONVERTER.convert(event));
    }
    if (_encoder.isInjectContextMethod()) {
        jsonGenerator.writeStringField("method", METHOD_CONVERTER.convert(event));
    }
    if (_encoder.isInjectContextLine()) {
        jsonGenerator.writeStringField("line", LINE_CONVERTER.convert(event));
    }
    for (final String key : _encoder.getMdcProperties()) {
        final String value = event.getMDCPropertyMap().get(key);
        jsonGenerator.writeStringField(key, value);
    }
    writeKeyValuePairs(contextKeys, contextValues, jsonGenerator, objectMapper);
    jsonGenerator.writeEndObject(); // End 'context' field
    jsonGenerator.writeObjectField("id", createId());
    jsonGenerator.writeObjectField("version", "0");
    jsonGenerator.writeEndObject(); // End log message
    jsonGenerator.writeRaw('\n');
    jsonGenerator.flush();
}

From source file:com.rhfung.P2PDictionary.DataConnection.java

private byte[] GetEntryMetadataAsJson(DataEntry entry) {
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    JsonFactory jsonFactory = new JsonFactory(); // or, for data binding, org.codehaus.jackson.mapper.MappingJsonFactory 
    JsonGenerator jg;
    try {/*from w  ww. j  a v a  2 s . c om*/
        jg = jsonFactory.createJsonGenerator(stream, JsonEncoding.UTF8);
        WriteJSONForEntry(jg, entry);
        jg.flush();
    } catch (JsonGenerationException ex) {
        return new byte[0];

    } catch (IOException e) {
        // TODO Auto-generated catch block
        return new byte[0];
    } // or Stream, Reader

    return stream.toByteArray();
}

From source file:org.graylog.plugins.nats.output.AbstractGelfNatsOutput.java

protected byte[] toGELFMessage(final Message message) throws IOException {
    final HashMap<String, Object> fields = new HashMap<>(message.getFields());

    final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(512);
    final JsonFactory jsonFactory = new JsonFactory();
    final JsonGenerator generator = jsonFactory.createGenerator(outputStream);
    generator.writeStartObject();//from  w w  w.j a va 2 s  .  c o m
    generator.writeStringField("version", "1.1");
    generator.writeStringField("host", (String) fields.remove(Message.FIELD_SOURCE));
    generator.writeStringField("short_message", (String) fields.remove(Message.FIELD_MESSAGE));

    final String fullMessage = (String) fields.remove(Message.FIELD_FULL_MESSAGE);
    if (fullMessage != null) {
        generator.writeStringField("full_message", fullMessage);
    }

    final Object fieldTimeStamp = fields.remove(Message.FIELD_TIMESTAMP);
    final DateTime timestamp;
    if (fieldTimeStamp instanceof DateTime) {
        timestamp = (DateTime) fieldTimeStamp;
    } else {
        timestamp = Tools.nowUTC();
    }
    generator.writeNumberField("timestamp", timestamp.getMillis() / 1000d);

    final Object fieldLevel = fields.remove(Message.FIELD_TIMESTAMP);
    final Integer level = extractLevel(fieldLevel);
    if (level != null) {
        generator.writeNumberField("level", level);
    }

    for (Map.Entry<String, Object> field : fields.entrySet()) {
        final String key = field.getKey();
        final Object value = field.getValue();

        if (value instanceof String) {
            generator.writeStringField(key, (String) value);
        } else if (value instanceof Boolean) {
            generator.writeBooleanField(key, (Boolean) value);
        } else if (value instanceof Integer) {
            generator.writeNumberField(key, (Integer) value);
        } else if (value instanceof Long) {
            generator.writeNumberField(key, (Long) value);
        } else if (value instanceof Float) {
            generator.writeNumberField(key, (Float) value);
        } else if (value instanceof Double) {
            generator.writeNumberField(key, (Double) value);
        } else if (value instanceof BigDecimal) {
            generator.writeNumberField(key, (BigDecimal) value);
        } else if (value == null) {
            generator.writeNullField(key);
        }
    }

    generator.writeStringField("_forwarder_cluster_id", clusterId);
    generator.writeStringField("_forwarder_node_id", nodeId);

    generator.writeEndObject();

    generator.flush();

    return outputStream.toByteArray();
}

From source file:org.neo4j.ontology.server.unmanaged.AnnotationResource.java

@GET
@Produces(MediaType.APPLICATION_JSON)/*from  w  w  w . j  a  v a  2  s  . c o  m*/
@Path("/{userName}")
public Response getAnnotationSets(final @PathParam("userName") String userName,
        final @DefaultValue("0") @QueryParam("objectification") int objectification) {
    StreamingOutput stream = new StreamingOutput() {
        @Override
        public void write(OutputStream os) throws IOException, WebApplicationException {
            Map<Long, List<Long>> associatedDataSets = new HashMap<>();
            Label annotationLabel = DynamicLabel.label("AnnotationSets" + capitalize(userName));

            JsonGenerator jg = objectMapper.getFactory().createGenerator(os, JsonEncoding.UTF8);
            jg.writeStartObject();
            jg.writeFieldName("nodes");

            if (objectification > 0) {
                jg.writeStartObject();
            } else {
                jg.writeStartArray();
            }

            try (Transaction tx = graphDb.beginTx();
                    ResourceIterator<Node> users = graphDb.findNodes(USER, "name", userName)) {
                if (users.hasNext()) {
                    getDirectAnnotationTerms(getAccessibleDataSets(users.next()), associatedDataSets);
                }
                tx.success();
            }

            try (Transaction tx = graphDb.beginTx();
                    ResourceIterator<Node> terms = graphDb.findNodes(annotationLabel)) {
                while (terms.hasNext()) {
                    Node term = terms.next();
                    if (objectification > 0) {
                        jg.writeFieldName(term.getProperty("uri").toString());
                    }
                    if (objectification > 1) {
                        if (associatedDataSets.containsKey(term.getId())) {
                            writeJsonNodeObjectifiedObject(jg, term, annotationLabel,
                                    associatedDataSets.get(term.getId()));
                        } else {
                            writeJsonNodeObjectifiedObject(jg, term, annotationLabel);
                        }
                    } else {
                        if (associatedDataSets.containsKey(term.getId())) {
                            writeJsonNodeObject(jg, term, annotationLabel,
                                    associatedDataSets.get(term.getId()));
                        } else {
                            writeJsonNodeObject(jg, term, annotationLabel);
                        }
                    }
                }
                tx.success();
            }

            if (objectification > 0) {
                jg.writeEndObject();
            } else {
                jg.writeEndArray();
            }
            jg.writeEndObject();
            jg.flush();
            jg.close();
        }
    };

    return Response.ok().entity(stream).type(MediaType.APPLICATION_JSON).build();
}

From source file:org.bedework.carddav.vcard.Card.java

/**
 * @param indent true for pretty//from   w w  w . jav a2s.co  m
 * @param version V4 or V3
 * @return String json value
 * @throws WebdavException
 */
public String outputJson(final boolean indent, final String version) throws WebdavException {
    if (jsonStrForm != null) {
        return jsonStrForm;
    }

    final StringWriter sw = new StringWriter();

    try {
        final JsonGenerator jgen = jsonFactory.createJsonGenerator(sw);

        if (indent) {
            jgen.useDefaultPrettyPrinter();
        }

        jgen.writeStartArray(); // for vcard

        jgen.writeString("vcard");
        jgen.writeStartArray(); // Array of properties

        /* Version should come before anything else. */
        boolean version4 = false;

        if (version != null) {
            version4 = version.equals("4.0");
        } else {
            final Version v = (Version) vcard.getProperty(Property.Id.VERSION);

            if (v != null) {
                version4 = v.equals(Version.VERSION_4_0);
            }
        }

        final Property pversion;

        if (version4) {
            pversion = Version.VERSION_4_0;
        } else {
            pversion = new Version("3.0");
        }

        JsonProperty.addFields(jgen, pversion);

        final Set<String> pnames = VcardDefs.getPropertyNames();

        /* Output known properties first */

        for (final String pname : pnames) {
            if ("VERSION".equals(pname)) {
                continue;
            }

            final List<Property> props = findProperties(pname);

            if (!props.isEmpty()) {
                for (final Property p : props) {
                    JsonProperty.addFields(jgen, p);
                }
            }
        }

        /* Now output any extra unknown properties */

        final List<Property> props = vcard.getProperties();

        if (props != null) {
            for (final Property p : props) {
                if (!pnames.contains(p.getId().toString())) {
                    JsonProperty.addFields(jgen, p);
                }
            }
        }

        jgen.writeEndArray(); // End event properties

        jgen.writeEndArray(); // for vcard

        jgen.flush();
    } catch (final WebdavException wde) {
        throw wde;
    } catch (final Throwable t) {
        throw new WebdavException(t);
    }

    jsonStrForm = sw.toString();

    return jsonStrForm;
}

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

public void serialize(@Nonnull Iterable<QueryResult> counters, @Nonnull Iterable<QueryResult> gauges,
        @Nonnull OutputStream out) throws IOException {
    JsonGenerator g = jsonFactory.createGenerator(out, JsonEncoding.UTF8);
    g.writeStartObject();/*from   w  w  w  .jav a 2  s  .c  om*/
    g.writeArrayFieldStart("counters");

    for (QueryResult counter : counters) {
        g.writeStartObject();
        g.writeStringField("name", counter.getName());
        if (source != null && !source.isEmpty()) {
            g.writeStringField("source", source);
        }
        g.writeNumberField("measure_time", counter.getEpoch(TimeUnit.SECONDS));
        if (counter.getValue() instanceof Integer) {
            g.writeNumberField("value", (Integer) counter.getValue());
        } else if (counter.getValue() instanceof Long) {
            g.writeNumberField("value", (Long) counter.getValue());
        } else if (counter.getValue() instanceof Float) {
            g.writeNumberField("value", (Float) counter.getValue());
        } else if (counter.getValue() instanceof Double) {
            g.writeNumberField("value", (Double) counter.getValue());
        } else if (counter.getValue() instanceof AtomicInteger) {
            g.writeNumberField("value", ((AtomicInteger) counter.getValue()).get());
        } else if (counter.getValue() instanceof AtomicLong) {
            g.writeNumberField("value", ((AtomicLong) counter.getValue()).get());
        }
        g.writeEndObject();
    }
    g.writeEndArray();

    g.writeArrayFieldStart("gauges");

    for (QueryResult gauge : gauges) {
        g.writeStartObject();
        g.writeStringField("name", gauge.getName());
        if (source != null && !source.isEmpty()) {
            g.writeStringField("source", source);
        }
        g.writeNumberField("measure_time", gauge.getEpoch(TimeUnit.SECONDS));
        if (gauge.getValue() instanceof Integer) {
            g.writeNumberField("value", (Integer) gauge.getValue());
        } else if (gauge.getValue() instanceof Long) {
            g.writeNumberField("value", (Long) gauge.getValue());
        } else if (gauge.getValue() instanceof Float) {
            g.writeNumberField("value", (Float) gauge.getValue());
        } else if (gauge.getValue() instanceof Double) {
            g.writeNumberField("value", (Double) gauge.getValue());
        } else if (gauge.getValue() instanceof AtomicInteger) {
            g.writeNumberField("value", ((AtomicInteger) gauge.getValue()).get());
        } else if (gauge.getValue() instanceof AtomicLong) {
            g.writeNumberField("value", ((AtomicLong) gauge.getValue()).get());
        }
        g.writeEndObject();
    }
    g.writeEndArray();
    g.writeEndObject();
    g.flush();
    g.close();
}

From source file:com.joliciel.jochre.search.highlight.HighlightManagerImpl.java

@Override
public void findSnippets(Highlighter highlighter, Set<Integer> docIds, Set<String> fields, Writer out) {
    try {/*from   w w  w .ja v  a2  s  . c  o  m*/
        Map<Integer, Set<HighlightTerm>> termMap = highlighter.highlight(docIds, fields);
        Map<Integer, List<Snippet>> snippetMap = this.findSnippets(docIds, fields, termMap,
                this.getSnippetCount(), this.getSnippetSize());

        JsonFactory jsonFactory = new JsonFactory();
        JsonGenerator jsonGen = jsonFactory.createGenerator(out);

        jsonGen.writeStartObject();

        for (int docId : docIds) {
            Document doc = indexSearcher.doc(docId);
            jsonGen.writeObjectFieldStart(doc.get("id"));
            jsonGen.writeStringField("path", doc.get("path"));
            jsonGen.writeNumberField("docId", docId);

            jsonGen.writeArrayFieldStart("snippets");
            for (Snippet snippet : snippetMap.get(docId)) {
                snippet.toJson(jsonGen, df);
            }
            jsonGen.writeEndArray();

            if (includeText) {
                jsonGen.writeArrayFieldStart("snippetText");
                for (Snippet snippet : snippetMap.get(docId)) {
                    jsonGen.writeStartObject();
                    jsonGen.writeStringField("snippet", this.displaySnippet(docId, snippet));
                    jsonGen.writeEndObject();
                }
                jsonGen.writeEndArray();
            }

            if (includeGraphics) {
                jsonGen.writeArrayFieldStart("snippetGraphics");
                for (Snippet snippet : snippetMap.get(docId)) {
                    jsonGen.writeStartObject();
                    ImageSnippet imageSnippet = this.getImageSnippet(snippet);
                    jsonGen.writeNumberField("left", imageSnippet.getRectangle().getLeft());
                    jsonGen.writeNumberField("top", imageSnippet.getRectangle().getTop());
                    jsonGen.writeNumberField("right", imageSnippet.getRectangle().getRight());
                    jsonGen.writeNumberField("bottom", imageSnippet.getRectangle().getBottom());

                    jsonGen.writeArrayFieldStart("highlights");
                    for (Rectangle highlight : imageSnippet.getHighlights()) {
                        jsonGen.writeStartObject();
                        jsonGen.writeNumberField("left", highlight.getLeft());
                        jsonGen.writeNumberField("top", highlight.getTop());
                        jsonGen.writeNumberField("right", highlight.getRight());
                        jsonGen.writeNumberField("bottom", highlight.getBottom());
                        jsonGen.writeEndObject();
                    }
                    jsonGen.writeEndArray();
                    jsonGen.writeEndObject();
                }
                jsonGen.writeEndArray();
            }
            jsonGen.writeEndObject();
        } // next doc

        jsonGen.writeEndObject();
        jsonGen.flush();
    } catch (IOException ioe) {
        LogUtils.logError(LOG, ioe);
        throw new RuntimeException(ioe);
    }
}

From source file:com.googlecode.jmxtrans.model.output.StackdriverWriter.java

/**
 * Take query results, make a JSON String
 * /* ww w.ja v  a  2s  . c o  m*/
 * @param results List of Result objects
 * @return a String containing a JSON message, or null if there are no values to report
 * 
 * @throws IOException if there is some problem generating the JSON, should be uncommon
 */
private String getGatewayMessage(final List<Result> results) throws IOException {
    int valueCount = 0;
    Writer writer = new StringWriter();
    JsonGenerator g = jsonFactory.createGenerator(writer);
    g.writeStartObject();
    g.writeNumberField("timestamp", System.currentTimeMillis() / 1000);
    g.writeNumberField("proto_version", STACKDRIVER_PROTOCOL_VERSION);
    g.writeArrayFieldStart("data");

    List<String> typeNames = this.getTypeNames();

    for (Result metric : results) {
        Map<String, Object> values = metric.getValues();
        if (values != null) {
            for (Entry<String, Object> entry : values.entrySet()) {
                if (isNumeric(entry.getValue())) {
                    // we have a numeric value, write a value into the message

                    StringBuilder nameBuilder = new StringBuilder();

                    // put the prefix if set
                    if (this.prefix != null) {
                        nameBuilder.append(prefix);
                        nameBuilder.append(".");
                    }

                    // put the class name or its alias if available
                    if (!metric.getKeyAlias().isEmpty()) {
                        nameBuilder.append(metric.getKeyAlias());

                    } else {
                        nameBuilder.append(metric.getClassName());
                    }

                    // Wildcard "typeNames" substitution
                    String typeName = com.googlecode.jmxtrans.model.naming.StringUtils
                            .cleanupStr(TypeNameValuesStringBuilder.getDefaultBuilder().build(typeNames,
                                    metric.getTypeName()));
                    if (typeName != null && typeName.length() > 0) {
                        nameBuilder.append(".");
                        nameBuilder.append(typeName);
                    }

                    // add the attribute name
                    nameBuilder.append(".");
                    nameBuilder.append(metric.getAttributeName());

                    // put the value name if it differs from the attribute name
                    if (!entry.getKey().equals(metric.getAttributeName())) {
                        nameBuilder.append(".");
                        nameBuilder.append(entry.getKey());
                    }

                    // check for Float/Double NaN since these will cause the message validation to fail 
                    if (entry.getValue() instanceof Float && ((Float) entry.getValue()).isNaN()) {
                        logger.info("Metric value for " + nameBuilder.toString() + " is NaN, skipping");
                        continue;
                    }

                    if (entry.getValue() instanceof Double && ((Double) entry.getValue()).isNaN()) {
                        logger.info("Metric value for " + nameBuilder.toString() + " is NaN, skipping");
                        continue;
                    }

                    valueCount++;
                    g.writeStartObject();

                    g.writeStringField("name", nameBuilder.toString());

                    g.writeNumberField("value", Double.valueOf(entry.getValue().toString()));

                    // if the metric is attached to an instance, include that in the message
                    if (instanceId != null && !instanceId.isEmpty()) {
                        g.writeStringField("instance", instanceId);
                    }
                    g.writeNumberField("collected_at", metric.getEpoch() / 1000);
                    g.writeEndObject();
                }
            }
        }
    }

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

    // return the message if there are any values to report
    if (valueCount > 0) {
        return writer.toString();
    } else {
        return null;
    }
}