Example usage for com.google.common.io CharStreams asWriter

List of usage examples for com.google.common.io CharStreams asWriter

Introduction

In this page you can find the example usage for com.google.common.io CharStreams asWriter.

Prototype

public static Writer asWriter(Appendable target) 

Source Link

Document

Returns a Writer that sends all output to the given Appendable target.

Usage

From source file:org.glowroot.local.ui.HttpServerHandler.java

private static FullHttpResponse newHttpResponseWithMessage(HttpResponseStatus status,
        @Nullable String message) {
    // this is an "expected" exception, no need to send back stack trace
    StringBuilder sb = new StringBuilder();
    try {/* w w w  .  java 2 s .c o  m*/
        JsonGenerator jg = jsonFactory.createGenerator(CharStreams.asWriter(sb));
        jg.writeStartObject();
        jg.writeStringField("message", message);
        jg.writeEndObject();
        jg.close();
        return HttpServices.createJsonResponse(sb.toString(), status);
    } catch (IOException f) {
        logger.error(f.getMessage(), f);
        return new DefaultFullHttpResponse(HTTP_1_1, INTERNAL_SERVER_ERROR);
    }
}

From source file:org.glowroot.ui.TraceCommonService.java

private String toJson(String agentId, Trace.Header header, boolean active, Existence entriesExistence,
        Existence queriesExistence, Existence profileExistence) throws Exception {
    StringBuilder sb = new StringBuilder();
    JsonGenerator jg = jsonFactory.createGenerator(CharStreams.asWriter(sb));
    try {/*  w w  w  . j a  va2  s . c  o m*/
        jg.writeStartObject();
        if (!agentId.isEmpty()) {
            jg.writeStringField("agent", agentDisplayRepository.readFullDisplay(agentId));
        }
        if (active) {
            jg.writeBooleanField("active", active);
        }
        boolean partial = header.getPartial();
        if (partial) {
            jg.writeBooleanField("partial", partial);
        }
        boolean async = header.getAsync();
        if (async) {
            jg.writeBooleanField("async", async);
        }
        jg.writeNumberField("startTime", header.getStartTime());
        jg.writeNumberField("captureTime", header.getCaptureTime());
        jg.writeNumberField("durationNanos", header.getDurationNanos());
        jg.writeStringField("transactionType", header.getTransactionType());
        jg.writeStringField("transactionName", header.getTransactionName());
        jg.writeStringField("headline", header.getHeadline());
        jg.writeStringField("user", header.getUser());
        List<Trace.Attribute> attributes = header.getAttributeList();
        if (!attributes.isEmpty()) {
            jg.writeObjectFieldStart("attributes");
            for (Trace.Attribute attribute : attributes) {
                jg.writeArrayFieldStart(attribute.getName());
                for (String value : attribute.getValueList()) {
                    jg.writeString(value);
                }
                jg.writeEndArray();
            }
            jg.writeEndObject();
        }
        List<Trace.DetailEntry> detailEntries = header.getDetailEntryList();
        if (!detailEntries.isEmpty()) {
            jg.writeFieldName("detail");
            writeDetailEntries(detailEntries, jg);
        }
        List<Proto.StackTraceElement> locationStackTraceElements = header.getLocationStackTraceElementList();
        if (!locationStackTraceElements.isEmpty()) {
            jg.writeArrayFieldStart("locationStackTraceElements");
            for (Proto.StackTraceElement stackTraceElement : locationStackTraceElements) {
                writeStackTraceElement(stackTraceElement, jg);
            }
            jg.writeEndArray();
        }
        if (header.hasError()) {
            jg.writeFieldName("error");
            writeError(header.getError(), jg);
        }
        jg.writeFieldName("mainThreadRootTimer");
        writeTimer(header.getMainThreadRootTimer(), jg);
        jg.writeFieldName("mainThreadStats");
        if (header.hasOldMainThreadStats()) {
            writeOldThreadStats(header.getOldMainThreadStats(), jg);
        } else {
            writeThreadStats(header.getMainThreadStats(), jg);
        }
        if (header.hasAuxThreadRootTimer()) {
            jg.writeFieldName("auxThreadRootTimer");
            writeTimer(header.getAuxThreadRootTimer(), jg);
            jg.writeFieldName("auxThreadStats");
            if (header.hasOldAuxThreadStats()) {
                writeOldThreadStats(header.getOldAuxThreadStats(), jg);
            } else {
                writeThreadStats(header.getAuxThreadStats(), jg);
            }
        }
        jg.writeArrayFieldStart("asyncTimers");
        for (Trace.Timer asyncTimer : header.getAsyncTimerList()) {
            writeTimer(asyncTimer, jg);
        }
        jg.writeEndArray();
        jg.writeNumberField("entryCount", header.getEntryCount());
        boolean entryLimitExceeded = header.getEntryLimitExceeded();
        if (entryLimitExceeded) {
            jg.writeBooleanField("entryLimitExceeded", entryLimitExceeded);
        }
        jg.writeNumberField("queryCount", header.getQueryCount());
        boolean queryLimitExceeded = header.getQueryLimitExceeded();
        if (queryLimitExceeded) {
            jg.writeBooleanField("queryLimitExceeded", queryLimitExceeded);
        }
        jg.writeNumberField("mainThreadProfileSampleCount", header.getMainThreadProfileSampleCount());
        boolean mainThreadProfileSampleLimitExceeded = header.getMainThreadProfileSampleLimitExceeded();
        if (mainThreadProfileSampleLimitExceeded) {
            jg.writeBooleanField("mainThreadProfileSampleLimitExceeded", mainThreadProfileSampleLimitExceeded);
        }
        jg.writeNumberField("auxThreadProfileSampleCount", header.getAuxThreadProfileSampleCount());
        boolean auxThreadProfileSampleLimitExceeded = header.getAuxThreadProfileSampleLimitExceeded();
        if (auxThreadProfileSampleLimitExceeded) {
            jg.writeBooleanField("auxThreadProfileSampleLimitExceeded", auxThreadProfileSampleLimitExceeded);
        }
        jg.writeStringField("entriesExistence", entriesExistence.name().toLowerCase(Locale.ENGLISH));
        jg.writeStringField("queriesExistence", queriesExistence.name().toLowerCase(Locale.ENGLISH));
        jg.writeStringField("profileExistence", profileExistence.name().toLowerCase(Locale.ENGLISH));
        jg.writeEndObject();
    } finally {
        jg.close();
    }
    return sb.toString();
}

