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

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

Introduction

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

Prototype

public final void writeObjectFieldStart(String fieldName) throws IOException, JsonGenerationException 

Source Link

Document

Convenience method for outputting a field entry ("member") (that will contain a JSON Object value), and the START_OBJECT marker.

Usage

From source file:com.netflix.hystrix.contrib.sample.stream.HystrixConfigurationJsonStream.java

private static void writeThreadPoolConfigJson(JsonGenerator json, HystrixThreadPoolKey threadPoolKey,
        HystrixThreadPoolConfiguration threadPoolConfig) throws IOException {
    json.writeObjectFieldStart(threadPoolKey.name());
    json.writeNumberField("coreSize", threadPoolConfig.getCoreSize());
    json.writeNumberField("maximumSize", threadPoolConfig.getMaximumSize());
    json.writeNumberField("actualMaximumSize", threadPoolConfig.getActualMaximumSize());
    json.writeNumberField("maxQueueSize", threadPoolConfig.getMaxQueueSize());
    json.writeNumberField("queueRejectionThreshold", threadPoolConfig.getQueueRejectionThreshold());
    json.writeNumberField("keepAliveTimeInMinutes", threadPoolConfig.getKeepAliveTimeInMinutes());
    json.writeBooleanField("allowMaximumSizeToDivergeFromCoreSize",
            threadPoolConfig.getAllowMaximumSizeToDivergeFromCoreSize());
    json.writeNumberField("counterBucketSizeInMilliseconds",
            threadPoolConfig.getRollingCounterBucketSizeInMilliseconds());
    json.writeNumberField("counterBucketCount", threadPoolConfig.getRollingCounterNumberOfBuckets());
    json.writeEndObject();/*  w ww  . j  a  va2 s. c  o m*/
}

From source file:com.netflix.hystrix.contrib.sample.stream.HystrixConfigurationJsonStream.java

private static void writeCommandConfigJson(JsonGenerator json, HystrixCommandKey key,
        HystrixCommandConfiguration commandConfig) throws IOException {
    json.writeObjectFieldStart(key.name());
    json.writeStringField("threadPoolKey", commandConfig.getThreadPoolKey().name());
    json.writeStringField("groupKey", commandConfig.getGroupKey().name());
    json.writeObjectFieldStart("execution");
    HystrixCommandConfiguration.HystrixCommandExecutionConfig executionConfig = commandConfig
            .getExecutionConfig();//w  w  w .j a  v a 2s . c o  m
    json.writeStringField("isolationStrategy", executionConfig.getIsolationStrategy().name());
    json.writeStringField("threadPoolKeyOverride", executionConfig.getThreadPoolKeyOverride());
    json.writeBooleanField("requestCacheEnabled", executionConfig.isRequestCacheEnabled());
    json.writeBooleanField("requestLogEnabled", executionConfig.isRequestLogEnabled());
    json.writeBooleanField("timeoutEnabled", executionConfig.isTimeoutEnabled());
    json.writeBooleanField("fallbackEnabled", executionConfig.isFallbackEnabled());
    json.writeNumberField("timeoutInMilliseconds", executionConfig.getTimeoutInMilliseconds());
    json.writeNumberField("semaphoreSize", executionConfig.getSemaphoreMaxConcurrentRequests());
    json.writeNumberField("fallbackSemaphoreSize", executionConfig.getFallbackMaxConcurrentRequest());
    json.writeBooleanField("threadInterruptOnTimeout", executionConfig.isThreadInterruptOnTimeout());
    json.writeEndObject();
    json.writeObjectFieldStart("metrics");
    HystrixCommandConfiguration.HystrixCommandMetricsConfig metricsConfig = commandConfig.getMetricsConfig();
    json.writeNumberField("healthBucketSizeInMs", metricsConfig.getHealthIntervalInMilliseconds());
    json.writeNumberField("percentileBucketSizeInMilliseconds",
            metricsConfig.getRollingPercentileBucketSizeInMilliseconds());
    json.writeNumberField("percentileBucketCount", metricsConfig.getRollingCounterNumberOfBuckets());
    json.writeBooleanField("percentileEnabled", metricsConfig.isRollingPercentileEnabled());
    json.writeNumberField("counterBucketSizeInMilliseconds",
            metricsConfig.getRollingCounterBucketSizeInMilliseconds());
    json.writeNumberField("counterBucketCount", metricsConfig.getRollingCounterNumberOfBuckets());
    json.writeEndObject();
    json.writeObjectFieldStart("circuitBreaker");
    HystrixCommandConfiguration.HystrixCommandCircuitBreakerConfig circuitBreakerConfig = commandConfig
            .getCircuitBreakerConfig();
    json.writeBooleanField("enabled", circuitBreakerConfig.isEnabled());
    json.writeBooleanField("isForcedOpen", circuitBreakerConfig.isForceOpen());
    json.writeBooleanField("isForcedClosed", circuitBreakerConfig.isForceOpen());
    json.writeNumberField("requestVolumeThreshold", circuitBreakerConfig.getRequestVolumeThreshold());
    json.writeNumberField("errorPercentageThreshold", circuitBreakerConfig.getErrorThresholdPercentage());
    json.writeNumberField("sleepInMilliseconds", circuitBreakerConfig.getSleepWindowInMilliseconds());
    json.writeEndObject();
    json.writeEndObject();
}

