@Override public String getContentType() { if (requestMessage.getBody().isPresent()) { return "application/json"; } else { return null; } }
@Override public String getPathTranslated() { return requestMessage.getPath(); }
@Override public String getMethod() { return requestMessage.getVerb(); }
private HttpServletResponse createResponse(WebSocketRequestMessage message) { if (message.hasRequestId()) { return new WebSocketServletResponse(remoteEndpoint, message.getRequestId(), messageFactory); } else { return new NullServletResponse(); } }
private void handleRequest(WebSocketRequestMessage requestMessage) { try { HttpServletRequest servletRequest = createRequest(requestMessage, context); HttpServletResponse servletResponse = createResponse(requestMessage); servlet.service(servletRequest, servletResponse); servletResponse.flushBuffer(); requestLog.log(new LoggableRequest(servletRequest), new LoggableResponse(servletResponse)); } catch (IOException | ServletException e) { logger.warn("Servlet Error: " + requestMessage.getVerb() + " " + requestMessage.getPath() + "\n" + requestMessage.getBody(), e); sendErrorResponse(requestMessage, Response.status(500).build()); } }
public WebSocketServletRequest(WebSocketSessionContext sessionContext, WebSocketRequestMessage requestMessage, ServletContext servletContext) { this.requestMessage = requestMessage; this.servletContext = servletContext; this.sessionContext = sessionContext; if (requestMessage.getBody().isPresent()) { inputStream = new BufferingServletInputStream(requestMessage.getBody().get()); } else { inputStream = new BufferingServletInputStream(new byte[0]); } headers.putAll(requestMessage.getHeaders()); }
@Override public void onReceivedRequest(WebSocketRequestMessage requestMessage) { System.err.println("Got request"); try { webSocket.sendResponse(requestMessage.getRequestId(), 200, "OK", "world!".getBytes()); } catch (IOException e) { e.printStackTrace(); } }
private void sendErrorResponse(WebSocketRequestMessage requestMessage, Response error) { if (requestMessage.hasRequestId()) { List<String> headers = new LinkedList<>(); for (String key : error.getStringHeaders().keySet()) { headers.add(key + ":" + error.getStringHeaders().getFirst(key)); } WebSocketMessage response = messageFactory.createResponse(requestMessage.getRequestId(), error.getStatus(), "Error response", headers, Optional.<byte[]>empty()); remoteEndpoint.sendBytesByFuture(ByteBuffer.wrap(response.toByteArray())); } }
@Override public String getPathInfo() { return requestMessage.getPath(); }