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.joliciel.jochre.search.highlight.HighlightManagerImpl.java

@Override
public void highlight(Highlighter highlighter, Set<Integer> docIds, Set<String> fields, Writer out) {
    try {/*  ww  w  . j av  a2s.c om*/
        Map<Integer, Set<HighlightTerm>> termMap = highlighter.highlight(docIds, fields);
        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("terms");
            for (HighlightTerm term : termMap.get(docId)) {
                fields.add(term.getField());
                term.toJson(jsonGen, df);
            }
            jsonGen.writeEndArray();

            if (includeText) {
                for (String field : fields) {
                    jsonGen.writeObjectFieldStart("field" + field);
                    Set<HighlightTerm> terms = termMap.get(docId);
                    jsonGen.writeStringField("contents", this.displayHighlights(docId, field, terms));
                    jsonGen.writeEndObject();
                }
            }

            jsonGen.writeEndObject();
        }

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

From source file:com.viridiansoftware.metrics.elasticsearch.ElasticsearchReporter.java

private void reportHistogram(String index, long timestamp, String name, Histogram histogram)
        throws IOException {
    StringWriter writer = new StringWriter();
    JsonGenerator jsonGenerator = jsonFactory.createGenerator(writer);
    jsonGenerator.writeStartObject();//from  www  . j a  va  2  s . co  m
    jsonGenerator.writeNumberField(timestampFieldName, timestamp);
    jsonGenerator.writeStringField("@name", prefixMetricName(name));

    final Snapshot snapshot = histogram.getSnapshot();

    jsonGenerator.writeNumberField("count", histogram.getCount());
    jsonGenerator.writeNumberField("max", convertDuration(snapshot.getMax()));
    jsonGenerator.writeNumberField("mean", convertDuration(snapshot.getMean()));
    jsonGenerator.writeNumberField("min", convertDuration(snapshot.getMin()));
    jsonGenerator.writeNumberField("stddev", convertDuration(snapshot.getStdDev()));
    jsonGenerator.writeNumberField("p50", convertDuration(snapshot.getMedian()));
    jsonGenerator.writeNumberField("p75", convertDuration(snapshot.get75thPercentile()));
    jsonGenerator.writeNumberField("p95", convertDuration(snapshot.get95thPercentile()));
    jsonGenerator.writeNumberField("p98", convertDuration(snapshot.get98thPercentile()));
    jsonGenerator.writeNumberField("p99", convertDuration(snapshot.get99thPercentile()));
    jsonGenerator.writeNumberField("p999", convertDuration(snapshot.get999thPercentile()));

    jsonGenerator.writeEndObject();
    jsonGenerator.flush();
    addReportToBulkRequest(index, MetricElasticsearchTypes.HISTOGRAM, writer.toString());
}

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// ww w  . j  a  v  a  2  s . co  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:com.streamsets.datacollector.http.JMXJsonServlet.java

/**
 * Process a GET request for the specified resource.
 *
 * @param request//from   ww  w . j a  v a  2s .c o m
 *          The servlet request we are processing
 * @param response
 *          The servlet response we are creating
 */
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) {
    try {
        JsonGenerator jg = null;
        String jsonpcb = null;
        PrintWriter writer = null;
        try {
            writer = response.getWriter();

            // "callback" parameter implies JSONP outpout
            jsonpcb = request.getParameter(CALLBACK_PARAM);
            if (jsonpcb != null) {
                response.setContentType("application/javascript; charset=utf8");
                writer.write(jsonpcb + "(");
            } else {
                response.setContentType("application/json; charset=utf8");
            }

            jg = jsonFactory.createGenerator(writer);
            jg.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
            jg.useDefaultPrettyPrinter();
            jg.writeStartObject();

            // query per mbean attribute
            String getmethod = request.getParameter("get");
            if (getmethod != null) {
                String[] splitStrings = getmethod.split("\\:\\:");
                if (splitStrings.length != 2) {
                    jg.writeStringField("result", "ERROR");
                    jg.writeStringField("message", "query format is not as expected.");
                    jg.flush();
                    response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
                    return;
                }
                listBeans(jg, new ObjectName(splitStrings[0]), splitStrings[1], response);
                return;
            }

            // query per mbean
            String qry = request.getParameter("qry");
            if (qry == null) {
                qry = "*:*";
            }
            listBeans(jg, new ObjectName(qry), null, response);
        } finally {
            if (jg != null) {
                jg.close();
            }
            if (jsonpcb != null) {
                writer.write(");");
            }
            if (writer != null) {
                writer.close();
            }
        }
    } catch (IOException e) {

        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    } catch (MalformedObjectNameException e) {

        response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
    }
}