From source file:org.glowroot.local.ui.HttpServerHandler.java

private static FullHttpResponse newHttpResponseWithStackTrace(Exception e, HttpResponseStatus status,
        @Nullable String simplifiedMessage) {
    StringWriter sw = new StringWriter();
    e.printStackTrace(new PrintWriter(sw));
    StringBuilder sb = new StringBuilder();
    try {/*from  ww w  .ja  va  2 s. c  o  m*/
        JsonGenerator jg = jsonFactory.createGenerator(CharStreams.asWriter(sb));
        jg.writeStartObject();
        String message;
        if (simplifiedMessage == null) {
            Throwable cause = e;
            Throwable childCause = cause.getCause();
            while (childCause != null) {
                cause = childCause;
                childCause = cause.getCause();
            }
            message = cause.getMessage();
        } else {
            message = simplifiedMessage;
        }
        jg.writeStringField("message", message);
        jg.writeStringField("stackTrace", sw.toString());
        jg.writeEndObject();
        jg.close();
        return HttpServices.createJsonResponse(sb.toString(), status);
    } catch (IOException f) {
        logger.error(f.getMessage(), f);
        return new DefaultFullHttpResponse(HTTP_1_1, INTERNAL_SERVER_ERROR);
    }
}

From source file:org.glowroot.ui.TransactionJsonService.java