From source file:com.netflix.hystrix.contrib.sample.stream.HystrixConfigurationJsonStream.java

public static String convertToString(HystrixConfiguration config) throws IOException {
    StringWriter jsonString = new StringWriter();
    JsonGenerator json = jsonFactory.createGenerator(jsonString);

    json.writeStartObject();/*from  w  w w . ja v a  2  s.co  m*/
    json.writeStringField("type", "HystrixConfig");
    json.writeObjectFieldStart("commands");
    for (Map.Entry<HystrixCommandKey, HystrixCommandConfiguration> entry : config.getCommandConfig()
            .entrySet()) {
        final HystrixCommandKey key = entry.getKey();
        final HystrixCommandConfiguration commandConfig = entry.getValue();
        writeCommandConfigJson(json, key, commandConfig);

    }
    json.writeEndObject();

    json.writeObjectFieldStart("threadpools");
    for (Map.Entry<HystrixThreadPoolKey, HystrixThreadPoolConfiguration> entry : config.getThreadPoolConfig()
            .entrySet()) {
        final HystrixThreadPoolKey threadPoolKey = entry.getKey();
        final HystrixThreadPoolConfiguration threadPoolConfig = entry.getValue();
        writeThreadPoolConfigJson(json, threadPoolKey, threadPoolConfig);
    }
    json.writeEndObject();

    json.writeObjectFieldStart("collapsers");
    for (Map.Entry<HystrixCollapserKey, HystrixCollapserConfiguration> entry : config.getCollapserConfig()
            .entrySet()) {
        final HystrixCollapserKey collapserKey = entry.getKey();
        final HystrixCollapserConfiguration collapserConfig = entry.getValue();
        writeCollapserConfigJson(json, collapserKey, collapserConfig);
    }
    json.writeEndObject();
    json.writeEndObject();
    json.close();

    return jsonString.getBuffer().toString();
}

From source file:com.attribyte.essem.ESReporter.java

/**
 * Generates the ES bulk api "action" command.
 * @param generator The JSON generator.//from   w  w w  . j  a  v  a  2  s  .  c  o m
 * @param objType The object type.
 * @throws IOException
 */
static final void generateAction(final JsonGenerator generator, final String objType) throws IOException {
    generator.writeStartObject();
    generator.writeObjectFieldStart("index");
    generator.writeStringField("_type", objType);
    generator.writeEndObject();
    generator.writeEndObject();
    generator.flush();
}

From source file:com.cedarsoft.couchdb.DesignDocumentsUpdater.java

/**
 * Creates the json content for the design document
 *
 * @return a string containing the json content for this design document
 *
 * @throws IOException//from  ww  w.j  av  a2 s  .  com
 */
public static String createJson(@Nonnull DesignDocument designDocument, @Nullable Revision revision)
        throws IOException {
    //noinspection TypeMayBeWeakened
    StringWriter writer = new StringWriter();
    JsonGenerator generator = new JsonFactory().createJsonGenerator(writer);
    generator.writeStartObject();

    generator.writeStringField("_id", designDocument.getId());
    if (revision != null) {
        generator.writeStringField("_rev", revision.asString());
    }
    generator.writeStringField("language", "javascript");

    generator.writeObjectFieldStart("views");

    for (View view : designDocument.getViews()) {
        generator.writeObjectFieldStart(view.getName());

        generator.writeStringField("map", view.getMappingFunction());
        @Nullable
        String reduceFunction = view.getReduceFunction();
        if (reduceFunction != null) {
            generator.writeStringField("reduce", reduceFunction);
        }
        generator.writeEndObject();
    }

    generator.writeEndObject();
    generator.writeEndObject();
    generator.flush();
    return writer.toString();
}

