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

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

Introduction

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

Prototype

public abstract void writeStartObject() throws IOException, JsonGenerationException;

Source Link

Document

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

Usage

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

static final void generateHistogram(final JsonGenerator generator,
        final ReportProtos.EssemReport.Histogram histogram, final String application, final String host,
        final String instance, final long timestamp) throws IOException {

    generator.writeStartObject();
    writeStringField(generator, Fields.APPLICATION_FIELD, application);
    writeStringField(generator, Fields.HOST_FIELD, host);
    writeStringField(generator, Fields.INSTANCE_FIELD, instance);
    writeStringField(generator, Fields.NAME_FIELD, histogram.getName().trim());
    generator.writeNumberField(Fields.COUNT_FIELD, histogram.getCount());
    generator.writeNumberField(Fields.MAX_FIELD, histogram.getMax());
    generator.writeNumberField(Fields.MIN_FIELD, histogram.getMin());
    generator.writeNumberField(Fields.MEAN_FIELD, histogram.getMean());
    generator.writeNumberField(Fields.P50_FIELD, histogram.getMedian());
    generator.writeNumberField(Fields.P75_FIELD, histogram.getPercentile75());
    generator.writeNumberField(Fields.P95_FIELD, histogram.getPercentile95());
    generator.writeNumberField(Fields.P98_FIELD, histogram.getPercentile98());
    generator.writeNumberField(Fields.P99_FIELD, histogram.getPercentile99());
    generator.writeNumberField(Fields.P999_FIELD, histogram.getPercentile999());
    generator.writeNumberField(Fields.STD_FIELD, histogram.getStd());
    generator.writeNumberField(Fields.TIMESTAMP_FIELD, timestamp);
    generator.writeEndObject();/*  w w  w  .  jav a 2s. c om*/
    generator.flush();
}

From source file:com.netflix.hystrix.serial.SerialHystrixDashboardData.java

