TyrusUpgradeResponse upgradeResponse = new TyrusUpgradeResponse(); UpgradeInfo upgradeInfo = engine.upgrade(requestContext, upgradeResponse); success = SUCCESS.equals(upgradeInfo.getStatus()); if (success) { if (logger.isTraceEnabled()) { logger.trace("Successful request upgrade: " + upgradeResponse.getHeaders());
@Override protected void handleSuccess(HttpServletRequest request, HttpServletResponse response, UpgradeInfo upgradeInfo, TyrusUpgradeResponse upgradeResponse) throws IOException, ServletException { TyrusHttpUpgradeHandler handler = request.upgrade(TyrusHttpUpgradeHandler.class); Writer servletWriter = newServletWriter(handler); handler.preInit(upgradeInfo, servletWriter, request.getUserPrincipal() != null); response.setStatus(upgradeResponse.getStatus()); upgradeResponse.getHeaders().forEach((key, value) -> response.addHeader(key, Utils.getHeaderFromList(value))); response.flushBuffer(); }
private static UpgradeResponse getUpgradeResponse(HttpResponsePacket httpResponsePacket) { TyrusUpgradeResponse tyrusUpgradeResponse = new TyrusUpgradeResponse(); for (String name : httpResponsePacket.getHeaders().names()) { for (String headerValue : httpResponsePacket.getHeaders().values(name)) { final List<String> values = tyrusUpgradeResponse.getHeaders().get(name); if (values == null) { tyrusUpgradeResponse.getHeaders().put(name, Utils.parseHeaderValue(headerValue.trim())); } else { values.addAll(Utils.parseHeaderValue(headerValue.trim())); } } } tyrusUpgradeResponse.setStatus(httpResponsePacket.getStatus()); return tyrusUpgradeResponse; }
final TyrusUpgradeResponse tyrusUpgradeResponse = new TyrusUpgradeResponse(); final WebSocketEngine.UpgradeInfo upgradeInfo = engine.upgrade(requestContext, tyrusUpgradeResponse); switch (upgradeInfo.getStatus()) { case HANDSHAKE_FAILED: appendTraceHeaders(httpServletResponse, tyrusUpgradeResponse); httpServletResponse.sendError(tyrusUpgradeResponse.getStatus()); break; case NOT_APPLICABLE: httpServletResponse.setStatus(tyrusUpgradeResponse.getStatus()); for (Map.Entry<String, List<String>> entry : tyrusUpgradeResponse.getHeaders().entrySet()) { httpServletResponse.addHeader(entry.getKey(), Utils.getHeaderFromList(entry.getValue()));
final TyrusUpgradeResponse upgradeResponse = new TyrusUpgradeResponse();
private void appendTraceHeaders(HttpServletResponse httpServletResponse, TyrusUpgradeResponse tyrusUpgradeResponse) { for (Map.Entry<String, List<String>> entry : tyrusUpgradeResponse.getHeaders().entrySet()) { if (entry.getKey().contains(UpgradeResponse.TRACING_HEADER_PREFIX)) { httpServletResponse.addHeader(entry.getKey(), Utils.getHeaderFromList(entry.getValue())); } } }
private void parseFirstLine(String[] responseLines, TyrusUpgradeResponse tyrusUpgradeResponse) throws ParseException { if (responseLines.length == 0) { throw new ParseException("Empty HTTP response"); } String firstLine = responseLines[0]; int versionEndIndex = firstLine.indexOf(' '); if (versionEndIndex == -1) { throw new ParseException("Unexpected format of the first line of a HTTP response: " + firstLine); } int statusCodeEndIndex = firstLine.indexOf(' ', versionEndIndex + 1); if (statusCodeEndIndex == -1) { throw new ParseException("Unexpected format of the first line of a HTTP response: " + firstLine); } String statusCode = firstLine.substring(versionEndIndex + 1, statusCodeEndIndex); String reasonPhrase = firstLine.substring(statusCodeEndIndex + 1); int status; try { status = Integer.parseInt(statusCode); } catch (Exception e) { throw new ParseException("Invalid format of status code: " + statusCode); } tyrusUpgradeResponse.setStatus(status); tyrusUpgradeResponse.setReasonPhrase(reasonPhrase); }
private static UpgradeResponse getUpgradeResponse(HttpResponsePacket httpResponsePacket) { TyrusUpgradeResponse tyrusUpgradeResponse = new TyrusUpgradeResponse(); for (String name : httpResponsePacket.getHeaders().names()) { for (String headerValue : httpResponsePacket.getHeaders().values(name)) { final List<String> values = tyrusUpgradeResponse.getHeaders().get(name); if (values == null) { tyrusUpgradeResponse.getHeaders().put(name, Utils.parseHeaderValue(headerValue.trim())); } else { values.addAll(Utils.parseHeaderValue(headerValue.trim())); } } } tyrusUpgradeResponse.setStatus(httpResponsePacket.getStatus()); return tyrusUpgradeResponse; }
final UpgradeResponse upgradeResponse = new TyrusUpgradeResponse(); final WebSocketEngine.UpgradeInfo upgradeInfo = serverContainer.getWebSocketEngine().upgrade(upgradeRequest, upgradeResponse);
TyrusUpgradeResponse parseUpgradeResponse() throws ParseException { String response = bufferToString(); String[] tokens = response.split(LINE_SEPARATOR); TyrusUpgradeResponse tyrusUpgradeResponse = new TyrusUpgradeResponse(); parseFirstLine(tokens, tyrusUpgradeResponse); List<String> lines = new LinkedList<>(); lines.addAll(Arrays.asList(tokens).subList(1, tokens.length)); Map<String, String> headers = parseHeaders(lines); for (Map.Entry<String, String> entry : headers.entrySet()) { final List<String> values = tyrusUpgradeResponse.getHeaders().get(entry.getKey()); if (values == null) { tyrusUpgradeResponse.getHeaders().put(entry.getKey(), Utils.parseHeaderValue(entry.getValue())); } else { values.addAll(Utils.parseHeaderValue(entry.getValue())); } } return tyrusUpgradeResponse; }
@Override protected void handleSuccess(HttpServletRequest request, HttpServletResponse response, UpgradeInfo upgradeInfo, TyrusUpgradeResponse upgradeResponse) throws IOException, ServletException { response.setStatus(upgradeResponse.getStatus()); upgradeResponse.getHeaders().forEach((key, value) -> response.addHeader(key, Utils.getHeaderFromList(value))); AsyncContext asyncContext = request.startAsync(); asyncContext.setTimeout(-1L); Object nativeRequest = getNativeRequest(request); BeanWrapper beanWrapper = new BeanWrapperImpl(nativeRequest); Object httpSocket = beanWrapper.getPropertyValue("connection.connectionHandler.rawConnection"); Object webSocket = webSocketHelper.newInstance(request, httpSocket); webSocketHelper.upgrade(webSocket, httpSocket, request.getServletContext()); response.flushBuffer(); boolean isProtected = request.getUserPrincipal() != null; Writer servletWriter = servletWriterHelper.newInstance(webSocket, isProtected); Connection connection = upgradeInfo.createConnection(servletWriter, noOpCloseListener); new BeanWrapperImpl(webSocket).setPropertyValue("connection", connection); new BeanWrapperImpl(servletWriter).setPropertyValue("connection", connection); webSocketHelper.registerForReadEvent(webSocket); }
TyrusUpgradeResponse upgradeResponse = new TyrusUpgradeResponse(); UpgradeInfo upgradeInfo = engine.upgrade(requestContext, upgradeResponse); success = SUCCESS.equals(upgradeInfo.getStatus()); if (success) { if (logger.isTraceEnabled()) { logger.trace("Successful request upgrade: " + upgradeResponse.getHeaders());
@Override protected void handleSuccess(HttpServletRequest request, HttpServletResponse response, UpgradeInfo upgradeInfo, TyrusUpgradeResponse upgradeResponse) throws IOException, ServletException { TyrusHttpUpgradeHandler handler = request.upgrade(TyrusHttpUpgradeHandler.class); Writer servletWriter = newServletWriter(handler); handler.preInit(upgradeInfo, servletWriter, request.getUserPrincipal() != null); response.setStatus(upgradeResponse.getStatus()); upgradeResponse.getHeaders().forEach((key, value) -> response.addHeader(key, Utils.getHeaderFromList(value))); response.flushBuffer(); }
TyrusUpgradeResponse upgradeResponse = new TyrusUpgradeResponse(); UpgradeInfo upgradeInfo = engine.upgrade(requestContext, upgradeResponse); success = SUCCESS.equals(upgradeInfo.getStatus()); if (success) { if (logger.isTraceEnabled()) { logger.trace("Successful request upgrade: " + upgradeResponse.getHeaders());
@Override protected void handleSuccess(HttpServletRequest request, HttpServletResponse response, UpgradeInfo upgradeInfo, TyrusUpgradeResponse upgradeResponse) throws IOException, ServletException { TyrusHttpUpgradeHandler handler = request.upgrade(TyrusHttpUpgradeHandler.class); Writer servletWriter = newServletWriter(handler); handler.preInit(upgradeInfo, servletWriter, request.getUserPrincipal() != null); response.setStatus(upgradeResponse.getStatus()); upgradeResponse.getHeaders().forEach((key, value) -> response.addHeader(key, Utils.getHeaderFromList(value))); response.flushBuffer(); }
@Override protected void handleSuccess(HttpServletRequest request, HttpServletResponse response, UpgradeInfo upgradeInfo, TyrusUpgradeResponse upgradeResponse) throws IOException, ServletException { response.setStatus(upgradeResponse.getStatus()); upgradeResponse.getHeaders().forEach((key, value) -> response.addHeader(key, Utils.getHeaderFromList(value))); AsyncContext asyncContext = request.startAsync(); asyncContext.setTimeout(-1L); Object nativeRequest = getNativeRequest(request); BeanWrapper beanWrapper = new BeanWrapperImpl(nativeRequest); Object httpSocket = beanWrapper.getPropertyValue("connection.connectionHandler.rawConnection"); Object webSocket = webSocketHelper.newInstance(request, httpSocket); webSocketHelper.upgrade(webSocket, httpSocket, request.getServletContext()); response.flushBuffer(); boolean isProtected = request.getUserPrincipal() != null; Writer servletWriter = servletWriterHelper.newInstance(webSocket, isProtected); Connection connection = upgradeInfo.createConnection(servletWriter, noOpCloseListener); new BeanWrapperImpl(webSocket).setPropertyValue("connection", connection); new BeanWrapperImpl(servletWriter).setPropertyValue("connection", connection); webSocketHelper.registerForReadEvent(webSocket); }
@Override protected void handleSuccess(HttpServletRequest request, HttpServletResponse response, UpgradeInfo upgradeInfo, TyrusUpgradeResponse upgradeResponse) throws IOException, ServletException { response.setStatus(upgradeResponse.getStatus()); upgradeResponse.getHeaders().forEach((key, value) -> response.addHeader(key, Utils.getHeaderFromList(value))); AsyncContext asyncContext = request.startAsync(); asyncContext.setTimeout(-1L); Object nativeRequest = getNativeRequest(request); BeanWrapper beanWrapper = new BeanWrapperImpl(nativeRequest); Object httpSocket = beanWrapper.getPropertyValue("connection.connectionHandler.rawConnection"); Object webSocket = webSocketHelper.newInstance(request, httpSocket); webSocketHelper.upgrade(webSocket, httpSocket, request.getServletContext()); response.flushBuffer(); boolean isProtected = request.getUserPrincipal() != null; Writer servletWriter = servletWriterHelper.newInstance(webSocket, isProtected); Connection connection = upgradeInfo.createConnection(servletWriter, noOpCloseListener); new BeanWrapperImpl(webSocket).setPropertyValue("connection", connection); new BeanWrapperImpl(servletWriter).setPropertyValue("connection", connection); webSocketHelper.registerForReadEvent(webSocket); }