From source file:org.elasticsearch.client.sniff.HostsSnifferTests.java

private static SniffResponse buildSniffResponse(HostsSniffer.Scheme scheme) throws IOException {
    int numNodes = RandomInts.randomIntBetween(getRandom(), 1, 5);
    List<HttpHost> hosts = new ArrayList<>(numNodes);
    JsonFactory jsonFactory = new JsonFactory();
    StringWriter writer = new StringWriter();
    JsonGenerator generator = jsonFactory.createGenerator(writer);
    generator.writeStartObject();//from   w w w.  j a v a2 s.c  o  m
    if (getRandom().nextBoolean()) {
        generator.writeStringField("cluster_name", "elasticsearch");
    }
    if (getRandom().nextBoolean()) {
        generator.writeObjectFieldStart("bogus_object");
        generator.writeEndObject();
    }
    generator.writeObjectFieldStart("nodes");
    for (int i = 0; i < numNodes; i++) {
        String nodeId = RandomStrings.randomAsciiOfLengthBetween(getRandom(), 5, 10);
        generator.writeObjectFieldStart(nodeId);
        if (getRandom().nextBoolean()) {
            generator.writeObjectFieldStart("bogus_object");
            generator.writeEndObject();
        }
        if (getRandom().nextBoolean()) {
            generator.writeArrayFieldStart("bogus_array");
            generator.writeStartObject();
            generator.writeEndObject();
            generator.writeEndArray();
        }
        boolean isHttpEnabled = rarely() == false;
        if (isHttpEnabled) {
            String host = "host" + i;
            int port = RandomInts.randomIntBetween(getRandom(), 9200, 9299);
            HttpHost httpHost = new HttpHost(host, port, scheme.toString());
            hosts.add(httpHost);
            generator.writeObjectFieldStart("http");
            if (getRandom().nextBoolean()) {
                generator.writeArrayFieldStart("bound_address");
                generator.writeString("[fe80::1]:" + port);
                generator.writeString("[::1]:" + port);
                generator.writeString("127.0.0.1:" + port);
                generator.writeEndArray();
            }
            if (getRandom().nextBoolean()) {
                generator.writeObjectFieldStart("bogus_object");
                generator.writeEndObject();
            }
            generator.writeStringField("publish_address", httpHost.toHostString());
            if (getRandom().nextBoolean()) {
                generator.writeNumberField("max_content_length_in_bytes", 104857600);
            }
            generator.writeEndObject();
        }
        if (getRandom().nextBoolean()) {
            String[] roles = { "master", "data", "ingest" };
            int numRoles = RandomInts.randomIntBetween(getRandom(), 0, 3);
            Set<String> nodeRoles = new HashSet<>(numRoles);
            for (int j = 0; j < numRoles; j++) {
                String role;
                do {
                    role = RandomPicks.randomFrom(getRandom(), roles);
                } while (nodeRoles.add(role) == false);
            }
            generator.writeArrayFieldStart("roles");
            for (String nodeRole : nodeRoles) {
                generator.writeString(nodeRole);
            }
            generator.writeEndArray();
        }
        int numAttributes = RandomInts.randomIntBetween(getRandom(), 0, 3);
        Map<String, String> attributes = new HashMap<>(numAttributes);
        for (int j = 0; j < numAttributes; j++) {
            attributes.put("attr" + j, "value" + j);
        }
        if (numAttributes > 0) {
            generator.writeObjectFieldStart("attributes");
        }
        for (Map.Entry<String, String> entry : attributes.entrySet()) {
            generator.writeStringField(entry.getKey(), entry.getValue());
        }
        if (numAttributes > 0) {
            generator.writeEndObject();
        }
        generator.writeEndObject();
    }
    generator.writeEndObject();
    generator.writeEndObject();
    generator.close();
    return SniffResponse.buildResponse(writer.toString(), hosts);
}

