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:org.canova.api.conf.Configuration.java

/**
 *  Writes out all the parameters and their properties (final and resource) to
 *  the given {@link Writer}//from  w ww .j  a va 2  s .c  om
 *  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.
 * @param out the Writer to write to
 * @throws IOException
 */
public static void dumpConfiguration(Configuration conf, Writer out) throws IOException {
    Configuration config = new Configuration(conf, true);
    config.reloadConfiguration();
    JsonFactory dumpFactory = new JsonFactory();
    JsonGenerator dumpGenerator = dumpFactory.createGenerator(out);
    dumpGenerator.writeStartObject();
    dumpGenerator.writeFieldName("properties");
    dumpGenerator.writeStartArray();
    dumpGenerator.flush();
    for (Map.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()));
        dumpGenerator.writeStringField("resource", config.updatingResource.get(item.getKey()));
        dumpGenerator.writeEndObject();
    }
    dumpGenerator.writeEndArray();
    dumpGenerator.writeEndObject();
    dumpGenerator.flush();
}

From source file:data.DefaultExchanger.java

public void exportData(String dbName, String catalogName, final JsonGenerator generator,
        JdbcTemplate jdbcTemplate) throws IOException {
    generator.writeFieldName(getTable());
    generator.writeStartArray();//from   ww  w  .j ava  2s.  c  o m
    final int[] rowCount = { 0 };
    jdbcTemplate.query(getSelectSql(), new RowCallbackHandler() {
        @Override
        public void processRow(ResultSet rs) throws SQLException {
            try {
                generator.writeStartObject();
                setNode(generator, rs);
                generator.writeEndObject();
                rowCount[0]++;
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    });
    generator.writeEndArray();
    play.Logger.info("exported {{}} {}", rowCount[0], getTable());

    if (hasSequence()) {
        String sequenceName = sequenceName();
        long sequenceValue = 0;
        if (dbName.equalsIgnoreCase("MySQL")) {
            String sql = String.format("SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES "
                    + "WHERE TABLE_SCHEMA = '%s' AND TABLE_NAME = '%s'", catalogName, getTable());
            sequenceValue = jdbcTemplate.queryForObject(sql, Long.class);
        } else if (dbName.equalsIgnoreCase("H2")) {
            sequenceValue = jdbcTemplate.queryForObject("CALL NEXT VALUE FOR " + sequenceName, Long.class);
        }
        generator.writeFieldName(sequenceName);
        generator.writeNumber(sequenceValue);
        play.Logger.info("exported sequence {{}}", sequenceName());
    }
}

From source file:gov.bnl.channelfinder.ChannelsResource.java

/**
 * GET method for retrieving a collection of Channel instances,
 * based on a multi-parameter query specifiying patterns for tags, property values,
 * and channel names to match against./* w  ww. j a  v a 2  s .  c om*/
 *
 * @return HTTP Response
 */
@GET
@Produces({ "application/json" })
public Response query() {
    StringBuffer performance = new StringBuffer();
    long start = System.currentTimeMillis();
    long totalStart = System.currentTimeMillis();
    Client client = ElasticSearchClient.getSearchClient();
    start = System.currentTimeMillis();
    String user = securityContext.getUserPrincipal() != null ? securityContext.getUserPrincipal().getName()
            : "";
    try {
        MultivaluedMap<String, String> parameters = uriInfo.getQueryParameters();
        BoolQueryBuilder qb = boolQuery();
        int size = 10000;
        for (Entry<String, List<String>> parameter : parameters.entrySet()) {
            switch (parameter.getKey()) {
            case "~name":
                for (String value : parameter.getValue()) {
                    DisMaxQueryBuilder nameQuery = disMaxQuery();
                    for (String pattern : value.split("\\|")) {
                        nameQuery.add(wildcardQuery("name", pattern.trim()));
                    }
                    qb.must(nameQuery);
                }
                break;
            case "~tag":
                for (String value : parameter.getValue()) {
                    DisMaxQueryBuilder tagQuery = disMaxQuery();
                    for (String pattern : value.split("\\|")) {
                        tagQuery.add(wildcardQuery("tags.name", pattern.trim()));
                    }
                    qb.must(nestedQuery("tags", tagQuery));
                }
                break;
            case "~size":
                Optional<String> maxSize = parameter.getValue().stream().max((o1, o2) -> {
                    return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
                });
                if (maxSize.isPresent()) {
                    size = Integer.valueOf(maxSize.get());
                }
            default:
                DisMaxQueryBuilder propertyQuery = disMaxQuery();
                for (String value : parameter.getValue()) {
                    for (String pattern : value.split("\\|")) {
                        propertyQuery.add(nestedQuery("properties",
                                boolQuery().must(matchQuery("properties.name", parameter.getKey().trim()))
                                        .must(wildcardQuery("properties.value", pattern.trim()))));
                    }
                }
                qb.must(propertyQuery);
                break;
            }
        }

        performance.append("|prepare:" + (System.currentTimeMillis() - start));
        start = System.currentTimeMillis();
        final SearchResponse qbResult = client.prepareSearch("channelfinder").setQuery(qb).setSize(size)
                .execute().actionGet();
        performance.append(
                "|query:(" + qbResult.getHits().getTotalHits() + ")" + (System.currentTimeMillis() - start));
        start = System.currentTimeMillis();
        final ObjectMapper mapper = new ObjectMapper();
        mapper.addMixIn(XmlProperty.class, OnlyXmlProperty.class);
        mapper.addMixIn(XmlTag.class, OnlyXmlTag.class);
        start = System.currentTimeMillis();

        StreamingOutput stream = new StreamingOutput() {

            @Override
            public void write(OutputStream os) throws IOException, WebApplicationException {
                JsonGenerator jg = mapper.getFactory().createGenerator(os, JsonEncoding.UTF8);
                jg.writeStartArray();
                if (qbResult != null) {
                    for (SearchHit hit : qbResult.getHits()) {
                        jg.writeObject(mapper.readValue(hit.source(), XmlChannel.class));
                        jg.flush();
                    }
                }
                jg.writeEndArray();
                jg.flush();
                jg.close();
            }
        };

        performance.append("|parse:" + (System.currentTimeMillis() - start));
        Response r = Response.ok(stream).build();
        log.info(user + "|" + uriInfo.getPath() + "|GET|OK" + performance.toString() + "|total:"
                + (System.currentTimeMillis() - totalStart) + "|" + r.getStatus() + "|returns "
                + qbResult.getHits().getTotalHits() + " channels");
        //            log.info( qbResult.getHits().getTotalHits() + " " +(System.currentTimeMillis() - totalStart));
        return r;
    } catch (Exception e) {
        return handleException(user, "GET", Response.Status.INTERNAL_SERVER_ERROR, e);
    } finally {
    }
}

From source file:com.castlemock.web.mock.rest.converter.swagger.SwaggerRestDefinitionConverter.java

/**
 * Method used to generate a response body based on a {@link Model} and perhaps related other {@link Model}.
 * @param model The {@link Model} used to generate to the body.
 * @param definitions Other {@link Model} that might be related and required.
 * @param generator generator The {@link JsonGenerator}.
 * @throws IOException//from   w  w  w  . j  a v  a  2 s. c  om
 * @since 1.13
 * @see {@link #generateJsonBody(String, Property, Map, JsonGenerator)}
 */
private void generateJsonBody(final Model model, final Map<String, Model> definitions,
        final JsonGenerator generator) throws IOException {
    generator.writeStartObject();
    if (model instanceof ArrayModel) {
        final ArrayModel arrayModel = (ArrayModel) model;
        final Property item = arrayModel.getItems();
        final int maxItems = getMaxItems(arrayModel.getMaxItems());
        generator.writeStartArray();
        for (int index = 0; index < maxItems; index++) {
            generateJsonBody(item.getName(), item, definitions, generator);
        }
        generator.writeEndArray();
    } else if (model instanceof RefModel) {
        final RefModel refModel = (RefModel) model;
        final String simpleRef = refModel.getSimpleRef();
        final Model subModel = definitions.get(simpleRef);
        generateJsonBody(subModel, definitions, generator);
    }

    if (model.getProperties() != null) {
        for (Map.Entry<String, Property> property : model.getProperties().entrySet()) {
            generateJsonBody(property.getKey(), property.getValue(), definitions, generator);
        }
    }

    generator.writeEndObject();
}

From source file:org.calrissian.mango.json.ser.TupleSerializer.java

@Override
public void serialize(Tuple tuple, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
        throws IOException {
    jsonGenerator.writeStartObject();/*from w  ww .ja  v a2s .  c  o  m*/

    jsonGenerator.writeStringField("key", tuple.getKey());
    Object value = tuple.getValue();
    if (value != null) {
        String type = typeContext.getAlias(value);
        String val_str = typeContext.encode(value);
        jsonGenerator.writeStringField("type", type);
        jsonGenerator.writeStringField("value", val_str);

        jsonGenerator.writeArrayFieldStart("metadata");

        Set<Map.Entry<String, Object>> entries = tuple.getMetadata().entrySet();
        for (Map.Entry<String, Object> objectEntry : entries) {
            jsonGenerator.writeStartObject();
            jsonGenerator.writeObjectField("value", typeContext.encode(objectEntry.getValue()));
            jsonGenerator.writeObjectField("type", typeContext.getAlias(objectEntry.getValue()));
            jsonGenerator.writeObjectField("key", objectEntry.getKey());
            jsonGenerator.writeEndObject();
        }
        jsonGenerator.writeEndArray();

    }

    jsonGenerator.writeEndObject();
}

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

protected void writeNativeRequestFields(NativeRequest req, JsonGenerator gen) throws IOException {
    if (req.hasVer()) {
        gen.writeStringField("ver", req.getVer());
    }/*from  w  w  w . j  ava  2  s.  c  o  m*/
    if (req.hasLayout()) {
        gen.writeNumberField("layout", req.getLayout().getNumber());
    }
    if (req.hasAdunit()) {
        gen.writeNumberField("adunit", req.getAdunit().getNumber());
    }
    if (req.hasPlcmtcnt()) {
        gen.writeNumberField("plcmtcnt", req.getPlcmtcnt());
    }
    if (req.hasSeq()) {
        gen.writeNumberField("seq", req.getSeq());
    }
    if (checkRequired(req.getAssetsCount())) {
        gen.writeArrayFieldStart("assets");
        for (NativeRequest.Asset asset : req.getAssetsList()) {
            writeReqAsset(asset, gen);
        }
        gen.writeEndArray();
    }
    if (req.hasContext()) {
        gen.writeNumberField("context", req.getContext().getNumber());
    }
    if (req.hasContextsubtype()) {
        gen.writeNumberField("contextsubtype", req.getContextsubtype().getNumber());
    }
    if (req.hasPlcmttype()) {
        gen.writeNumberField("plcmttype", req.getPlcmttype().getNumber());
    }
}

From source file:com.cedarsoft.serialization.jackson.AbstractJacksonSerializer.java

protected <T> void serializeArray(@Nonnull Iterable<? extends T> elements, @Nonnull Class<T> type,
        @Nullable String propertyName, @Nonnull JsonGenerator serializeTo, @Nonnull Version formatVersion)
        throws IOException {
    JacksonSerializer<? super T> serializer = getSerializer(type);
    Version delegateVersion = delegatesMappings.getVersionMappings().resolveVersion(type, formatVersion);

    if (propertyName == null) {
        serializeTo.writeStartArray();/* w w  w  .  java  2s  .  com*/
    } else {
        serializeTo.writeArrayFieldStart(propertyName);
    }
    for (T element : elements) {
        if (serializer.isObjectType()) {
            serializeTo.writeStartObject();
        }

        serializer.serialize(serializeTo, element, delegateVersion);

        if (serializer.isObjectType()) {
            serializeTo.writeEndObject();
        }
    }
    serializeTo.writeEndArray();
}

From source file:gov.bnl.channelfinder.TagsResource.java

/**
 * GET method for retrieving the list of tags in the database.
 *
 * @return list of tags/* w ww . ja v a  2s. c  o m*/
 */
@GET
@Produces({ MediaType.APPLICATION_JSON })
public Response list() {
    Client client = getNewClient();
    String user = securityContext.getUserPrincipal() != null ? securityContext.getUserPrincipal().getName()
            : "";
    final ObjectMapper mapper = new ObjectMapper();
    mapper.addMixIn(XmlTag.class, OnlyXmlTag.class);
    try {
        MultivaluedMap<String, String> parameters = uriInfo.getQueryParameters();
        int size = 10000;
        if (parameters.containsKey("~size")) {
            Optional<String> maxSize = parameters.get("~size").stream().max((o1, o2) -> {
                return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
            });
            if (maxSize.isPresent()) {
                size = Integer.valueOf(maxSize.get());
            }

        }
        final SearchResponse response = client.prepareSearch("tags").setTypes("tag")
                .setQuery(new MatchAllQueryBuilder()).setSize(size).execute().actionGet();
        StreamingOutput stream = new StreamingOutput() {
            @Override
            public void write(OutputStream os) throws IOException, WebApplicationException {
                JsonGenerator jg = mapper.getFactory().createGenerator(os, JsonEncoding.UTF8);
                jg.writeStartArray();
                if (response != null) {
                    for (SearchHit hit : response.getHits()) {
                        jg.writeObject(mapper.readValue(hit.source(), XmlTag.class));
                    }
                }
                jg.writeEndArray();
                jg.flush();
                jg.close();
            }
        };
        Response r = Response.ok(stream).build();
        log.fine(user + "|" + uriInfo.getPath() + "|GET|OK|" + r.getStatus() + response.getTook() + "|returns "
                + response.getHits().getTotalHits() + " tags");
        return r;
    } catch (Exception e) {
        return handleException(user, Response.Status.INTERNAL_SERVER_ERROR, e);
    } finally {
        client.close();
    }
}

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

/**
 * @see Runnable#run()//from   w ww . j ava 2  s . c o  m
 */
@Override
public void run() {
    try {

        Workbook workbook = WorkbookFactory.create(rawContent);

        JsonGenerator generator = jsonFactory.createGenerator(jsonOutput);

        // if no sheet name just get the first one (take it easy mate :-) )
        Sheet sheet = isEmpty(metadata.getSheetName()) ? workbook.getSheetAt(0)
                : workbook.getSheet(metadata.getSheetName());

        if (sheet == null) {
            // auto generated sheet name so take care!! "sheet-" + i
            if (StringUtils.startsWith(metadata.getSheetName(), "sheet-")) {
                String sheetNumberStr = StringUtils.removeStart(metadata.getSheetName(), "sheet-");

                sheet = workbook.getSheetAt(Integer.valueOf(sheetNumberStr));
            }
            // still null so use the first one
            if (sheet == null) {
                sheet = workbook.getSheetAt(0);
            }
        }

        generator.writeStartArray();
        List<ColumnMetadata> columns = metadata.getRowMetadata().getColumns();

        serializeColumns(workbook, generator, sheet, columns);

        generator.writeEndArray();
        generator.flush();
    } 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);
        }
    }
}

