@Override public void onPreSuspend(AtmosphereResourceEvent event) { AtmosphereResponse response = event.getResource().getResponse(); AtmosphereRequest request = event.getResource().getRequest(); String callback = request.getParameter("c"); // TODO: Configurable response.setContentType("text/html; charset=UTF-8"); response.write(IFrameUtils.generateHtmlFile(callback)).write(padding); try { response.write(("<script>\n" + "p(\"o\")" + "\n</script>\n").getBytes()).flushBuffer(); } catch (IOException e) { logger.trace("", e); } }
public GwtRpcSerializer(AtmosphereResource resource) { this.resource = resource; // https://github.com/Atmosphere/atmosphere/issues/1063 this.outputEncoding = resource.getResponse().getCharacterEncoding() == null ? "UTF-8" : resource.getResponse().getCharacterEncoding(); }
@Override public void setStatus(int sc) { response.setStatus(sc); }
/** * Tries to send a critical notification to the client and close the * connection. Does nothing if the connection is already closed. */ private static void sendNotificationAndDisconnect( AtmosphereResource resource, String notificationJson) { // TODO Implemented differently from sendRefreshAndDisconnect try { if (resource instanceof AtmosphereResourceImpl && !((AtmosphereResourceImpl) resource).isInScope()) { // The resource is no longer valid so we should not write // anything to it getLogger().fine( "sendNotificationAndDisconnect called for resource no longer in scope"); return; } resource.getResponse() .setContentType(JsonConstants.JSON_CONTENT_TYPE); resource.getResponse().getWriter().write(notificationJson); resource.resume(); } catch (Exception e) { getLogger().log(Level.FINEST, "Failed to send critical notification to client", e); } }
WrappedAtmosphereResponse(AtmosphereResponse resp, AtmosphereRequest req) throws IOException { super((HttpServletResponse)resp.getResponse(), null, req, resp.isDestroyable()); response = resp; response.request(req); }
protected void startSend(AtmosphereResponse response) throws IOException { response.setContentType("text/plain; charset=UTF-8"); response.setCharacterEncoding("UTF-8"); }
.getAttribute(ApplicationConfig.SUSPENDED_ATMOSPHERE_RESOURCE_UUID); final AtmosphereResponse suspendedResponse = suspendedResponses.get(saruuid); LOG.fine("Attaching a proxy writer to suspended response"); r.getResponse().asyncIOWriter(new AtmosphereInterceptorWriter() { @Override public AsyncIOWriter write(AtmosphereResponse r, String data) throws IOException { r.getResponse().destroyable(false); return Action.CONTINUE; if (request.getAttribute(REQUEST_DISPATCHED) == null) { AtmosphereResponse response = null; response.request(ar); attachWriter(r); Action action = framework.doCometSupport(ar, response); response.destroyable(false); response.setIntHeader(WebSocketUtils.SC_KEY, 400); } else { response.setIntHeader(WebSocketUtils.SC_KEY, 500); OutputStream out = response.getOutputStream(); out.write(createResponse(response, null, true)); out.close();
@Override public Action inspect(AtmosphereResource r) { final AtmosphereRequest request = r.getRequest(); if (request.getHeader("SwaggerSocket") != null && request.getAttribute(SWAGGER_SOCKET_DISPATCHED) == null && r.transport() != AtmosphereResource.TRANSPORT.WEBSOCKET) { AtmosphereResponse response = r.getResponse(); response.setContentType("application/json"); AtmosphereFramework framework = r.getAtmosphereConfig().framework(); response.asyncIOWriter(new AsyncIOWriterAdapter() { response.getOutputStream().write(mapper.writeValueAsBytes(statusMessage)); StatusMessage statusMessage = new StatusMessage.Builder().status(new StatusMessage.Status(503, "Not Allowed")) .identity(identity).build(); response.getOutputStream().write(mapper.writeValueAsBytes(statusMessage)); return Action.CANCELLED; ar.setAttribute(SWAGGER_SOCKET_DISPATCHED, "true"); framework.doCometSupport(ar, response.request(ar).destroyable(false)); } catch (ServletException e) { logger.warn("", e); response.flushBuffer(); return Action.CANCELLED; } catch (IOException e) {
@Override public Action inspect(final AtmosphereResource r) { if (ok && request.attributes().get(SWAGGER_SOCKET_DISPATCHED) == null) { AtmosphereResponse response = new WrappedAtmosphereResponse(r.getResponse(), request); logger.debug("Method {} Transport {}", request.getMethod(), r.transport()); response.setContentType("application/json"); response.getOutputStream().write(mapper.writeValueAsBytes(statusMessage)); StatusMessage statusMessage = new StatusMessage.Builder().status(new StatusMessage.Status(503, "Not Allowed")) .identity(swaggerSocketMessage.getIdentity()).build(); response.getOutputStream().write(mapper.writeValueAsBytes(statusMessage)); return Action.CANCELLED; response.request(ar); attachWriter(r); Action action = framework.doCometSupport(ar, response); response.destroyable(false); response.setStatus(500, "Server Error"); ResponseMessage responseMessage = new ResponseMessage(identity, createResponseBuilder(response, null).build()); response.getOutputStream().write(mapper.writeValueAsBytes(responseMessage));
if (!jersey && r.getRequest().getAttribute(X_WEBSOCKET_GWT) != null) { r.getRequest().contentType(Constants.GWT_RPC_MEDIA_TYPE); if (r.getRequest().getContentType() == null || !r.getRequest().getContentType().contains("x-gwt-rpc") || jersey) { charEncoding = "UTF-8"; r.getResponse().setContentType(contentType); r.getResponse().setCharacterEncoding(charEncoding); r.setSerializer(new GwtRpcSerializer(r));
getLogger().log(Level.FINER, "New push connection for resource {0} with transport {1}", new Object[] { resource.uuid(), resource.transport() }); resource.getResponse().setContentType("text/plain; charset=UTF-8"); resource.getResponse().addHeader("Connection", "close"); String requestToken = resource.getRequest() .getParameter(ApplicationConstants.CSRF_TOKEN_PARAMETER); if (!VaadinService.isCsrfTokenValid(session, requestToken)) { getLogger().log(Level.WARNING, "Invalid CSRF token in new connection received from {0}", resource.getRequest().getRemoteHost());
if (r.request() == null || r.request().getAttribute("swaggersocket.handshake") != null) { return message; if (invalidState((Request) r.request().getAttribute(String.valueOf(r.request().hashCode())))) { logger.error("Response's body not allowed on handshake {}", message); return null; AtmosphereResource ar = (AtmosphereResource) r.request().getAttribute(FrameworkConfig.ATMOSPHERE_RESOURCE); if (ar.transport().equals(AtmosphereResource.TRANSPORT.LONG_POLLING)) { m = new String(message, offset, length, r.getCharacterEncoding()); } catch (UnsupportedEncodingException e) { logger.trace("", e); if (ar.isSuspended()) { if (!m.endsWith(END_MESSAGE)) { StringBuffer cumulatedMessage = (StringBuffer) ar.getRequest().getAttribute("swaggersocket.message"); if (cumulatedMessage == null) { ar.getRequest().setAttribute("swaggersocket.message", new StringBuffer(m)); ResponseMessage m = wrapMessage(r, new String(message, offset, length, r.request().getCharacterEncoding())); if (m != null) { return mapper.writeValueAsBytes(m);
@Override public void onSuspend(AtmosphereResourceEvent event) { final String srid = (String)event.getResource().getRequest() .getAttribute(ApplicationConfig.SUSPENDED_ATMOSPHERE_RESOURCE_UUID); LOG.log(Level.FINE, "Registrering suspended resource: {}", srid); suspendedResponses.put(srid, event.getResource().getResponse()); AsyncIOWriter writer = event.getResource().getResponse().getAsyncIOWriter(); if (writer instanceof AtmosphereInterceptorWriter) { ((AtmosphereInterceptorWriter)writer).interceptor(interceptor); } }
@Override public void onStateChange(AtmosphereResourceEvent event) throws IOException { if (event.getMessage() == null || event.isCancelled() || event.isResuming() || event.isResumedOnTimeout()) { return; } AtmosphereResource resource = event.getResource(); AtmosphereRequest req = resource.getRequest(); AtmosphereResponse res = resource.getResponse(); PrintWriter writer = res.getWriter(); writer.print((String) event.getMessage()); writer.flush(); if (req.getParameter("transport").startsWith("longpoll")) { req.setAttribute("used", true); resource.resume(); } }
@Override public Action inspect(AtmosphereResource r) { final AtmosphereRequest request = r.getRequest(); final AtmosphereResponse response = r.getResponse(); final AtmosphereHandler atmosphereHandler = (AtmosphereHandler) request.getAttribute(FrameworkConfig.ATMOSPHERE_HANDLER); try { String path = request.getPathInfo(); if (path == null || path.length() == 0 || "/".equals(path)) { logger.debug("Not a SocketIO client"); } else if (protocol == null && version != null) { response.setStatus(200); response.getWriter().print(session.getSessionId() + ":" + heartbeatInterval + ":" + timeout + ":" + availableTransports); if (transport != null) { if (!SocketIOAtmosphereHandler.class.isAssignableFrom(atmosphereHandler.getClass())) { response.asyncIOWriter(new AsyncIOWriterAdapter() {
@Override public Action inspect(AtmosphereResource r) { final AtmosphereRequest request = r.getRequest(); final AtmosphereResponse response = r.getResponse(); final AtmosphereHandler atmosphereHandler = r.getAtmosphereHandler(); try { String path = request.getPathInfo(); if (path == null || path.length() == 0 || "/".equals(path)) { logger.debug("Not a SocketIO client"); } else if (protocol == null && version != null) { response.setStatus(200); response.setContentType("plain/text"); response.getWriter().print(session.getSessionId() + ":" + (heartbeatTimeout/1000) + ":" + (timeout/1000) + ":" + availableTransports); if (transport != null) { if (!SocketIOAtmosphereHandler.class.isAssignableFrom(atmosphereHandler.getClass())) { response.asyncIOWriter(new AsyncIOWriterAdapter() { @Override public AsyncIOWriter write(AtmosphereResponse r, String data) throws IOException {
private final void attachWriter(final AtmosphereResource r) { final AtmosphereRequest request = r.getRequest(); AtmosphereResponse res = r.getResponse(); AsyncIOWriter writer = res.getAsyncIOWriter(); if (queue == null) { queue = new LinkedBlockingQueue<AtmosphereResource>(); request.getSession().setAttribute(SUSPENDED_RESPONSE, queue); if (r.transport() != AtmosphereResource.TRANSPORT.WEBSOCKET) { writer = new AtmosphereInterceptorWriter() { res.asyncIOWriter(writer);
public StreamSocket(AtmosphereResource resource) { super(resource); this.isAndroid = isAndroid(resource.getRequest().getHeader("user-agent")); resource.getResponse().setContentType(streamContentType()); }
private Action iframe(AtmosphereResource r) { final AtmosphereResponse response = r.getResponse(); response.setContentType("text/html"); String origin = framework.getAtmosphereConfig().getInitParameter(SOCKS_JS_ORIGIN); if (origin == null) { origin = "http://localhost:8080/lib/sockjs.js"; } try { response.write(IFrameUtils.generateIFrame(origin)).flushBuffer(); } catch (IOException e) { logger.error("", e); } return Action.CANCELLED; }
AtmosphereRequest request = response.request(); String refid = (String)request.getAttribute(WebSocketConstants.DEFAULT_REQUEST_ID_KEY); if (AtmosphereResource.TRANSPORT.WEBSOCKET != response.resource().transport()) { return payload; response.addHeader(WebSocketConstants.DEFAULT_RESPONSE_ID_KEY, refid); headers.put(WebSocketConstants.DEFAULT_RESPONSE_ID_KEY, refid); String sc = response.getHeader(WebSocketUtils.SC_KEY); if (sc == null) { sc = Integer.toString(response.getStatus()); headers.put("Content-Type", response.getContentType()); for (Map.Entry<String, String> hv : response.headers().entrySet()) { if (!"Content-Type".equalsIgnoreCase(hv.getKey()) && includedheaders != null && includedheaders.matcher(hv.getKey()).matches()