@GET(path = "/backend/transaction/profile", permission = "agent:transaction:threadProfile")
String getProfile(@BindAgentRollupId String agentRollupId, @BindRequest TransactionProfileRequest request)
        throws Exception {
    AggregateQuery query = toQuery(request, DataKind.PROFILE);
    ProfileCollector profileCollector = transactionCommonService.getMergedProfile(agentRollupId, query,
            request.auxiliary(), request.include(), request.exclude(), request.truncateBranchPercentage());
    MutableProfile profile = profileCollector.getProfile();
    if (profile.isEmpty() && fallBackToLargestAggregates(query)) {
        // fall back to largest aggregates in case expiration settings have recently changed
        query = withLargestRollupLevel(query);
        profileCollector = transactionCommonService.getMergedProfile(agentRollupId, query, request.auxiliary(),
                request.include(), request.exclude(), request.truncateBranchPercentage());
        profile = profileCollector.getProfile();
        if (ignoreFallBackData(query, profileCollector.getLastCaptureTime())) {
            // this is probably data from before the requested time period
            profile = new MutableProfile();
        }//from w  ww.  ja  v  a  2 s .  com
    }
    boolean hasUnfilteredMainThreadProfile;
    boolean hasUnfilteredAuxThreadProfile;
    if (request.auxiliary()) {
        hasUnfilteredMainThreadProfile = transactionCommonService.hasMainThreadProfile(agentRollupId, query);
        hasUnfilteredAuxThreadProfile = profile.getUnfilteredSampleCount() > 0;
    } else {
        if (profile.getUnfilteredSampleCount() == 0) {
            hasUnfilteredMainThreadProfile = false;
            // return and display aux profile instead
            profileCollector = transactionCommonService.getMergedProfile(agentRollupId, query, true,
                    request.include(), request.exclude(), request.truncateBranchPercentage());
            profile = profileCollector.getProfile();
            if (profile.isEmpty() && fallBackToLargestAggregates(query)) {
                // fall back to largest aggregates in case expiration settings have recently
                // changed
                query = withLargestRollupLevel(query);
                profileCollector = transactionCommonService.getMergedProfile(agentRollupId, query,
                        request.auxiliary(), request.include(), request.exclude(),
                        request.truncateBranchPercentage());
                profile = profileCollector.getProfile();
                if (ignoreFallBackData(query, profileCollector.getLastCaptureTime())) {
                    // this is probably data from before the requested time period
                    profile = new MutableProfile();
                }
            }
            hasUnfilteredAuxThreadProfile = profile.getUnfilteredSampleCount() > 0;
        } else {
            hasUnfilteredMainThreadProfile = true;
            hasUnfilteredAuxThreadProfile = transactionCommonService.hasAuxThreadProfile(agentRollupId, query);
        }
    }
    StringBuilder sb = new StringBuilder();
    JsonGenerator jg = mapper.getFactory().createGenerator(CharStreams.asWriter(sb));
    try {
        jg.writeStartObject();
        jg.writeBooleanField("hasUnfilteredMainThreadProfile", hasUnfilteredMainThreadProfile);
        jg.writeBooleanField("hasUnfilteredAuxThreadProfile", hasUnfilteredAuxThreadProfile);
        if (profile.getUnfilteredSampleCount() == 0 && isProfileOverwritten(request, agentRollupId, query)) {
            jg.writeBooleanField("overwritten", true);
        }
        jg.writeFieldName("profile");
        profile.writeJson(jg);
        jg.writeEndObject();
    } finally {
        jg.close();
    }
    return sb.toString();
}

From source file:org.glowroot.ui.JvmJsonService.java

