List of usage examples for com.google.common.io CharStreams asWriter
public static Writer asWriter(Appendable target)
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(); }