@Override public Action inspect(AtmosphereResource r) { if (Utils.webSocketMessage(r)) return Action.CONTINUE; try { r.getResponse().addHeader("X-Accel-Buffering", "No"); } catch (Throwable t) { logger.trace("", t); } return Action.CONTINUE; } }
@Override public Action inspect(AtmosphereResource r) { if (Utils.webSocketMessage(r)){ AtmosphereResourceImpl.class.cast(r).action().type(Action.TYPE.SUSPEND_MESSAGE); } return Action.CONTINUE; } }
@Override public Action inspect(final AtmosphereResource r) { if (Utils.webSocketMessage(r)) return Action.CONTINUE; final AtmosphereResponse response = r.getResponse(); super.inspect(r); AsyncIOWriter writer = response.getAsyncIOWriter(); if (AtmosphereInterceptorWriter.class.isAssignableFrom(writer.getClass())) { AtmosphereInterceptorWriter.class.cast(writer).interceptor(interceptor); } else { logger.warn("Unable to apply {}. Your AsyncIOWriter must implement {}", getClass().getName(), AtmosphereInterceptorWriter.class.getName()); } return Action.CONTINUE; }
@Override public Action inspect(final AtmosphereResource r) { if (AtmosphereResource.TRANSPORT.UNDEFINED == r.transport() || Utils.webSocketMessage(r)) return Action.CONTINUE; final AtmosphereResponse response = r.getResponse(); super.inspect(r); AsyncIOWriter writer = response.getAsyncIOWriter(); if (AtmosphereInterceptorWriter.class.isAssignableFrom(writer.getClass())) { AtmosphereInterceptorWriter.class.cast(writer).interceptor(interceptor); } else { logger.warn("Unable to apply {}. Your AsyncIOWriter must implement {}", getClass().getName(), AtmosphereInterceptorWriter.class.getName()); } return Action.CONTINUE; }
@Override public Action inspect(AtmosphereResource r) { if (Utils.webSocketMessage(r)) return Action.CONTINUE; if (r.session(false) == null && !ids.remove(r.uuid()) && r.getRequest().getMethod().equalsIgnoreCase("GET")) { r.session(true); ids.offer(r.uuid()); return Action.CANCELLED; } return Action.CONTINUE; } }
protected void register() { if (!Utils.pollableTransport(transport()) && !Utils.webSocketMessage(this)) { config.resourcesFactory().registerUuidForFindCandidate(this); } }
@Override public Action inspect(final AtmosphereResource r) { if (Utils.webSocketMessage(r)) return Action.CONTINUE; AtmosphereRequest request = AtmosphereResourceImpl.class.cast(r).getRequest(false); String uuid = r.uuid(); if (closeMessage(request)) { AtmosphereResource ss = config.resourcesFactory().find(uuid); if (ss == null) { logger.debug("No Suspended Connection found for {}. Using the AtmosphereResource associated with the close message", uuid); ss = r; } if (ss == null) { logger.debug("Was unable to execute onDisconnect on {}", r.uuid()); return Action.CONTINUE; } logger.debug("AtmosphereResource {} disconnected", uuid); // Block websocket closing detection AtmosphereResourceEventImpl.class.cast(ss.getAtmosphereResourceEvent()).isClosedByClient(true); p.completeLifecycle(ss, false); return Action.CANCELLED; } return Action.CONTINUE; }
@Override public Action inspect(final AtmosphereResource r) { if (Utils.webSocketMessage(r)) return Action.CONTINUE; final AtmosphereRequest request = AtmosphereResourceImpl.class.cast(r).getRequest(false); boolean connecting = request.getHeader(HeaderConfig.X_ATMOSPHERE_TRACKING_ID) != null && request.getHeader(HeaderConfig.X_ATMOSPHERE_TRACKING_ID).equals("0"); if (!connecting && !Utils.pollableTransport(r.transport())) { if (!trackedUUID.add(r.uuid())) { logger.trace("Blocking {} from suspend", r.uuid()); AtmosphereResourceImpl.class.cast(r).disableSuspendEvent(true); } r.addEventListener(new AtmosphereResourceEventListenerAdapter() { @Override public void onDisconnect(AtmosphereResourceEvent event) { logger.trace("Untracking {}", r.uuid()); trackedUUID.remove(r.uuid()); } @Override public void onClose(AtmosphereResourceEvent event) { onDisconnect(event); } }); } return Action.CONTINUE; }
@Override public Action inspect(AtmosphereResource r) { if (Utils.webSocketMessage(r)) return Action.CONTINUE;
@Override public Action inspect(final AtmosphereResource r) { if (Utils.webSocketMessage(r)) return Action.CONTINUE;
@Override public Action inspect(final AtmosphereResource r) { if (Utils.webSocketMessage(r)) return Action.CONTINUE;
@Override public Action inspect(AtmosphereResource r) { if (Utils.webSocketMessage(r)) return Action.CONTINUE; final AtmosphereResponse response = r.getResponse(); final AtmosphereRequest request = r.getRequest(); // For extension that aren't supporting this interceptor (like Jersey) request.setAttribute(ApplicationConfig.NO_CACHE_HEADERS, injectCacheHeaders); if (writeHeaders && injectCacheHeaders) { // Set to expire far in the past. response.setHeader(EXPIRES, "-1"); // Set standard HTTP/1.1 no-cache headers. response.setHeader(CACHE_CONTROL, "no-store, no-cache, must-revalidate"); // Set standard HTTP/1.0 no-cache header. response.setHeader(PRAGMA, "no-cache"); } return Action.CONTINUE; }
@Override public Action inspect(final AtmosphereResource r) { if (!Utils.pollableTransport(r.transport()) && !Utils.webSocketMessage(r)){
@Override public void postInspect(final AtmosphereResource r) { if (r.transport().equals(UNDEFINED) || Utils.webSocketMessage(r) || r.transport().equals(POLLING)) return; AtmosphereResourceImpl impl = AtmosphereResourceImpl.class.cast(r); if ( (force || impl.getRequest(false).getMethod().equalsIgnoreCase(method)) && !impl.action().equals(Action.CANCELLED) && impl.isInScope()) { logger.trace("Marking AtmosphereResource {} for suspend operation", r.uuid()); r.addEventListener(new OnBroadcast() { @Override public void onBroadcast(AtmosphereResourceEvent event) { switch (r.transport()) { case JSONP: case AJAX: case LONG_POLLING: break; default: try { r.getResponse().flushBuffer(); } catch (IOException e) { logger.trace("", e); } break; } } }).suspend(timeoutInMilli); } }
@Override public Action inspect(AtmosphereResource r) { if (Utils.webSocketMessage(r)) return Action.CONTINUE; if (r.getRequest().localAttributes().containsKey(FrameworkConfig.SECURITY_SUBJECT) == false) { try { Subject currentUser = null; if (r.transport().equals(TRANSPORT.WEBSOCKET)) { WebEnvironment env = WebUtils.getRequiredWebEnvironment(r.getAtmosphereConfig().getServletContext()); currentUser = new WebSubject.Builder(env.getSecurityManager(), r.getRequest(), r.getResponse()).buildWebSubject(); } else { currentUser = SecurityUtils.getSubject(); } if (currentUser != null) { r.getRequest().setAttribute(FrameworkConfig.SECURITY_SUBJECT, currentUser); } } catch (UnavailableSecurityManagerException ex) { logger.info("Shiro Web Security : {}", ex.getMessage()); } catch (java.lang.IllegalStateException ex) { logger.info("Shiro Web Environment : {}", ex.getMessage()); } } return Action.CONTINUE; } }
@Override public Action inspect(final AtmosphereResource ar) { if (Utils.webSocketMessage(ar)) return Action.CONTINUE;
@Override public Action inspect(AtmosphereResource r) { if (Utils.webSocketMessage(r)) return Action.CONTINUE; if (!enableAccessControl) return Action.CONTINUE; AtmosphereRequest req = r.getRequest(); AtmosphereResponse res = r.getResponse(); if (req.getHeader("Origin") != null && res.getHeader("Access-Control-Allow-Origin") == null) { res.addHeader("Access-Control-Allow-Origin", req.getHeader("Origin")); res.addHeader("Access-Control-Expose-Headers", EXPOSE_HEADERS); res.setHeader("Access-Control-Allow-Credentials", "true"); } if ("OPTIONS".equals(req.getMethod())) { res.setHeader("Access-Control-Allow-Methods", "OPTIONS, GET, POST"); res.setHeader("Access-Control-Allow-Headers", "Origin, Content-Type, AuthToken, X-Atmosphere-Framework, X-Requested-With, " + EXPOSE_HEADERS + ", X-Atmosphere-Transport, X-Atmosphere-TrackMessageSize, X-atmo-protocol"); res.setHeader("Access-Control-Max-Age", "-1"); return Action.SKIP_ATMOSPHEREHANDLER; } return Action.CONTINUE; }
String method = request.getMethod(); boolean polling = Utils.pollableTransport(resource.transport()); boolean webSocketMessage = Utils.webSocketMessage(resource);
if (Utils.webSocketMessage(r)) return Action.CONTINUE;