From source file:org.elasticsearch.client.sniff.ElasticsearchHostsSnifferTests.java

private static SniffResponse buildSniffResponse(ElasticsearchHostsSniffer.Scheme scheme) throws IOException {
    int numNodes = RandomNumbers.randomIntBetween(getRandom(), 1, 5);
    List<HttpHost> hosts = new ArrayList<>(numNodes);
    JsonFactory jsonFactory = new JsonFactory();
    StringWriter writer = new StringWriter();
    JsonGenerator generator = jsonFactory.createGenerator(writer);
    generator.writeStartObject();//from   w  ww .ja  v  a  2  s. co m
    if (getRandom().nextBoolean()) {
        generator.writeStringField("cluster_name", "elasticsearch");
    }
    if (getRandom().nextBoolean()) {
        generator.writeObjectFieldStart("bogus_object");
        generator.writeEndObject();
    }
    generator.writeObjectFieldStart("nodes");
    for (int i = 0; i < numNodes; i++) {
        String nodeId = RandomStrings.randomAsciiOfLengthBetween(getRandom(), 5, 10);
        generator.writeObjectFieldStart(nodeId);
        if (getRandom().nextBoolean()) {
            generator.writeObjectFieldStart("bogus_object");
            generator.writeEndObject();
        }
        if (getRandom().nextBoolean()) {
            generator.writeArrayFieldStart("bogus_array");
            generator.writeStartObject();
            generator.writeEndObject();
            generator.writeEndArray();
        }
        boolean isHttpEnabled = rarely() == false;
        if (isHttpEnabled) {
            String host = "host" + i;
            int port = RandomNumbers.randomIntBetween(getRandom(), 9200, 9299);
            HttpHost httpHost = new HttpHost(host, port, scheme.toString());
            hosts.add(httpHost);
            generator.writeObjectFieldStart("http");
            if (getRandom().nextBoolean()) {
                generator.writeArrayFieldStart("bound_address");
                generator.writeString("[fe80::1]:" + port);
                generator.writeString("[::1]:" + port);
                generator.writeString("127.0.0.1:" + port);
                generator.writeEndArray();
            }
            if (getRandom().nextBoolean()) {
                generator.writeObjectFieldStart("bogus_object");
                generator.writeEndObject();
            }
            generator.writeStringField("publish_address", httpHost.toHostString());
            if (getRandom().nextBoolean()) {
                generator.writeNumberField("max_content_length_in_bytes", 104857600);
            }
            generator.writeEndObject();
        }
        if (getRandom().nextBoolean()) {
            String[] roles = { "master", "data", "ingest" };
            int numRoles = RandomNumbers.randomIntBetween(getRandom(), 0, 3);
            Set<String> nodeRoles = new HashSet<>(numRoles);
            for (int j = 0; j < numRoles; j++) {
                String role;
                do {
                    role = RandomPicks.randomFrom(getRandom(), roles);
                } while (nodeRoles.add(role) == false);
            }
            generator.writeArrayFieldStart("roles");
            for (String nodeRole : nodeRoles) {
                generator.writeString(nodeRole);
            }
            generator.writeEndArray();
        }
        int numAttributes = RandomNumbers.randomIntBetween(getRandom(), 0, 3);
        Map<String, String> attributes = new HashMap<>(numAttributes);
        for (int j = 0; j < numAttributes; j++) {
            attributes.put("attr" + j, "value" + j);
        }
        if (numAttributes > 0) {
            generator.writeObjectFieldStart("attributes");
        }
        for (Map.Entry<String, String> entry : attributes.entrySet()) {
            generator.writeStringField(entry.getKey(), entry.getValue());
        }
        if (numAttributes > 0) {
            generator.writeEndObject();
        }
        generator.writeEndObject();
    }
    generator.writeEndObject();
    generator.writeEndObject();
    generator.close();
    return SniffResponse.buildResponse(writer.toString(), hosts);
}

From source file:org.elasticsearch.client.sniff.ElasticsearchNodesSnifferTests.java