From source file:net.solarnetwork.web.support.JSONView.java

private void writeJsonValue(JsonGenerator json, String key, Object val, PropertyEditorRegistrar registrar)
        throws JsonGenerationException, IOException {
    if (val instanceof Collection<?> || (val != null && val.getClass().isArray())) {
        Collection<?> col;//from   w  w  w.j av  a 2 s  . co m
        if (val instanceof Collection<?>) {
            col = (Collection<?>) val;
        } else if (!val.getClass().getComponentType().isPrimitive()) {
            col = Arrays.asList((Object[]) val);
        } else {
            // damn you, primitives
            col = getPrimitiveCollection(val);
        }
        if (key != null) {
            json.writeFieldName(key);
        }
        json.writeStartArray();
        for (Object colObj : col) {
            writeJsonValue(json, null, colObj, registrar);
        }

        json.writeEndArray();
    } else if (val instanceof Map<?, ?>) {
        if (key != null) {
            json.writeFieldName(key);
        }
        json.writeStartObject();
        for (Map.Entry<?, ?> me : ((Map<?, ?>) val).entrySet()) {
            Object propName = me.getKey();
            if (propName == null) {
                continue;
            }
            writeJsonValue(json, propName.toString(), me.getValue(), registrar);
        }
        json.writeEndObject();
    } else if (val instanceof Double) {
        if (key == null) {
            json.writeNumber((Double) val);
        } else {
            json.writeNumberField(key, (Double) val);
        }
    } else if (val instanceof Integer) {
        if (key == null) {
            json.writeNumber((Integer) val);
        } else {
            json.writeNumberField(key, (Integer) val);
        }
    } else if (val instanceof Short) {
        if (key == null) {
            json.writeNumber(((Short) val).intValue());
        } else {
            json.writeNumberField(key, ((Short) val).intValue());
        }
    } else if (val instanceof Float) {
        if (key == null) {
            json.writeNumber((Float) val);
        } else {
            json.writeNumberField(key, (Float) val);
        }
    } else if (val instanceof Long) {
        if (key == null) {
            json.writeNumber((Long) val);
        } else {
            json.writeNumberField(key, (Long) val);
        }
    } else if (val instanceof Boolean) {
        if (key == null) {
            json.writeBoolean((Boolean) val);
        } else {
            json.writeBooleanField(key, (Boolean) val);
        }
    } else if (val instanceof String) {
        if (key == null) {
            json.writeString((String) val);
        } else {
            json.writeStringField(key, (String) val);
        }
    } else {
        // create a JSON object from bean properties
        if (getPropertySerializerRegistrar() != null && val != null) {
            // try whole-bean serialization first
            Object o = getPropertySerializerRegistrar().serializeProperty(key, val.getClass(), val, val);
            if (o != val) {
                if (o != null) {
                    writeJsonValue(json, key, o, registrar);
                }
                return;
            }
        }
        generateJavaBeanObject(json, key, val, registrar);
    }
}