List of usage examples for org.apache.commons.io.output StringBuilderWriter write
@Override public void write(String value)
From source file:com.addthis.hydra.query.web.LegacyHandler.java
public static Query handleQuery(Query query, KVPairs kv, HttpRequest request, ChannelHandlerContext ctx) throws IOException, QueryException { String async = kv.getValue("async"); if (async == null) { return query; } else if (async.equals("new")) { StringBuilderWriter writer = new StringBuilderWriter(50); HttpResponse response = HttpUtils.startResponse(writer); String asyncUuid = genAsyncUuid(); asyncCache.put(asyncUuid, query); Query.traceLog.info("async create {} from {}", asyncUuid, query); writer.write("{\"id\":\"" + asyncUuid + "\"}"); ByteBuf textResponse = ByteBufUtil.encodeString(ctx.alloc(), CharBuffer.wrap(writer.getBuilder()), CharsetUtil.UTF_8);//from w ww . jav a2 s.c om HttpContent content = new DefaultHttpContent(textResponse); response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, textResponse.readableBytes()); if (HttpHeaders.isKeepAlive(request)) { response.headers().set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.KEEP_ALIVE); } ctx.write(response); ctx.write(content); ChannelFuture lastContentFuture = ctx.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT); if (!HttpHeaders.isKeepAlive(request)) { lastContentFuture.addListener(ChannelFutureListener.CLOSE); } return null; } else { Query asyncQuery = asyncCache.getIfPresent(async); asyncCache.invalidate(async); Query.traceLog.info("async restore {} as {}", async, asyncQuery); if (asyncQuery != null) { return asyncQuery; } else { throw new QueryException("Missing Async Id"); } } }
From source file:com.addthis.hydra.query.web.HttpQueryHandler.java
private void fastHandle(ChannelHandlerContext ctx, FullHttpRequest request, String target, KVPairs kv) throws Exception { StringBuilderWriter writer = new StringBuilderWriter(50); HttpResponse response = HttpUtils.startResponse(writer); response.headers().add("Access-Control-Allow-Origin", "*"); switch (target) { case "/metrics": { fakeMetricsServlet.writeMetrics(writer, kv); break;//from w w w . ja va2s.c o m } case "/running": case "/query/list": case "/query/running": case "/v2/queries/running.list": { Jackson.defaultMapper().writerWithDefaultPrettyPrinter().writeValue(writer, tracker.getRunning()); break; } case "/done": case "/complete": case "/query/done": case "/query/complete": case "/completed/list": case "/v2/queries/finished.list": { Jackson.defaultMapper().writerWithDefaultPrettyPrinter().writeValue(writer, tracker.getCompleted()); break; } case "/query/all": case "/v2/queries/list": { Collection<QueryEntryInfo> aggregatingSnapshot = tracker.getRunning(); aggregatingSnapshot.addAll(tracker.getCompleted()); Jackson.defaultMapper().writerWithDefaultPrettyPrinter().writeValue(writer, aggregatingSnapshot); break; } case "/cancel": case "/query/cancel": { if (tracker.cancelRunning(kv.getValue("uuid"))) { writer.write("canceled " + kv.getValue("uuid")); } else { writer.write("canceled failed for " + kv.getValue("uuid")); response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); } break; } case "/workers": case "/query/workers": case "/v2/queries/workers": { Map<String, Integer> workerSnapshot = meshQueryMaster.worky().values().stream() .collect(toMap(WorkerData::hostName, WorkerData::queryLeases)); Jackson.defaultMapper().writerWithDefaultPrettyPrinter().writeValue(writer, workerSnapshot); break; } case "/host": case "/host/list": case "/v2/host/list": String queryStatusUuid = kv.getValue("uuid"); QueryEntry queryEntry = tracker.getQueryEntry(queryStatusUuid); if (queryEntry != null) { DetailedStatusHandler hostDetailsHandler = new DetailedStatusHandler(writer, response, ctx, request, queryEntry); hostDetailsHandler.handle(); return; } else { QueryEntryInfo queryEntryInfo = tracker.getCompletedQueryInfo(queryStatusUuid); if (queryEntryInfo != null) { Jackson.defaultMapper().writerWithDefaultPrettyPrinter().writeValue(writer, queryEntryInfo); } else { log.trace("could not find query for status"); if (ctx.channel().isActive()) { sendError(ctx, new HttpResponseStatus(NOT_FOUND.code(), "could not find query")); } return; } break; } case "/git": case "/v2/settings/git.properties": { try { Jackson.defaultMapper().writeValue(writer, ConfigFactory.parseResourcesAnySyntax("/hydra-git.properties").getConfig("git")); } catch (Exception ex) { String noGitWarning = "Error loading git.properties, possibly jar was not compiled with maven."; log.warn(noGitWarning); writer.write(noGitWarning); } break; } case "/query/encode": { Query q = new Query(null, new String[] { kv.getValue("query", kv.getValue("path", "")) }, null); JSONArray path = CodecJSON.encodeJSON(q).getJSONArray("path"); writer.write(path.toString()); break; } case "/query/decode": { String qo = "{path:" + kv.getValue("query", kv.getValue("path", "")) + "}"; Query q = CodecJSON.decodeString(Query.class, qo); writer.write(q.getPaths()[0]); break; } default: // forward to static file server ctx.pipeline().addLast(staticFileHandler); request.retain(); ctx.fireChannelRead(request); return; // don't do text response clean up } log.trace("response being sent {}", writer); ByteBuf textResponse = ByteBufUtil.encodeString(ctx.alloc(), CharBuffer.wrap(writer.getBuilder()), UTF_8); HttpContent content = new DefaultHttpContent(textResponse); response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, textResponse.readableBytes()); if (HttpHeaders.isKeepAlive(request)) { response.headers().set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.KEEP_ALIVE); } ctx.write(response); ctx.write(content); ChannelFuture lastContentFuture = ctx.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT); log.trace("response pending"); if (!HttpHeaders.isKeepAlive(request)) { log.trace("Setting close listener"); ((Future<Void>) lastContentFuture).addListener(ChannelFutureListener.CLOSE); } }
From source file:us.ihmc.rtps.visualizer.HexStringMessage.java
@Override public String toString() { try {//from w w w .jav a2 s .c o m StringBuilderWriter writer = new StringBuilderWriter(data.length << 1 + 2); writer.write("Encapsulation: "); writer.write(endianness); writer.write(System.lineSeparator()); WriterOutputStream os = new WriterOutputStream(writer); HexDump.dump(data, 0, os, 0); os.close(); return writer.toString(); } catch (ArrayIndexOutOfBoundsException | IllegalArgumentException | IOException e) { return e.getMessage(); } }