private static SniffResponse buildSniffResponse(ElasticsearchNodesSniffer.Scheme scheme) throws IOException {
    int numNodes = RandomNumbers.randomIntBetween(getRandom(), 1, 5);
    List<Node> nodes = new ArrayList<>(numNodes);
    JsonFactory jsonFactory = new JsonFactory();
    StringWriter writer = new StringWriter();
    JsonGenerator generator = jsonFactory.createGenerator(writer);
    generator.writeStartObject();/*from w  w w.j a  va  2  s. c  o m*/
    if (getRandom().nextBoolean()) {
        generator.writeStringField("cluster_name", "elasticsearch");
    }
    if (getRandom().nextBoolean()) {
        generator.writeObjectFieldStart("bogus_object");
        generator.writeEndObject();
    }
    generator.writeObjectFieldStart("nodes");
    for (int i = 0; i < numNodes; i++) {
        String nodeId = RandomStrings.randomAsciiOfLengthBetween(getRandom(), 5, 10);
        String host = "host" + i;
        int port = RandomNumbers.randomIntBetween(getRandom(), 9200, 9299);
        HttpHost publishHost = new HttpHost(host, port, scheme.toString());
        Set<HttpHost> boundHosts = new HashSet<>();
        boundHosts.add(publishHost);

        if (randomBoolean()) {
            int bound = between(1, 5);
            for (int b = 0; b < bound; b++) {
                boundHosts.add(new HttpHost(host + b, port, scheme.toString()));
            }
        }

        int numAttributes = between(0, 5);
        Map<String, List<String>> attributes = new HashMap<>(numAttributes);
        for (int j = 0; j < numAttributes; j++) {
            int numValues = frequently() ? 1 : between(2, 5);
            List<String> values = new ArrayList<>();
            for (int v = 0; v < numValues; v++) {
                values.add(j + "value" + v);
            }
            attributes.put("attr" + j, values);
        }

        Node node = new Node(publishHost, boundHosts, randomAsciiAlphanumOfLength(5),
                randomAsciiAlphanumOfLength(5),
                new Node.Roles(randomBoolean(), randomBoolean(), randomBoolean()), attributes);

        generator.writeObjectFieldStart(nodeId);
        if (getRandom().nextBoolean()) {
            generator.writeObjectFieldStart("bogus_object");
            generator.writeEndObject();
        }
        if (getRandom().nextBoolean()) {
            generator.writeArrayFieldStart("bogus_array");
            generator.writeStartObject();
            generator.writeEndObject();
            generator.writeEndArray();
        }
        boolean isHttpEnabled = rarely() == false;
        if (isHttpEnabled) {
            nodes.add(node);
            generator.writeObjectFieldStart("http");
            generator.writeArrayFieldStart("bound_address");
            for (HttpHost bound : boundHosts) {
                generator.writeString(bound.toHostString());
            }
            generator.writeEndArray();
            if (getRandom().nextBoolean()) {
                generator.writeObjectFieldStart("bogus_object");
                generator.writeEndObject();
            }
            generator.writeStringField("publish_address", publishHost.toHostString());
            if (getRandom().nextBoolean()) {
                generator.writeNumberField("max_content_length_in_bytes", 104857600);
            }
            generator.writeEndObject();
        }

        List<String> roles = Arrays.asList(new String[] { "master", "data", "ingest" });
        Collections.shuffle(roles, getRandom());
        generator.writeArrayFieldStart("roles");
        for (String role : roles) {
            if ("master".equals(role) && node.getRoles().isMasterEligible()) {
                generator.writeString("master");
            }
            if ("data".equals(role) && node.getRoles().isData()) {
                generator.writeString("data");
            }
            if ("ingest".equals(role) && node.getRoles().isIngest()) {
                generator.writeString("ingest");
            }
        }
        generator.writeEndArray();

        generator.writeFieldName("version");
        generator.writeString(node.getVersion());
        generator.writeFieldName("name");
        generator.writeString(node.getName());

        if (numAttributes > 0) {
            generator.writeObjectFieldStart("attributes");
            for (Map.Entry<String, List<String>> entry : attributes.entrySet()) {
                if (entry.getValue().size() == 1) {
                    generator.writeStringField(entry.getKey(), entry.getValue().get(0));
                } else {
                    for (int v = 0; v < entry.getValue().size(); v++) {
                        generator.writeStringField(entry.getKey() + "." + v, entry.getValue().get(v));
                    }
                }
            }
            generator.writeEndObject();
        }
        generator.writeEndObject();
    }
    generator.writeEndObject();
    generator.writeEndObject();
    generator.close();
    return SniffResponse.buildResponse(writer.toString(), nodes);
}

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