@GET(path = "/backend/jvm/system-properties", permission = "agent:jvm:systemProperties")
String getSystemProperties(@BindAgentId String agentId) throws Exception {
    checkNotNull(liveJvmService);//from  w w w. j  a v  a2s  .  c  o m
    Map<String, String> properties;
    try {
        properties = liveJvmService.getSystemProperties(agentId);
    } catch (AgentNotConnectedException e) {
        logger.debug(e.getMessage(), e);
        return "{\"agentNotConnected\":true}";
    } catch (AgentUnsupportedOperationException e) {
        // this operation introduced in 0.9.2
        logger.debug(e.getMessage(), e);
        return getAgentUnsupportedOperationResponse(agentId);
    }
    // mask here to provide support in central for agents prior to 0.10.0
    List<String> maskSystemProperties = getJvmMaskSystemProperties(agentId);
    properties = Masking.maskSystemProperties(properties, maskSystemProperties);

    StringBuilder sb = new StringBuilder();
    JsonGenerator jg = mapper.getFactory().createGenerator(CharStreams.asWriter(sb));
    try {
        jg.writeStartObject();
        jg.writeArrayFieldStart("properties");
        for (Map.Entry<String, String> entry : ImmutableSortedMap.copyOf(properties).entrySet()) {
            jg.writeStartObject();
            String propertyName = entry.getKey();
            jg.writeStringField("name", propertyName);
            if (PATH_SEPARATED_SYSTEM_PROPERTIES.contains(propertyName)) {
                jg.writeArrayFieldStart("value");
                for (String item : Splitter.on(File.pathSeparatorChar).splitToList(entry.getValue())) {
                    jg.writeString(item);
                }
                jg.writeEndArray();
            } else {
                jg.writeStringField("value", entry.getValue());
            }
            jg.writeEndObject();
        }
        jg.writeEndArray();
        jg.writeEndObject();
    } finally {
        jg.close();
    }
    return sb.toString();
}

From source file:org.glowroot.ui.CommonHandler.java

private static CommonResponse newHttpResponseWithMessage(HttpResponseStatus status, @Nullable String message)
        throws IOException {
    // this is an "expected" exception, no need to send back stack trace
    StringBuilder sb = new StringBuilder();
    JsonGenerator jg = mapper.getFactory().createGenerator(CharStreams.asWriter(sb));
    try {/*from  w w w.ja va2 s.co m*/
        jg.writeStartObject();
        jg.writeStringField("message", message);
        jg.writeEndObject();
    } finally {
        jg.close();
    }
    return new CommonResponse(status, MediaType.JSON_UTF_8, sb.toString());
}

From source file:org.glowroot.ui.CommonHandler.java

private static String getHttpResponseWithStackTrace(Exception e, @Nullable String simplifiedMessage)
        throws IOException {
    StringBuilder stackTrace = new StringBuilder();
    e.printStackTrace(new PrintWriter(CharStreams.asWriter(stackTrace)));
    StringBuilder sb = new StringBuilder();
    JsonGenerator jg = mapper.getFactory().createGenerator(CharStreams.asWriter(sb));
    try {//from   ww  w  .jav a 2 s.  co  m
        jg.writeStartObject();
        String message;
        if (simplifiedMessage == null) {
            message = Throwables.getBestMessage(e);
        } else {
            message = simplifiedMessage;
        }
        jg.writeStringField("message", message);
        jg.writeStringField("stackTrace", stackTrace.toString());
        jg.writeEndObject();
    } finally {
        jg.close();
    }
    return sb.toString();
}

From source file:org.eclipse.rcptt.ui.launching.ExecutionView.java