private static void writeCollapserMetrics(final HystrixCollapserMetrics collapserMetrics, JsonGenerator json)
        throws IOException {
    HystrixCollapserKey key = collapserMetrics.getCollapserKey();

    json.writeStartObject();

    json.writeStringField("type", "HystrixCollapser");
    json.writeStringField("name", key.name());
    json.writeNumberField("currentTime", System.currentTimeMillis());

    safelyWriteNumberField(json, "rollingCountRequestsBatched", new Func0<Long>() {
        @Override//  ww  w . j a  v a 2 s  . c om
        public Long call() {
            return collapserMetrics.getRollingCount(HystrixEventType.Collapser.ADDED_TO_BATCH);
        }
    });
    safelyWriteNumberField(json, "rollingCountBatches", new Func0<Long>() {
        @Override
        public Long call() {
            return collapserMetrics.getRollingCount(HystrixEventType.Collapser.BATCH_EXECUTED);
        }
    });
    safelyWriteNumberField(json, "rollingCountResponsesFromCache", new Func0<Long>() {
        @Override
        public Long call() {
            return collapserMetrics.getRollingCount(HystrixEventType.Collapser.RESPONSE_FROM_CACHE);
        }
    });

    // batch size percentiles
    json.writeNumberField("batchSize_mean", collapserMetrics.getBatchSizeMean());
    json.writeObjectFieldStart("batchSize");
    json.writeNumberField("25", collapserMetrics.getBatchSizePercentile(25));
    json.writeNumberField("50", collapserMetrics.getBatchSizePercentile(50));
    json.writeNumberField("75", collapserMetrics.getBatchSizePercentile(75));
    json.writeNumberField("90", collapserMetrics.getBatchSizePercentile(90));
    json.writeNumberField("95", collapserMetrics.getBatchSizePercentile(95));
    json.writeNumberField("99", collapserMetrics.getBatchSizePercentile(99));
    json.writeNumberField("99.5", collapserMetrics.getBatchSizePercentile(99.5));
    json.writeNumberField("100", collapserMetrics.getBatchSizePercentile(100));
    json.writeEndObject();

    // shard size percentiles (commented-out for now)
    //json.writeNumberField("shardSize_mean", collapserMetrics.getShardSizeMean());
    //json.writeObjectFieldStart("shardSize");
    //json.writeNumberField("25", collapserMetrics.getShardSizePercentile(25));
    //json.writeNumberField("50", collapserMetrics.getShardSizePercentile(50));
    //json.writeNumberField("75", collapserMetrics.getShardSizePercentile(75));
    //json.writeNumberField("90", collapserMetrics.getShardSizePercentile(90));
    //json.writeNumberField("95", collapserMetrics.getShardSizePercentile(95));
    //json.writeNumberField("99", collapserMetrics.getShardSizePercentile(99));
    //json.writeNumberField("99.5", collapserMetrics.getShardSizePercentile(99.5));
    //json.writeNumberField("100", collapserMetrics.getShardSizePercentile(100));
    //json.writeEndObject();

    //json.writeNumberField("propertyValue_metricsRollingStatisticalWindowInMilliseconds", collapserMetrics.getProperties().metricsRollingStatisticalWindowInMilliseconds().get());
    json.writeBooleanField("propertyValue_requestCacheEnabled",
            collapserMetrics.getProperties().requestCacheEnabled().get());
    json.writeNumberField("propertyValue_maxRequestsInBatch",
            collapserMetrics.getProperties().maxRequestsInBatch().get());
    json.writeNumberField("propertyValue_timerDelayInMilliseconds",
            collapserMetrics.getProperties().timerDelayInMilliseconds().get());

    json.writeNumberField("reportingHosts", 1); // this will get summed across all instances in a cluster

    json.writeEndObject();
}

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 {// w  w  w  .  java  2s  . c  o  m
        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:com.baasbox.configuration.PropertiesConfigurationHelper.java

/***
 *
 * Returns a json representation of the Enumerator
 * The Enumerator must implements the IProperties interface
 * @param en    the Enumerator to serialize. It must implements the IProperties interface
 * @return       the representation of the Enumerator 
 *///from  w ww .  j a va 2 s.com
@SuppressWarnings("unchecked")
public static String dumpConfigurationAsJson(String section) {
    Class en = CONFIGURATION_SECTIONS.get(section);
    try {
        JsonFactory jfactory = new JsonFactory();
        StringWriter sw = new StringWriter();
        String enumDescription = "";
        JsonGenerator gen = jfactory.createJsonGenerator(sw);

        Method getEnumDescription = en.getMethod("getEnumDescription");
        if (getEnumDescription != null && getEnumDescription.getReturnType() == String.class
                && Modifier.isStatic(getEnumDescription.getModifiers()))
            enumDescription = (String) getEnumDescription.invoke(null);
        gen.writeStartObject(); //{
        gen.writeStringField("section", section); //    "configuration":"EnumName"
        gen.writeStringField("description", enumDescription); //   ,"description": "EnumDescription"
        gen.writeFieldName("sub sections"); //  ,"sections":
        gen.writeStartObject(); //      {
        String lastSection = "";
        EnumSet values = EnumSet.allOf(en);
        for (Object v : values) {
            String key = (String) (en.getMethod("getKey")).invoke(v);
            boolean isVisible = (Boolean) (en.getMethod("isVisible")).invoke(v);
            String valueAsString;
            if (isVisible)
                valueAsString = (String) (en.getMethod("getValueAsString")).invoke(v);
            else
                valueAsString = "--HIDDEN--";
            boolean isEditable = (Boolean) (en.getMethod("isEditable")).invoke(v);
            String valueDescription = (String) (en.getMethod("getValueDescription")).invoke(v);
            Class type = (Class) en.getMethod("getType").invoke(v);
            String subsection = key.substring(0, key.indexOf('.'));
            if (!lastSection.equals(subsection)) {
                if (gen.getOutputContext().inArray())
                    gen.writeEndArray();
                gen.writeFieldName(subsection); //         "sectionName":
                gen.writeStartArray(); //            [
                lastSection = subsection;
            }
            boolean isOverridden = (Boolean) (en.getMethod("isOverridden")).invoke(v);
            gen.writeStartObject(); //               {
            gen.writeStringField(key, valueAsString); //                     "key": "value"   
            gen.writeStringField("description", valueDescription); //                  ,"description":"description"
            gen.writeStringField("type", type.getSimpleName()); //                  ,"type":"type"
            gen.writeBooleanField("editable", isEditable); //                  ,"editable":"true|false"
            gen.writeBooleanField("visible", isVisible); //                  ,"visible":"true|false"
            gen.writeBooleanField("overridden", isOverridden); //                  ,"overridden":"true|false"
            gen.writeEndObject(); //               }
        }
        if (gen.getOutputContext().inArray())
            gen.writeEndArray(); //            ]
        gen.writeEndObject(); //      }
        gen.writeEndObject(); //}
        gen.close();
        return sw.toString();
    } catch (Exception e) {
        BaasBoxLogger.error("Cannot generate a json for " + en.getSimpleName()
                + " Enum. Is it an Enum that implements the IProperties interface?", e);
    }
    return "{}";
}

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

/**
 * Writes JSON to output stream.//ww  w  . j a va2 s .  co m
 * <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();
}

From source file:com.meetingninja.csse.database.UserDatabaseAdapter.java

/**
 * Registers a passed in User and returns that user with an assigned UserID
 *
 * @param registerMe//from www .jav  a  2  s.c  o  m
 * @param password
 * @return the passed-in user with an assigned ID by the server
 * @throws Exception
 */
public static User register(User registerMe, String password) throws Exception {
    // Server URL setup
    String _url = getBaseUri().build().toString();

    // Establish connection
    URL url = new URL(_url);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    // add request header
    conn.setRequestMethod(IRequest.POST);
    addRequestHeader(conn, true);

    // prepare POST payload
    ByteArrayOutputStream json = new ByteArrayOutputStream();
    // this type of print stream allows us to get a string easily
    PrintStream ps = new PrintStream(json);
    // Create a generator to build the JSON string
    JsonGenerator jgen = JFACTORY.createGenerator(ps, JsonEncoding.UTF8);

    password = Utilities.computeHash(password);
    // Build JSON Object
    jgen.writeStartObject();
    jgen.writeStringField(Keys.User.NAME, registerMe.getDisplayName());
    jgen.writeStringField("password", password);
    jgen.writeStringField(Keys.User.EMAIL, registerMe.getEmail());
    jgen.writeStringField(Keys.User.PHONE, registerMe.getPhone());
    jgen.writeStringField(Keys.User.COMPANY, registerMe.getCompany());
    jgen.writeStringField(Keys.User.TITLE, registerMe.getTitle());
    jgen.writeStringField(Keys.User.LOCATION, registerMe.getLocation());
    jgen.writeEndObject();
    jgen.close();

    // Get JSON Object payload from print stream
    String payload = json.toString("UTF8");
    ps.close();

    // Send payload
    int responseCode = sendPostPayload(conn, payload);
    String response = getServerResponse(conn);

    User createUser = new User(registerMe);

    /*
     * result should get valid={"userID":"##"}
     */
    String result = "";
    if (!response.isEmpty()) {
        JsonNode tree = MAPPER.readTree(response);
        if (!tree.has(Keys.User.ID)) {

            result = "duplicate email or username";
        } else {
            result = tree.get(Keys.User.ID).asText();
            createUser.setID(result);
        }
    }

    conn.disconnect();
    return createUser;
}

From source file:com.basho.riak.client.raw.http.ConversionUtil.java

private static void writeNamedFun(JsonGenerator jg, NamedFunction nf) throws IOException {
    jg.writeStartObject();
    if (nf instanceof NamedErlangFunction) {
        NamedErlangFunction nef = (NamedErlangFunction) nf;
        jg.writeStringField(Constants.FL_SCHEMA_FUN_MOD, nef.getMod());
        jg.writeStringField(Constants.FL_SCHEMA_FUN_FUN, nef.getFun());
    } else {/* www  .ja  va  2s . c  om*/
        NamedJSFunction njsf = (NamedJSFunction) nf;
        jg.writeStringField(Constants.FL_SCHEMA_FUN_NAME, njsf.getFunction());
    }
    jg.writeEndObject();
}

From source file:com.basho.riak.client.raw.http.ConversionUtil.java

/**
 * Converts a {@link BucketProperties} to a JSON string
 * @param bp//w w  w .j ava2  s .  c  o m
 * @return a String of JSON that is acceptable to {@link RiakBucketInfo}
 * @throws IOException
 * TODO: move this to a custom serializer?
 */
private static String toJSON(BucketProperties bp) throws IOException {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    JsonGenerator jg = new JsonFactory().createJsonGenerator(out, JsonEncoding.UTF8);

    jg.writeStartObject();
    writeIfNotNull(jg, bp.getAllowSiblings(), Constants.FL_SCHEMA_ALLOW_MULT);
    writeIfNotNull(jg, bp.getNVal(), Constants.FL_SCHEMA_NVAL);
    writeIfNotNull(jg, bp.getLastWriteWins(), Constants.FL_SCHEMA_LAST_WRITE_WINS);
    writeIfNotNull(jg, bp.getBackend(), Constants.FL_SCHEMA_BACKEND);
    writeIfNotNull(jg, bp.getSmallVClock(), Constants.FL_SCHEMA_SMALL_VCLOCK);
    writeIfNotNull(jg, bp.getBigVClock(), Constants.FL_SCHEMA_BIG_VCLOCK);
    writeIfNotNull(jg, bp.getYoungVClock(), Constants.FL_SCHEMA_YOUNG_VCLOCK);
    writeIfNotNull(jg, bp.getOldVClock(), Constants.FL_SCHEMA_OLD_VCLOCK);
    writeIfNotNull(jg, bp.getR(), Constants.FL_SCHEMA_R);
    writeIfNotNull(jg, bp.getRW(), Constants.FL_SCHEMA_RW);
    writeIfNotNull(jg, bp.getW(), Constants.FL_SCHEMA_W);
    writeIfNotNull(jg, bp.getDW(), Constants.FL_SCHEMA_DW);
    writeIfNotNull(jg, bp.getPR(), Constants.FL_SCHEMA_PR);
    writeIfNotNull(jg, bp.getPW(), Constants.FL_SCHEMA_PW);
    writeIfNotNull(jg, bp.getBasicQuorum(), Constants.FL_SCHEMA_BASIC_QUORUM);
    writeIfNotNull(jg, bp.getNotFoundOK(), Constants.FL_SCHEMA_NOT_FOUND_OK);
    writeIfNotNull(jg, bp.getChashKeyFunction(), Constants.FL_SCHEMA_CHASHFUN);
    writeIfNotNull(jg, bp.getLinkWalkFunction(), Constants.FL_SCHEMA_LINKFUN);
    writeIfNotNull(jg, bp.getPostcommitHooks(), Constants.FL_SCHEMA_POSTCOMMIT);
    writeIfNotNull(jg, bp.getPrecommitHooks(), Constants.FL_SCHEMA_PRECOMMIT);
    writeIfNotNull(jg, bp.getSearch(), Constants.FL_SCHEMA_SEARCH);

    jg.writeEndObject();

    jg.flush();
    return CharsetUtils.asUTF8String(out.toByteArray());
}

From source file:com.netflix.hystrix.serial.SerialHystrixDashboardData.java

private static void writeCommandMetrics(final HystrixCommandMetrics commandMetrics, JsonGenerator json)
        throws IOException {
    HystrixCommandKey key = commandMetrics.getCommandKey();
    HystrixCircuitBreaker circuitBreaker = HystrixCircuitBreaker.Factory.getInstance(key);

    json.writeStartObject();
    json.writeStringField("type", "HystrixCommand");
    json.writeStringField("name", key.name());
    json.writeStringField("group", commandMetrics.getCommandGroup().name());
    json.writeNumberField("currentTime", System.currentTimeMillis());

    // circuit breaker
    if (circuitBreaker == null) {
        // circuit breaker is disabled and thus never open
        json.writeBooleanField("isCircuitBreakerOpen", false);
    } else {/*ww w  .j a  va  2 s .co m*/
        json.writeBooleanField("isCircuitBreakerOpen", circuitBreaker.isOpen());
    }
    HystrixCommandMetrics.HealthCounts healthCounts = commandMetrics.getHealthCounts();
    json.writeNumberField("errorPercentage", healthCounts.getErrorPercentage());
    json.writeNumberField("errorCount", healthCounts.getErrorCount());
    json.writeNumberField("requestCount", healthCounts.getTotalRequests());

    // rolling counters
    safelyWriteNumberField(json, "rollingCountBadRequests", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.BAD_REQUEST);
        }
    });
    safelyWriteNumberField(json, "rollingCountCollapsedRequests", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.COLLAPSED);
        }
    });
    safelyWriteNumberField(json, "rollingCountEmit", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.EMIT);
        }
    });
    safelyWriteNumberField(json, "rollingCountExceptionsThrown", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.EXCEPTION_THROWN);
        }
    });
    safelyWriteNumberField(json, "rollingCountFailure", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.FAILURE);
        }
    });
    safelyWriteNumberField(json, "rollingCountFallbackEmit", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.FALLBACK_EMIT);
        }
    });
    safelyWriteNumberField(json, "rollingCountFallbackFailure", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.FALLBACK_FAILURE);
        }
    });
    safelyWriteNumberField(json, "rollingCountFallbackMissing", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.FALLBACK_MISSING);
        }
    });
    safelyWriteNumberField(json, "rollingCountFallbackRejection", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.FALLBACK_REJECTION);
        }
    });
    safelyWriteNumberField(json, "rollingCountFallbackSuccess", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.FALLBACK_SUCCESS);
        }
    });
    safelyWriteNumberField(json, "rollingCountResponsesFromCache", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.RESPONSE_FROM_CACHE);
        }
    });
    safelyWriteNumberField(json, "rollingCountSemaphoreRejected", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.SEMAPHORE_REJECTED);
        }
    });
    safelyWriteNumberField(json, "rollingCountShortCircuited", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.SHORT_CIRCUITED);
        }
    });
    safelyWriteNumberField(json, "rollingCountSuccess", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.SUCCESS);
        }
    });
    safelyWriteNumberField(json, "rollingCountThreadPoolRejected", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.THREAD_POOL_REJECTED);
        }
    });
    safelyWriteNumberField(json, "rollingCountTimeout", new Func0<Long>() {
        @Override
        public Long call() {
            return commandMetrics.getRollingCount(HystrixEventType.TIMEOUT);
        }
    });

    json.writeNumberField("currentConcurrentExecutionCount",
            commandMetrics.getCurrentConcurrentExecutionCount());
    json.writeNumberField("rollingMaxConcurrentExecutionCount",
            commandMetrics.getRollingMaxConcurrentExecutions());

    // latency percentiles
    json.writeNumberField("latencyExecute_mean", commandMetrics.getExecutionTimeMean());
    json.writeObjectFieldStart("latencyExecute");
    json.writeNumberField("0", commandMetrics.getExecutionTimePercentile(0));
    json.writeNumberField("25", commandMetrics.getExecutionTimePercentile(25));
    json.writeNumberField("50", commandMetrics.getExecutionTimePercentile(50));
    json.writeNumberField("75", commandMetrics.getExecutionTimePercentile(75));
    json.writeNumberField("90", commandMetrics.getExecutionTimePercentile(90));
    json.writeNumberField("95", commandMetrics.getExecutionTimePercentile(95));
    json.writeNumberField("99", commandMetrics.getExecutionTimePercentile(99));
    json.writeNumberField("99.5", commandMetrics.getExecutionTimePercentile(99.5));
    json.writeNumberField("100", commandMetrics.getExecutionTimePercentile(100));
    json.writeEndObject();
    //
    json.writeNumberField("latencyTotal_mean", commandMetrics.getTotalTimeMean());
    json.writeObjectFieldStart("latencyTotal");
    json.writeNumberField("0", commandMetrics.getTotalTimePercentile(0));
    json.writeNumberField("25", commandMetrics.getTotalTimePercentile(25));
    json.writeNumberField("50", commandMetrics.getTotalTimePercentile(50));
    json.writeNumberField("75", commandMetrics.getTotalTimePercentile(75));
    json.writeNumberField("90", commandMetrics.getTotalTimePercentile(90));
    json.writeNumberField("95", commandMetrics.getTotalTimePercentile(95));
    json.writeNumberField("99", commandMetrics.getTotalTimePercentile(99));
    json.writeNumberField("99.5", commandMetrics.getTotalTimePercentile(99.5));
    json.writeNumberField("100", commandMetrics.getTotalTimePercentile(100));
    json.writeEndObject();

    // property values for reporting what is actually seen by the command rather than what was set somewhere
    HystrixCommandProperties commandProperties = commandMetrics.getProperties();

    json.writeNumberField("propertyValue_circuitBreakerRequestVolumeThreshold",
            commandProperties.circuitBreakerRequestVolumeThreshold().get());
    json.writeNumberField("propertyValue_circuitBreakerSleepWindowInMilliseconds",
            commandProperties.circuitBreakerSleepWindowInMilliseconds().get());
    json.writeNumberField("propertyValue_circuitBreakerErrorThresholdPercentage",
            commandProperties.circuitBreakerErrorThresholdPercentage().get());
    json.writeBooleanField("propertyValue_circuitBreakerForceOpen",
            commandProperties.circuitBreakerForceOpen().get());
    json.writeBooleanField("propertyValue_circuitBreakerForceClosed",
            commandProperties.circuitBreakerForceClosed().get());
    json.writeBooleanField("propertyValue_circuitBreakerEnabled",
            commandProperties.circuitBreakerEnabled().get());

    json.writeStringField("propertyValue_executionIsolationStrategy",
            commandProperties.executionIsolationStrategy().get().name());
    json.writeNumberField("propertyValue_executionIsolationThreadTimeoutInMilliseconds",
            commandProperties.executionTimeoutInMilliseconds().get());
    json.writeNumberField("propertyValue_executionTimeoutInMilliseconds",
            commandProperties.executionTimeoutInMilliseconds().get());
    json.writeBooleanField("propertyValue_executionIsolationThreadInterruptOnTimeout",
            commandProperties.executionIsolationThreadInterruptOnTimeout().get());
    json.writeStringField("propertyValue_executionIsolationThreadPoolKeyOverride",
            commandProperties.executionIsolationThreadPoolKeyOverride().get());
    json.writeNumberField("propertyValue_executionIsolationSemaphoreMaxConcurrentRequests",
            commandProperties.executionIsolationSemaphoreMaxConcurrentRequests().get());
    json.writeNumberField("propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests",
            commandProperties.fallbackIsolationSemaphoreMaxConcurrentRequests().get());

    /*
     * The following are commented out as these rarely change and are verbose for streaming for something people don't change.
     * We could perhaps allow a property or request argument to include these.
     */

    //                    json.put("propertyValue_metricsRollingPercentileEnabled", commandProperties.metricsRollingPercentileEnabled().get());
    //                    json.put("propertyValue_metricsRollingPercentileBucketSize", commandProperties.metricsRollingPercentileBucketSize().get());
    //                    json.put("propertyValue_metricsRollingPercentileWindow", commandProperties.metricsRollingPercentileWindowInMilliseconds().get());
    //                    json.put("propertyValue_metricsRollingPercentileWindowBuckets", commandProperties.metricsRollingPercentileWindowBuckets().get());
    //                    json.put("propertyValue_metricsRollingStatisticalWindowBuckets", commandProperties.metricsRollingStatisticalWindowBuckets().get());
    json.writeNumberField("propertyValue_metricsRollingStatisticalWindowInMilliseconds",
            commandProperties.metricsRollingStatisticalWindowInMilliseconds().get());

    json.writeBooleanField("propertyValue_requestCacheEnabled", commandProperties.requestCacheEnabled().get());
    json.writeBooleanField("propertyValue_requestLogEnabled", commandProperties.requestLogEnabled().get());

    json.writeNumberField("reportingHosts", 1); // this will get summed across all instances in a cluster
    json.writeStringField("threadPool", commandMetrics.getThreadPoolKey().name());

    json.writeEndObject();
}

From source file:com.tage.calcite.adapter.druid.DruidQuery.java

/** Generates a JSON string to query metadata about a data source. */
static String metadataQuery(String dataSourceName, List<String> intervals) {
    final StringWriter sw = new StringWriter();
    final JsonFactory factory = new JsonFactory();
    try {//  w  w  w.  ja  v  a2s.  c  om
        final JsonGenerator generator = factory.createGenerator(sw);
        generator.writeStartObject();
        generator.writeStringField("queryType", "segmentMetadata");
        generator.writeStringField("dataSource", dataSourceName);
        generator.writeBooleanField("merge", true);
        generator.writeArrayFieldStart("analysisTypes");
        generator.writeString("aggregators");
        generator.writeEndArray();
        writeFieldIf(generator, "intervals", intervals);
        generator.writeEndObject();
        generator.close();
    } catch (IOException e) {
        throw Throwables.propagate(e);
    }
    return sw.toString();
}