private static byte[] createHeader(SyncAnchor syncAnchor, String pkgVersion, String clientId,
        String pwdSaltHexStr, Map<Long, String> newIdMap, boolean syncOnlyGroup, Restrictions restr,
        boolean explizitPhotoSave) throws HeaderCreateException {

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    try {//ww  w.  ja  v  a2 s . com
        JsonGenerator g = getJsonFactory().createGenerator(out);

        g.writeStartObject();

        g.writeObjectFieldStart(CLIENT_FIELD_NAME);

        g.writeObjectFieldStart(PARAM_SYNC_ANCHOR);
        for (Byte contType : syncAnchor.containers()) {
            long anchor = syncAnchor.getAnchor(contType);
            if (anchor > 0) {
                String type = String.valueOf((char) contType.byteValue());
                g.writeNumberField(type, anchor);
            }
        }
        g.writeEndObject();

        if (syncOnlyGroup) {
            LOG.info("Sync only ContactGroups");
            g.writeBooleanField(PARAM_SYNCONLYGROUP, true);
        }

        g.writeStringField(FIELD_SOFTWARE, "Android|" + pkgVersion);

        // Set ClientId
        if (clientId != null) {
            g.writeStringField(PARAM_CLIENTID, clientId);
        }

        if (restr != null) {
            g.writeBooleanField(PARAM_IS_PHOTO_SYNC_ENABLED, restr.isPhotoSyncSupported());
        }

        if (explizitPhotoSave) {
            g.writeBooleanField(PARAM_FORCE_PHOTO_SAVE, true);
        }

        // Set PwdSalt
        if (pwdSaltHexStr != null) {
            g.writeStringField(FIELD_PWDSALT, pwdSaltHexStr);
        }

        if (newIdMap != null && !newIdMap.isEmpty()) {
            g.writeObjectFieldStart(TAG_CONTACTIDS);
            for (Map.Entry<Long, String> idRow : newIdMap.entrySet()) {
                String serverId = idRow.getValue();
                if (serverId != null && serverId.length() > 0) {
                    g.writeStringField(String.valueOf(idRow.getKey()), serverId);
                }
            }
            g.writeEndObject();
        }
        g.writeEndObject();
        g.writeEndObject();
        g.close();
    } catch (IOException ex) {
        throw new HeaderCreateException(ex);
    }

    return out.toByteArray();
}

From source file:eionet.meta.exports.json.VocabularyJSONOutputHelper.java

/**
 * Writes JSON to output stream./*from  ww w  . j a v  a2 s .c om*/
 * <p>
 * NOTE: For readability purposes, nested blocks are used in this method while generating json contents.
 * </p>
 *
 * @param out
 *            output stream
 * @param vocabulary
 *            vocabulary base uri
 * @param concepts
 *            list of vocabulary concepts
 * @param language
 *            language for the preferred label
 * @throws java.io.IOException
 *             if error in I/O
 */