From source file:com.proofpoint.event.client.EventJsonSerializer.java

@Override
public void serialize(T event, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException {
    jsonGenerator.writeStartObject();//  w ww .j a va  2s. c  o  m

    jsonGenerator.writeStringField("type", eventTypeMetadata.getTypeName());

    if (eventTypeMetadata.getUuidField() != null) {
        eventTypeMetadata.getUuidField().writeField(jsonGenerator, event);
    } else {
        jsonGenerator.writeStringField("uuid", UUID.randomUUID().toString());
    }

    if (eventTypeMetadata.getHostField() != null) {
        eventTypeMetadata.getHostField().writeField(jsonGenerator, event);
    } else {
        jsonGenerator.writeStringField("host", hostName);
    }

    if (eventTypeMetadata.getTimestampField() != null) {
        eventTypeMetadata.getTimestampField().writeField(jsonGenerator, event);
    } else {
        jsonGenerator.writeFieldName("timestamp");
        EventDataType.DATETIME.writeFieldValue(jsonGenerator, new DateTime());
    }

    if (eventTypeMetadata.getTraceTokenField() != null) {
        eventTypeMetadata.getTraceTokenField().writeField(jsonGenerator, event);
    } else if (token != null) {
        jsonGenerator.writeFieldName("traceToken");
        EventDataType.STRING.writeFieldValue(jsonGenerator, token);
    }

    jsonGenerator.writeObjectFieldStart("data");
    for (EventFieldMetadata field : eventTypeMetadata.getFields()) {
        field.writeField(jsonGenerator, event);
    }
    jsonGenerator.writeEndObject();

    jsonGenerator.writeEndObject();
    jsonGenerator.flush();
}

From source file:org.h2gis.drivers.geojson.GeoJsonWriteDriver.java

/**
 * Write the spatial table to GeoJSON format.
 *
 * @param progress/*  w  w  w . j  a  v  a 2 s  .com*/
 * @throws SQLException
 */
private void writeGeoJson(ProgressVisitor progress) throws SQLException, IOException {
    FileOutputStream fos = null;
    try {
        fos = new FileOutputStream(fileName);
        // Read Geometry Index and type
        final TableLocation parse = TableLocation.parse(tableName,
                JDBCUtilities.isH2DataBase(connection.getMetaData()));
        List<String> spatialFieldNames = SFSUtilities.getGeometryFields(connection, parse);
        if (spatialFieldNames.isEmpty()) {
            throw new SQLException(String.format("The table %s does not contain a geometry field", tableName));
        }

        // Read table content
        Statement st = connection.createStatement();
        try {
            JsonFactory jsonFactory = new JsonFactory();
            JsonGenerator jsonGenerator = jsonFactory.createGenerator(new BufferedOutputStream(fos),
                    JsonEncoding.UTF8);

            // header of the GeoJSON file
            jsonGenerator.writeStartObject();
            jsonGenerator.writeStringField("type", "FeatureCollection");
            writeCRS(jsonGenerator,
                    SFSUtilities.getAuthorityAndSRID(connection, parse, spatialFieldNames.get(0)));
            jsonGenerator.writeArrayFieldStart("features");

            ResultSet rs = st.executeQuery(String.format("select * from `%s`", tableName));

            try {
                ResultSetMetaData resultSetMetaData = rs.getMetaData();
                int geoFieldIndex = JDBCUtilities.getFieldIndex(resultSetMetaData, spatialFieldNames.get(0));

                cacheMetadata(resultSetMetaData);
                while (rs.next()) {
                    writeFeature(jsonGenerator, rs, geoFieldIndex);
                }
                progress.endStep();
                // footer
                jsonGenerator.writeEndArray();
                jsonGenerator.writeEndObject();
                jsonGenerator.flush();
                jsonGenerator.close();

            } finally {
                rs.close();
            }
        } finally {
            st.close();
        }
    } catch (FileNotFoundException ex) {
        throw new SQLException(ex);

    } finally {
        try {
            if (fos != null) {
                fos.close();
            }
        } catch (IOException ex) {
            throw new SQLException(ex);
        }
    }
}

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

@Override
public void write(@Nonnull Writer writer, @Nonnull Server server, @Nonnull Query query,
        @Nonnull Iterable<Result> results) throws IOException {
    Closer closer = Closer.create();/* w  w w.j  a va 2s.com*/
    try {
        JsonGenerator g = closer.register(jsonFactory.createGenerator(writer));
        g.writeStartObject();
        g.writeArrayFieldStart("counters");
        g.writeEndArray();

        String source = getSource(server);

        g.writeArrayFieldStart("gauges");
        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", SECONDS.convert(result.getEpoch(), 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();
    } catch (Throwable t) {
        throw closer.rethrow(t);
    } finally {
        closer.close();
    }
}

From source file:com.viridiansoftware.metrics.elasticsearch.ElasticsearchReporter.java

private void reportTimer(String index, long timestamp, String name, Timer timer) throws IOException {
    StringWriter writer = new StringWriter();
    JsonGenerator jsonGenerator = jsonFactory.createGenerator(writer);
    jsonGenerator.writeStartObject();//from  w  ww  .j  av  a 2s . c  o  m
    jsonGenerator.writeNumberField(timestampFieldName, timestamp);
    jsonGenerator.writeStringField("@name", prefixMetricName(name));

    final Snapshot snapshot = timer.getSnapshot();

    jsonGenerator.writeNumberField("max", convertDuration(snapshot.getMax()));
    jsonGenerator.writeNumberField("mean", convertDuration(snapshot.getMean()));
    jsonGenerator.writeNumberField("min", convertDuration(snapshot.getMin()));
    jsonGenerator.writeNumberField("stddev", convertDuration(snapshot.getStdDev()));
    jsonGenerator.writeNumberField("p50", convertDuration(snapshot.getMedian()));
    jsonGenerator.writeNumberField("p75", convertDuration(snapshot.get75thPercentile()));
    jsonGenerator.writeNumberField("p95", convertDuration(snapshot.get95thPercentile()));
    jsonGenerator.writeNumberField("p98", convertDuration(snapshot.get98thPercentile()));
    jsonGenerator.writeNumberField("p99", convertDuration(snapshot.get99thPercentile()));
    jsonGenerator.writeNumberField("p999", convertDuration(snapshot.get999thPercentile()));

    jsonGenerator.writeNumberField("count", timer.getCount());
    jsonGenerator.writeNumberField("m1_rate", convertRate(timer.getOneMinuteRate()));
    jsonGenerator.writeNumberField("m5_rate", convertRate(timer.getFiveMinuteRate()));
    jsonGenerator.writeNumberField("m15_rate", convertRate(timer.getFifteenMinuteRate()));
    jsonGenerator.writeNumberField("mean_rate", convertRate(timer.getMeanRate()));

    jsonGenerator.writeEndObject();
    jsonGenerator.flush();
    addReportToBulkRequest(index, MetricElasticsearchTypes.TIMER, writer.toString());
}

From source file:com.buaa.cfs.conf.Configuration.java

/**
 * Writes out all the parameters and their properties (final and resource) to the given {@link Writer} The format of
 * the output would be { "properties" : [ {key1,value1,key1.isFinal,key1.resource}, {key2,value2,
 * key2.isFinal,key2.resource}... ] } It does not output the parameters of the configuration object which is loaded
 * from an input stream.//from  www.java 2s . c om
 *
 * @param out the Writer to write to
 *
 * @throws IOException
 */
public static void dumpConfiguration(Configuration config, Writer out) throws IOException {
    JsonFactory dumpFactory = new JsonFactory();
    JsonGenerator dumpGenerator = dumpFactory.createJsonGenerator(out);
    dumpGenerator.writeStartObject();
    dumpGenerator.writeFieldName("properties");
    dumpGenerator.writeStartArray();
    dumpGenerator.flush();
    synchronized (config) {
        for (Entry<Object, Object> item : config.getProps().entrySet()) {
            dumpGenerator.writeStartObject();
            dumpGenerator.writeStringField("key", (String) item.getKey());
            dumpGenerator.writeStringField("value", config.get((String) item.getKey()));
            dumpGenerator.writeBooleanField("isFinal", config.finalParameters.contains(item.getKey()));
            String[] resources = config.updatingResource.get(item.getKey());
            String resource = UNKNOWN_RESOURCE;
            if (resources != null && resources.length > 0) {
                resource = resources[0];
            }
            dumpGenerator.writeStringField("resource", resource);
            dumpGenerator.writeEndObject();
        }
    }
    dumpGenerator.writeEndArray();
    dumpGenerator.writeEndObject();
    dumpGenerator.flush();
}

From source file:org.talend.dataprep.schema.xls.serialization.XlsxStreamRunnable.java

/**
 * @see Runnable#run()/*from w  w  w.j  a va2  s  .  c o m*/
 */
@Override
public void run() {
    try {
        JsonGenerator generator = jsonFactory.createGenerator(jsonOutput);
        Workbook workbook = StreamingReader.builder() //
                .bufferSize(4096) //
                .rowCacheSize(1) //
                .open(rawContent);
        try {
            Sheet sheet = StringUtils.isEmpty(metadata.getSheetName()) ? //
                    workbook.getSheetAt(0) : workbook.getSheet(metadata.getSheetName());
            generator.writeStartArray();
            for (Row row : sheet) {
                if (limit > 0 && row.getRowNum() > limit) {
                    break;
                }
                if (!XlsSerializer.isHeaderLine(row.getRowNum(), metadata.getRowMetadata().getColumns())) {
                    generator.writeStartObject();
                    // data quality Analyzer doesn't like to not have all columns even if we don't have any values
                    // so create so field with empty value otherwise we get exceptions
                    int i = 0;
                    for (ColumnMetadata columnMetadata : metadata.getRowMetadata().getColumns()) {
                        Cell cell = row.getCell(i);
                        String cellValue = cell == null ? null : cell.getStringCellValue(); // StringUtils.EMPTY
                        generator.writeFieldName(columnMetadata.getId());
                        if (cellValue != null) {
                            generator.writeString(cellValue);
                        } else {
                            generator.writeNull();
                        }
                        i++;
                    }
                    generator.writeEndObject();
                }
            }
            generator.writeEndArray();
            generator.flush();
        } finally {
            workbook.close();
        }
    } catch (Exception e) {
        // Consumer may very well interrupt consumption of stream (in case of limit(n) use for sampling).
        // This is not an issue as consumer is allowed to partially consumes results, it's up to the
        // consumer to ensure data it consumed is consistent.
        LOG.debug("Unable to continue serialization for {}. Skipping remaining content.", metadata.getId(), e);
    } finally {
        try {
            jsonOutput.close();
        } catch (IOException e) {
            LOG.error("Unable to close output", e);
        }
    }
}