private void processThrowableMsg(final int level, StringBuilder buffer, Throwable t) {
    PrintWriter printWriter = new IndentedWriter(CharStreams.asWriter(buffer)) {
        @Override/*from   w  w  w .  j  a v  a  2  s . c om*/
        public void writeIndent() {
            appendTabs(this, level + 1);
        }
    };

    t.printStackTrace(printWriter);
    printWriter.close();

    // StackTraceElement[] trace = t.getStackTrace();
    // for (int i = 0; i < trace.length; i++) {
    // appendTabs(buffer, level + 1);
    //         buffer.append("at "); //$NON-NLS-1$
    // buffer.append(trace[i]);
    // buffer.append(LINE_SEPARATOR);
    // }
    // if (t.getCause() != null) {
    // buffer.append("Caused by: " + t.getCause().getMessage()).append(
    // "\n");
    // processThrowableMsg(level + 1, buffer, t.getCause());
    // }
}

From source file:org.glowroot.ui.JvmJsonService.java

@GET(path = "/backend/jvm/capabilities", permission = "agent:jvm:capabilities")
String getCapabilities(@BindAgentId String agentId) throws Exception {
    checkNotNull(liveJvmService);//from w w w . j a v  a 2s .  c  om
    Capabilities capabilities;
    try {
        capabilities = liveJvmService.getCapabilities(agentId);
    } catch (AgentNotConnectedException e) {
        logger.debug(e.getMessage(), e);
        return "{\"agentNotConnected\":true}";
    }
    StringBuilder sb = new StringBuilder();
    JsonGenerator jg = mapper.getFactory().createGenerator(CharStreams.asWriter(sb));
    try {
        jg.writeStartObject();
        writeAvailability("threadCpuTime", capabilities.getThreadCpuTime(), jg);
        writeAvailability("threadContentionTime", capabilities.getThreadContentionTime(), jg);
        writeAvailability("threadAllocatedBytes", capabilities.getThreadAllocatedBytes(), jg);
        jg.writeEndObject();
    } finally {
        jg.close();
    }
    return sb.toString();
}

From source file:org.glowroot.ui.TransactionJsonService.java

@GET(path = "/backend/transaction/summaries", permission = "agent:transaction:overview")
String getSummaries(@BindAgentRollupId String agentRollupId, @BindRequest TransactionSummaryRequest request,
        @BindAutoRefresh boolean autoRefresh) throws Exception {
    SummaryQuery query = ImmutableSummaryQuery.builder().transactionType(request.transactionType())
            .from(request.from()).to(request.to())
            .rollupLevel(//from  w  ww  .  j  a va  2  s  .c  om
                    rollupLevelService.getRollupLevelForView(request.from(), request.to(), DataKind.GENERAL))
            .build();
    OverallSummaryCollector overallSummaryCollector = transactionCommonService.readOverallSummary(agentRollupId,
            query, autoRefresh);
    OverallSummary overallSummary = overallSummaryCollector.getOverallSummary();
    if (overallSummary.transactionCount() == 0 && fallBackToLargestAggregate(query)) {
        // fall back to largest aggregates in case expiration settings have recently changed
        query = withLargestRollupLevel(query);
        overallSummaryCollector = transactionCommonService.readOverallSummary(agentRollupId, query,
                autoRefresh);
        overallSummary = overallSummaryCollector.getOverallSummary();
        if (ignoreFallBackData(query, overallSummaryCollector.getLastCaptureTime())) {
            // this is probably data from before the requested time period
            overallSummary = ImmutableOverallSummary.builder().totalDurationNanos(0).transactionCount(0)
                    .build();
        }
    }
    Result<TransactionNameSummary> queryResult = transactionCommonService.readTransactionNameSummaries(
            agentRollupId, query, request.sortOrder(), request.limit(), autoRefresh);
    StringBuilder sb = new StringBuilder();
    JsonGenerator jg = mapper.getFactory().createGenerator(CharStreams.asWriter(sb));
    try {
        jg.writeStartObject();
        jg.writeObjectField("overall", overallSummary);
        jg.writeObjectField("transactions", queryResult.records());
        jg.writeBooleanField("moreAvailable", queryResult.moreAvailable());
        jg.writeEndObject();
    } finally {
        jg.close();
    }
    return sb.toString();
}