public static void writeJSON(OutputStream out, VocabularyFolder vocabulary, List<VocabularyConcept> concepts,
        String language) throws IOException {
    OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8");

    JsonFactory f = new JsonFactory();
    JsonGenerator generator = f.createGenerator(out);
    generator.useDefaultPrettyPrinter();

    language = StringUtils.trimToNull(language);
    boolean checkLanguage = StringUtils.isNotBlank(language);

    List<String> relationalDataElemIdentifiers = new ArrayList<String>();
    relationalDataElemIdentifiers.add(BROADER);
    relationalDataElemIdentifiers.add(NARROWER);

    // start json object
    generator.writeStartObject();
    // add context
    generator.writeObjectFieldStart(JSON_LD_CONTEXT);
    {
        generator.writeStringField(JSON_LD_BASE, VocabularyFolder.getBaseUri(vocabulary));
        generator.writeStringField(VocabularyOutputHelper.LinkedDataNamespaces.SKOS,
                VocabularyOutputHelper.LinkedDataNamespaces.SKOS_NS);
        generator.writeStringField(JSON_LD_CONCEPTS, SKOS_CONCEPT);
        generator.writeStringField(PREF_LABEL, SKOS_PREF_LABEL);
        for (String dataElemShortIdentifier : relationalDataElemIdentifiers) {
            generator.writeStringField(dataElemShortIdentifier, DATA_ELEM_MAP.get(dataElemShortIdentifier));
        }
        generator.writeStringField(JSON_LD_LANGUAGE,
                StringUtils.isNotBlank(language) ? language : DEFAULT_LANGUAGE);
    }
    generator.writeEndObject();
    // start writing concepts...
    generator.writeArrayFieldStart(JSON_LD_CONCEPTS);
    // iterate on concepts
    for (VocabularyConcept concept : concepts) {
        generator.writeStartObject();
        {
            generator.writeStringField(JSON_LD_ID, concept.getIdentifier());
            generator.writeStringField(JSON_LD_TYPE, SKOS_CONCEPT);
            // start writing prefLabels
            generator.writeArrayFieldStart(PREF_LABEL);
            {
                String label;
                String labelLang;
                if (checkLanguage) {
                    List<DataElement> dataElementValuesByNameAndLang = VocabularyOutputHelper
                            .getDataElementValuesByNameAndLang(SKOS_PREF_LABEL, language,
                                    concept.getElementAttributes());
                    if (dataElementValuesByNameAndLang != null && dataElementValuesByNameAndLang.size() > 0) {
                        label = dataElementValuesByNameAndLang.get(0).getAttributeValue();
                        labelLang = language;
                    } else {
                        dataElementValuesByNameAndLang = VocabularyOutputHelper
                                .getDataElementValuesByNameAndLang(SKOS_PREF_LABEL, DEFAULT_LANGUAGE,
                                        concept.getElementAttributes());
                        if (dataElementValuesByNameAndLang != null
                                && dataElementValuesByNameAndLang.size() > 0) {
                            label = dataElementValuesByNameAndLang.get(0).getAttributeValue();
                        } else {
                            label = concept.getLabel();
                        }
                        labelLang = DEFAULT_LANGUAGE;
                    }
                    generator.writeStartObject();
                    {
                        generator.writeStringField(JSON_LD_VALUE, label);
                        generator.writeStringField(JSON_LD_LANGUAGE, labelLang);
                    }
                    generator.writeEndObject();
                } else {
                    generator.writeStartObject();
                    {
                        generator.writeStringField(JSON_LD_VALUE, concept.getLabel());
                        generator.writeStringField(JSON_LD_LANGUAGE, DEFAULT_LANGUAGE);
                    }
                    generator.writeEndObject();
                    List<DataElement> dataElementValuesByName = VocabularyOutputHelper
                            .getDataElementValuesByName(SKOS_PREF_LABEL, concept.getElementAttributes());
                    if (dataElementValuesByName != null && dataElementValuesByName.size() > 0) {
                        for (DataElement elem : dataElementValuesByName) {
                            generator.writeStartObject();
                            {
                                generator.writeStringField(JSON_LD_VALUE, elem.getAttributeValue());
                                generator.writeStringField(JSON_LD_LANGUAGE, elem.getAttributeLanguage());
                            }
                            generator.writeEndObject();
                        }
                    }
                }
            }
            // end writing prefLabels
            generator.writeEndArray();
            // write data elements
            for (String shortDataElemIdentifier : relationalDataElemIdentifiers) {
                // check if it has this element
                List<DataElement> dataElementValuesByName = VocabularyOutputHelper.getDataElementValuesByName(
                        DATA_ELEM_MAP.get(shortDataElemIdentifier), concept.getElementAttributes());
                if (dataElementValuesByName != null && dataElementValuesByName.size() > 0) {
                    // start writing element values
                    generator.writeArrayFieldStart(shortDataElemIdentifier);
                    for (DataElement elem : dataElementValuesByName) {
                        generator.writeStartObject();
                        {
                            generator.writeStringField(JSON_LD_ID, elem.getRelatedConceptIdentifier());
                        }
                        generator.writeEndObject();
                    }
                    // end writing element values
                    generator.writeEndArray();
                }
            }
        }
        // end writing concept
        generator.writeEndObject();
    } // end of iteration on concepts
    generator.writeEndArray();
    // end of vocabulary name
    generator.writeEndObject();

    // close writer and stream
    generator.close();
    osw.close();
}