Java 类org.springframework.http.server.ServletServerHttpRequest 实例源码

项目:GitHub    文件:JSONPResponseBodyAdvice.java   
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
                              Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request,
                              ServerHttpResponse response) {

    ResponseJSONP responseJsonp = returnType.getMethodAnnotation(ResponseJSONP.class);
    if(responseJsonp == null){
        responseJsonp = returnType.getContainingClass().getAnnotation(ResponseJSONP.class);
    }

    HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();
    String callbackMethodName = servletRequest.getParameter(responseJsonp.callback());

    if (!IOUtils.isValidJsonpQueryParam(callbackMethodName)) {
        if (logger.isDebugEnabled()) {
            logger.debug("Invalid jsonp parameter value:" + callbackMethodName);
        }
        callbackMethodName = null;
    }

    JSONPObject jsonpObject = new JSONPObject(callbackMethodName);
    jsonpObject.addParameter(body);
    beforeBodyWriteInternal(jsonpObject, selectedContentType, returnType, request, response);
    return jsonpObject;
}
项目:GitHub    文件:FastJsonpResponseBodyAdvice.java   
/**
 * Invoked only if the converter type is {@code FastJsonpHttpMessageConverter4}.
 */
public void beforeBodyWriteInternal(MappingFastJsonValue bodyContainer, MediaType contentType,
                                    MethodParameter returnType, ServerHttpRequest request, ServerHttpResponse response) {
    HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();
    for (String name : this.jsonpQueryParamNames) {
        String value = servletRequest.getParameter(name);
        if (value != null) {
            if (!isValidJsonpQueryParam(value)) {
                continue;
            }
            // MediaType contentTypeToUse = getContentType(contentType, request, response);
            // response.getHeaders().setContentType(contentTypeToUse);
            bodyContainer.setJsonpFunction(value);
            break;
        }
    }
}
项目:Instant-Messaging    文件:HandshakeInterceptor.java   
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
    System.out.println("before handshake");
    ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
    HttpSession session = servletRequest.getServletRequest().getSession(false);
    Long uid = (Long)session.getAttribute("uid");
    if(uid == null){
        return false;
    }

    //如果uid==null,afterConnectionEstablished不执行,协议转换不成功,报下面的错误
    //websocket.html?uid=1990:56 WebSocket connection to 'ws://localhost:8080/ws?uid=1990' failed: Error during WebSocket handshake: Unexpected response code: 500
    attributes.put("uid", uid);
    return true;

    // 如果这里返回false,浏览器会报下面这个错误
    // WebSocket connection to 'ws://localhost:8080/ws' failed: Error during WebSocket handshake: Unexpected response code: 200
}
项目:lams    文件:HttpPutFormContentFilter.java   
@Override
protected void doFilterInternal(final HttpServletRequest request, HttpServletResponse response,
        FilterChain filterChain) throws ServletException, IOException {

    if (("PUT".equals(request.getMethod()) || "PATCH".equals(request.getMethod())) && isFormContentType(request)) {
        HttpInputMessage inputMessage = new ServletServerHttpRequest(request) {
            @Override
            public InputStream getBody() throws IOException {
                return request.getInputStream();
            }
        };
        MultiValueMap<String, String> formParameters = formConverter.read(null, inputMessage);
        HttpServletRequest wrapper = new HttpPutFormContentRequestWrapper(request, formParameters);
        filterChain.doFilter(wrapper, response);
    }
    else {
        filterChain.doFilter(request, response);
    }
}
项目:role-api    文件:BaseLoggingFilter.java   
/**
 * Build log message for request in bound.
 *
 * @param request Request in bound.
 * @return Log message.
 * @since 1.0.0
 */
protected String buildRequestLog(HttpServletRequest request) {
    ServerHttpRequest httpRequest = new ServletServerHttpRequest(request);

    StringBuilder sb = new StringBuilder("Server has received a request").append(StringUtils.LF)
            .append(" > ").append(httpRequest.getMethod()).append(" ").append(httpRequest.getURI()).append
                    (StringUtils.LF);

    Map<String, String> headers = httpRequest.getHeaders().toSingleValueMap();
    for (Map.Entry<String, String> entry : headers.entrySet()) {
        sb.append(" > ").append(entry.getKey()).append(": ").append(entry.getValue()).append(StringUtils.LF);
    }

    sb.append(extractRequestPayload(request));

    return sb.toString();
}
项目:spring4-understanding    文件:AbstractJsonpResponseBodyAdvice.java   
@Override
protected void beforeBodyWriteInternal(MappingJacksonValue bodyContainer, MediaType contentType,
        MethodParameter returnType, ServerHttpRequest request, ServerHttpResponse response) {

    HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();

    for (String name : this.jsonpQueryParamNames) {
        String value = servletRequest.getParameter(name);
        if (value != null) {
            if (!isValidJsonpQueryParam(value)) {
                if (logger.isDebugEnabled()) {
                    logger.debug("Ignoring invalid jsonp parameter value: " + value);
                }
                continue;
            }
            MediaType contentTypeToUse = getContentType(contentType, request, response);
            response.getHeaders().setContentType(contentTypeToUse);
            bodyContainer.setJsonpFunction(value);
            break;
        }
    }
}
项目:spring4-understanding    文件:HttpEntityMethodProcessor.java   
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
        NativeWebRequest webRequest, WebDataBinderFactory binderFactory)
        throws IOException, HttpMediaTypeNotSupportedException {

    ServletServerHttpRequest inputMessage = createInputMessage(webRequest);
    Type paramType = getHttpEntityType(parameter);

    Object body = readWithMessageConverters(webRequest, parameter, paramType);
    if (RequestEntity.class == parameter.getParameterType()) {
        return new RequestEntity<Object>(body, inputMessage.getHeaders(),
                inputMessage.getMethod(), inputMessage.getURI());
    }
    else {
        return new HttpEntity<Object>(body, inputMessage.getHeaders());
    }
}
项目:spring4-understanding    文件:HttpEntityMethodProcessor.java   
private boolean isResourceNotModified(ServletServerHttpRequest inputMessage, ServletServerHttpResponse outputMessage) {
    List<String> ifNoneMatch = inputMessage.getHeaders().getIfNoneMatch();
    long ifModifiedSince = inputMessage.getHeaders().getIfModifiedSince();
    String eTag = addEtagPadding(outputMessage.getHeaders().getETag());
    long lastModified = outputMessage.getHeaders().getLastModified();
    boolean notModified = false;

    if (!ifNoneMatch.isEmpty() && (inputMessage.getHeaders().containsKey(HttpHeaders.IF_UNMODIFIED_SINCE)
            || inputMessage.getHeaders().containsKey(HttpHeaders.IF_MATCH))) {
        // invalid conditional request, do not process
    }
    else if (lastModified != -1 && StringUtils.hasLength(eTag)) {
        notModified = isETagNotModified(ifNoneMatch, eTag) && isTimeStampNotModified(ifModifiedSince, lastModified);
    }
    else if (lastModified != -1) {
        notModified = isTimeStampNotModified(ifModifiedSince, lastModified);
    }
    else if (StringUtils.hasLength(eTag)) {
        notModified = isETagNotModified(ifNoneMatch, eTag);
    }
    return notModified;
}
项目:spring4-understanding    文件:RequestResponseBodyMethodProcessor.java   
@Override
protected <T> Object readWithMessageConverters(NativeWebRequest webRequest, MethodParameter methodParam,
        Type paramType) throws IOException, HttpMediaTypeNotSupportedException, HttpMessageNotReadableException {

    HttpServletRequest servletRequest = webRequest.getNativeRequest(HttpServletRequest.class);
    ServletServerHttpRequest inputMessage = new ServletServerHttpRequest(servletRequest);

    Object arg = readWithMessageConverters(inputMessage, methodParam, paramType);
    if (arg == null) {
        if (methodParam.getParameterAnnotation(RequestBody.class).required()) {
            throw new HttpMessageNotReadableException("Required request body is missing: " +
                    methodParam.getMethod().toGenericString());
        }
    }
    return arg;
}
项目:spring4-understanding    文件:ServletUriComponentsBuilder.java   
/**
 * Initialize a builder with a scheme, host,and port (but not path and query).
 */
private static ServletUriComponentsBuilder initFromRequest(HttpServletRequest request) {
    HttpRequest httpRequest = new ServletServerHttpRequest(request);
    UriComponents uriComponents = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
    String scheme = uriComponents.getScheme();
    String host = uriComponents.getHost();
    int port = uriComponents.getPort();

    ServletUriComponentsBuilder builder = new ServletUriComponentsBuilder();
    builder.scheme(scheme);
    builder.host(host);
    if (("http".equals(scheme) && port != 80) || ("https".equals(scheme) && port != 443)) {
        builder.port(port);
    }
    return builder;
}
项目:spring4-understanding    文件:RequestResponseBodyAdviceChainTests.java   
@SuppressWarnings("unchecked")
@Test
public void requestBodyAdvice() throws IOException {

    RequestBodyAdvice requestAdvice = Mockito.mock(RequestBodyAdvice.class);
    ResponseBodyAdvice<String> responseAdvice = Mockito.mock(ResponseBodyAdvice.class);
    List<Object> advice = Arrays.asList(requestAdvice, responseAdvice);
    RequestResponseBodyAdviceChain chain = new RequestResponseBodyAdviceChain(advice);

    HttpInputMessage wrapped = new ServletServerHttpRequest(new MockHttpServletRequest());
    given(requestAdvice.supports(this.paramType, String.class, this.converterType)).willReturn(true);
    given(requestAdvice.beforeBodyRead(eq(this.request), eq(this.paramType), eq(String.class),
            eq(this.converterType))).willReturn(wrapped);

    assertSame(wrapped, chain.beforeBodyRead(this.request, this.paramType, String.class, this.converterType));

    String modified = "body++";
    given(requestAdvice.afterBodyRead(eq(this.body), eq(this.request), eq(this.paramType),
            eq(String.class), eq(this.converterType))).willReturn(modified);

    assertEquals(modified, chain.afterBodyRead(this.body, this.request, this.paramType,
            String.class, this.converterType));
}
项目:spring4-understanding    文件:ServletUriComponentsBuilderTests.java   
@Test
public void fromRequestWithForwardedHostAndPort() {
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setScheme("http");
    request.setServerName("localhost");
    request.setServerPort(80);
    request.setRequestURI("/mvc-showcase");
    request.addHeader("X-Forwarded-Proto", "https");
    request.addHeader("X-Forwarded-Host", "84.198.58.199");
    request.addHeader("X-Forwarded-Port", "443");

    HttpRequest httpRequest = new ServletServerHttpRequest(request);
    UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();

    assertEquals("https://84.198.58.199/mvc-showcase", result.toString());
}
项目:spring4-understanding    文件:HttpPutFormContentFilter.java   
@Override
protected void doFilterInternal(final HttpServletRequest request, HttpServletResponse response,
        FilterChain filterChain) throws ServletException, IOException {

    if (("PUT".equals(request.getMethod()) || "PATCH".equals(request.getMethod())) && isFormContentType(request)) {
        HttpInputMessage inputMessage = new ServletServerHttpRequest(request) {
            @Override
            public InputStream getBody() throws IOException {
                return request.getInputStream();
            }
        };
        MultiValueMap<String, String> formParameters = formConverter.read(null, inputMessage);
        HttpServletRequest wrapper = new HttpPutFormContentRequestWrapper(request, formParameters);
        filterChain.doFilter(wrapper, response);
    }
    else {
        filterChain.doFilter(request, response);
    }
}
项目:spring4-understanding    文件:UriComponentsBuilderTests.java   
@Test
public void fromHttpRequest() throws URISyntaxException {
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setScheme("http");
    request.setServerName("localhost");
    request.setServerPort(-1);
    request.setRequestURI("/path");
    request.setQueryString("a=1");

    UriComponents result = UriComponentsBuilder.fromHttpRequest(new ServletServerHttpRequest(request)).build();
    assertEquals("http", result.getScheme());
    assertEquals("localhost", result.getHost());
    assertEquals(-1, result.getPort());
    assertEquals("/path", result.getPath());
    assertEquals("a=1", result.getQuery());
}
项目:spring4-understanding    文件:UriComponentsBuilderTests.java   
@Test
public void fromHttpRequestResetsPortBeforeSettingIt() throws Exception {
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.addHeader("X-Forwarded-Proto", "https");
    request.addHeader("X-Forwarded-Host", "84.198.58.199");
    request.addHeader("X-Forwarded-Port", 443);
    request.setScheme("http");
    request.setServerName("example.com");
    request.setServerPort(80);
    request.setRequestURI("/rest/mobile/users/1");

    HttpRequest httpRequest = new ServletServerHttpRequest(request);
    UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();

    assertEquals("https", result.getScheme());
    assertEquals("84.198.58.199", result.getHost());
    assertEquals(-1, result.getPort());
    assertEquals("/rest/mobile/users/1", result.getPath());
}
项目:spring4-understanding    文件:UriComponentsBuilderTests.java   
@Test
public void fromHttpRequestWithForwardedHostWithForwardedScheme() {
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setScheme("http");
    request.setServerName("localhost");
    request.setServerPort(10080);
    request.addHeader("X-Forwarded-Host", "example.org");
    request.addHeader("X-Forwarded-Proto", "https");

    HttpRequest httpRequest = new ServletServerHttpRequest(request);
    UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();

    assertEquals("example.org", result.getHost());
    assertEquals("https", result.getScheme());
    assertEquals(-1, result.getPort());
}
项目:spring4-understanding    文件:UriComponentsBuilderTests.java   
@Test
public void fromHttpRequestWithForwardedProtoAndDefaultPort() {
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setScheme("http");
    request.setServerName("localhost");
    request.setServerPort(80);
    request.setRequestURI("/mvc-showcase");
    request.addHeader("X-Forwarded-Proto", "https");
    request.addHeader("X-Forwarded-Host", "84.198.58.199");
    request.addHeader("X-Forwarded-Port", "443");

    HttpRequest httpRequest = new ServletServerHttpRequest(request);
    UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();

    assertEquals("https://84.198.58.199/mvc-showcase", result.toString());
}
项目:spring4-understanding    文件:UriComponentsBuilderTests.java   
@Test
public void fromHttpRequestWithForwardedProtoMultiValueHeader() {
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setScheme("http");
    request.setServerName("localhost");
    request.setServerPort(8080);
    request.setRequestURI("/mvc-showcase");
    request.addHeader("X-Forwarded-Host", "a.example.org");
    request.addHeader("X-Forwarded-Port", "443");
    request.addHeader("X-Forwarded-Proto", "https,https");

    HttpRequest httpRequest = new ServletServerHttpRequest(request);
    UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();

    assertEquals("https://a.example.org/mvc-showcase", result.toString());
}
项目:spring4-understanding    文件:UriComponentsBuilderTests.java   
@Test
public void fromHttpRequestMultipleForwardedHeader() throws Exception {
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.addHeader("Forwarded", "host=84.198.58.199;proto=https");
    request.addHeader("Forwarded", "proto=ftp; host=1.2.3.4");
    request.setScheme("http");
    request.setServerName("example.com");
    request.setRequestURI("/rest/mobile/users/1");

    HttpRequest httpRequest = new ServletServerHttpRequest(request);
    UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();

    assertEquals("https", result.getScheme());
    assertEquals("84.198.58.199", result.getHost());
    assertEquals("/rest/mobile/users/1", result.getPath());
}
项目:service-authorization    文件:OAuthSuccessHandler.java   
@Override
protected void handle(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
        throws IOException, ServletException {
    OAuth2Authentication oauth = (OAuth2Authentication) authentication;
    OAuth2AccessToken accessToken = tokenServicesFacade.get()
            .createToken(ReportPortalClient.ui, oauth.getName(), oauth.getUserAuthentication(), oauth.getOAuth2Request().getExtensions());

    MultiValueMap<String, String> query = new LinkedMultiValueMap<>();
    query.add("token", accessToken.getValue());
    query.add("token_type", accessToken.getTokenType());
    URI rqUrl = UriComponentsBuilder.fromHttpRequest(new ServletServerHttpRequest(request)).replacePath("/ui/authSuccess.html")
            .replaceQueryParams(query).build().toUri();

    eventPublisher.publishEvent(new UiUserSignedInEvent(authentication));

    getRedirectStrategy().sendRedirect(request, response, rqUrl.toString());
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:HttpTunnelServerTests.java   
@Before
public void setup() throws Exception {
    MockitoAnnotations.initMocks(this);
    this.server = new HttpTunnelServer(this.serverConnection);
    given(this.serverConnection.open(anyInt())).willAnswer(new Answer<ByteChannel>() {
        @Override
        public ByteChannel answer(InvocationOnMock invocation) throws Throwable {
            MockServerChannel channel = HttpTunnelServerTests.this.serverChannel;
            channel.setTimeout((Integer) invocation.getArguments()[0]);
            return channel;
        }
    });
    this.servletRequest = new MockHttpServletRequest();
    this.servletRequest.setAsyncSupported(true);
    this.servletResponse = new MockHttpServletResponse();
    this.request = new ServletServerHttpRequest(this.servletRequest);
    this.response = new ServletServerHttpResponse(this.servletResponse);
    this.serverChannel = new MockServerChannel();
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:DispatcherFilterTests.java   
@Test
public void handledByDispatcher() throws Exception {
    HttpServletRequest request = new MockHttpServletRequest("GET", "/hello");
    HttpServletResponse response = new MockHttpServletResponse();
    willReturn(true).given(this.dispatcher).handle(any(ServerHttpRequest.class),
            any(ServerHttpResponse.class));
    this.filter.doFilter(request, response, this.chain);
    verifyZeroInteractions(this.chain);
    verify(this.dispatcher).handle(this.serverRequestCaptor.capture(),
            this.serverResponseCaptor.capture());
    ServerHttpRequest dispatcherRequest = this.serverRequestCaptor.getValue();
    ServletServerHttpRequest actualRequest = (ServletServerHttpRequest) dispatcherRequest;
    ServerHttpResponse dispatcherResponse = this.serverResponseCaptor.getValue();
    ServletServerHttpResponse actualResponse = (ServletServerHttpResponse) dispatcherResponse;
    assertThat(actualRequest.getServletRequest()).isEqualTo(request);
    assertThat(actualResponse.getServletResponse()).isEqualTo(response);
}
项目:pivotal-cla    文件:UrlBuilder.java   
public String build() {
    String url = UriComponentsBuilder //
            .fromHttpRequest(new ServletServerHttpRequest(request))//
            .replacePath(path) //
            .replaceQueryParams(params) //
            .build() //
            .toUriString(); //

    this.path = null;
    this.params.clear();
    if (url.contains("ngrok.io")) {
        url = url.replaceFirst(":80", "");
        url = url.replaceFirst("http:", "https:");
    }
    return url;
}
项目:spring-boot-concourse    文件:HttpTunnelServerTests.java   
@Before
public void setup() throws Exception {
    MockitoAnnotations.initMocks(this);
    this.server = new HttpTunnelServer(this.serverConnection);
    given(this.serverConnection.open(anyInt())).willAnswer(new Answer<ByteChannel>() {
        @Override
        public ByteChannel answer(InvocationOnMock invocation) throws Throwable {
            MockServerChannel channel = HttpTunnelServerTests.this.serverChannel;
            channel.setTimeout((Integer) invocation.getArguments()[0]);
            return channel;
        }
    });
    this.servletRequest = new MockHttpServletRequest();
    this.servletRequest.setAsyncSupported(true);
    this.servletResponse = new MockHttpServletResponse();
    this.request = new ServletServerHttpRequest(this.servletRequest);
    this.response = new ServletServerHttpResponse(this.servletResponse);
    this.serverChannel = new MockServerChannel();
}
项目:spring-boot-concourse    文件:DispatcherFilterTests.java   
@Test
public void handledByDispatcher() throws Exception {
    HttpServletRequest request = new MockHttpServletRequest("GET", "/hello");
    HttpServletResponse response = new MockHttpServletResponse();
    willReturn(true).given(this.dispatcher).handle(any(ServerHttpRequest.class),
            any(ServerHttpResponse.class));
    this.filter.doFilter(request, response, this.chain);
    verifyZeroInteractions(this.chain);
    verify(this.dispatcher).handle(this.serverRequestCaptor.capture(),
            this.serverResponseCaptor.capture());
    ServerHttpRequest dispatcherRequest = this.serverRequestCaptor.getValue();
    ServletServerHttpRequest actualRequest = (ServletServerHttpRequest) dispatcherRequest;
    ServerHttpResponse dispatcherResponse = this.serverResponseCaptor.getValue();
    ServletServerHttpResponse actualResponse = (ServletServerHttpResponse) dispatcherResponse;
    assertThat(actualRequest.getServletRequest()).isEqualTo(request);
    assertThat(actualResponse.getServletResponse()).isEqualTo(response);
}
项目:BIMplatform    文件:BinaryGeometryTemplateInterceptor.java   
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
        Map<String, Object> attributes) throws Exception {
    String rid = ((ServletServerHttpRequest) request).getServletRequest().getParameter("rid");
    String otid = ((ServletServerHttpRequest) request).getServletRequest().getParameter("otid");
    if (Strings.isNullOrEmpty(rid) || Strings.isNullOrEmpty(otid)) {
        return false;
    } else {
        attributes.put("rid", rid);
        attributes.put("otid", otid);
        return true;
    }
}
项目:BIMplatform    文件:GeometryInterceptor.java   
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
        Map<String, Object> attributes) throws Exception {

    String rid = ((ServletServerHttpRequest) request).getServletRequest().getParameter("rid");

    if (Strings.isNullOrEmpty(rid)) {  
        return false;  
    } else {
        attributes.put("rid", rid);  
        return true;  
    }  

}
项目:BIMplatform    文件:StreamGeometryInterceptor.java   
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
        Map<String, Object> attributes) throws Exception {

    String rid = ((ServletServerHttpRequest) request).getServletRequest().getParameter("rid");

    if (Strings.isNullOrEmpty(rid)) {  
        return false;  
    } else {
        attributes.put("rid", rid);  
        return true;  
    }  

}
项目:Instant-Messaging    文件:HandshakeInterceptor.java   
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
    System.out.println("Before Handshake");
    ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
    HttpSession session = servletRequest.getServletRequest().getSession();
    if(session!=null){
        //区分socket连接以定向发送消息
        attributes.put("user", session.getAttribute("user"));
    }
    return true;
}
项目:opencron    文件:TerminalHandShaker.java   
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
    if (request instanceof ServletServerHttpRequest) {
        ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
        HttpSession session = servletRequest.getServletRequest().getSession();
        attributes.put("cols",servletRequest.getServletRequest().getParameter("cols"));
        attributes.put("rows",servletRequest.getServletRequest().getParameter("rows"));
        attributes.put("width",servletRequest.getServletRequest().getParameter("width"));
        attributes.put("height",servletRequest.getServletRequest().getParameter("height"));
        attributes.put(SSH_SESSION_ID,session.getAttribute(SSH_SESSION_ID));
        attributes.put(HTTP_SESSION_ID,session.getAttribute(HTTP_SESSION_ID));
    }
    return super.beforeHandshake(request,response,wsHandler,attributes);
}
项目:lemon-fileservice    文件:JsonpResponseBodyAdvice.java   
/** 
 * 重写callback方法,使即支持jsonp格式也支持json格式
 */
@Override
protected void beforeBodyWriteInternal(MappingJacksonValue bodyContainer, MediaType contentType,
                                       MethodParameter returnType, ServerHttpRequest request, ServerHttpResponse response) {

    HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();

    //如果不存在callback这个请求参数,直接返回,不需要处理为jsonp
    if (ObjectUtils.isEmpty(servletRequest.getParameter("callback"))) {
        return;
    }
    //按设定的请求参数(JsonAdvice构造方法中的this.jsonpQueryParamNames = new String[]{"callback"};),处理返回结果为jsonp格式
    for (String name : this.jsonpQueryParamNames) {
        String value = servletRequest.getParameter(name);
        if (value != null) {
            if (!isValidJsonpQueryParam(value)) {
    if (logger.isDebugEnabled()) {
        logger.debug("Ignoring invalid jsonp parameter value: " + value);
    }
    continue;
}
            MediaType contentTypeToUse = getContentType(contentType, request, response);
            response.getHeaders().setContentType(contentTypeToUse);
            bodyContainer.setJsonpFunction(value);
            return;
        }
    }
}
项目:dooo    文件:ApiResponseBodyAdvice.java   
@Override
public ApiResponse beforeBodyWrite(ApiResponse body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
    if (request instanceof ServletServerHttpRequest) {
        ServletServerHttpRequest servletServerHttpRequest = (ServletServerHttpRequest) request;
        RequestInfo requestInfo = (RequestInfo) servletServerHttpRequest.getServletRequest().getAttribute(Constants.REQUEST_INFO_TAG);
        if (requestInfo != null) {
            RequestStatistics.getSingleton().complete(requestInfo);
        }
    }

    return body;
}
项目:FastBootWeixin    文件:WxRequest.java   
public WxRequest(HttpServletRequest request, WxSessionManager wxSessionManager) throws IOException {
    this.request = request;
    this.wxSessionManager = wxSessionManager;
    // ServletWebRequest
    body = (Body) xmlConverter.read(Body.class, new ServletServerHttpRequest(request));
    requestUrl = request.getRequestURL().toString();
    requestUri = request.getRequestURI();
    WxWebUtils.setWxRequestToRequest(request, this);
}
项目:FastBootWeixin    文件:WxMessageResponseBodyAdvice.java   
@Override
public WxMessage beforeBodyWrite(WxMessage body, MethodParameter returnType,
                                 MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType,
                                 ServerHttpRequest request, ServerHttpResponse response) {
    if (!(request instanceof ServletServerHttpRequest) || body == null) {
        return body;
    }
    HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();
    WxRequest wxRequest = WxWebUtils.getWxRequestFromRequest(servletRequest);
    return wxMessageProcessor.process(new WxRequestMessageParameter(wxRequest), body);
}
项目:FastBootWeixin    文件:WxStringResponseBodyAdvice.java   
@Override
public String beforeBodyWrite(String body, MethodParameter returnType,
                              MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType,
                              ServerHttpRequest request, ServerHttpResponse response) {
    if (!(request instanceof ServletServerHttpRequest) || StringUtils.isEmpty(body)) {
        return null;
    }
    HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();
    WxRequest wxRequest = WxWebUtils.getWxRequestFromRequest(servletRequest);
    WxUserMessage text = WxMessage.Text.builder().content(body).build();
    return parseXml(wxMessageProcessor.process(new WxRequestMessageParameter(wxRequest), text));
}
项目:oma-riista-web    文件:JsonpControllerAdvice.java   
@Override
protected void beforeBodyWriteInternal(final MappingJacksonValue bodyContainer,
                                       final MediaType contentType,
                                       final MethodParameter returnType,
                                       final ServerHttpRequest request,
                                       final ServerHttpResponse response) {
    final HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();

    if (isGET(servletRequest) && isJsonpURI(servletRequest)) {
        super.beforeBodyWriteInternal(bodyContainer, contentType, returnType, request, response);
    }
}
项目:spring4-understanding    文件:AnnotationMethodHandlerExceptionResolver.java   
@SuppressWarnings({ "unchecked", "rawtypes", "resource" })
private ModelAndView handleResponseBody(Object returnValue, ServletWebRequest webRequest)
        throws ServletException, IOException {

    HttpInputMessage inputMessage = new ServletServerHttpRequest(webRequest.getRequest());
    List<MediaType> acceptedMediaTypes = inputMessage.getHeaders().getAccept();
    if (acceptedMediaTypes.isEmpty()) {
        acceptedMediaTypes = Collections.singletonList(MediaType.ALL);
    }
    MediaType.sortByQualityValue(acceptedMediaTypes);
    HttpOutputMessage outputMessage = new ServletServerHttpResponse(webRequest.getResponse());
    Class<?> returnValueType = returnValue.getClass();
    if (this.messageConverters != null) {
        for (MediaType acceptedMediaType : acceptedMediaTypes) {
            for (HttpMessageConverter messageConverter : this.messageConverters) {
                if (messageConverter.canWrite(returnValueType, acceptedMediaType)) {
                    messageConverter.write(returnValue, acceptedMediaType, outputMessage);
                    return new ModelAndView();
                }
            }
        }
    }
    if (logger.isWarnEnabled()) {
        logger.warn("Could not find HttpMessageConverter that supports return type [" + returnValueType + "] and " +
                acceptedMediaTypes);
    }
    return null;
}
项目:spring4-understanding    文件:AbstractMessageConverterMethodProcessor.java   
/**
 * Writes the given return value to the given web request. Delegates to
 * {@link #writeWithMessageConverters(Object, MethodParameter, ServletServerHttpRequest, ServletServerHttpResponse)}
 */
protected <T> void writeWithMessageConverters(T returnValue, MethodParameter returnType, NativeWebRequest webRequest)
        throws IOException, HttpMediaTypeNotAcceptableException, HttpMessageNotWritableException {

    ServletServerHttpRequest inputMessage = createInputMessage(webRequest);
    ServletServerHttpResponse outputMessage = createOutputMessage(webRequest);
    writeWithMessageConverters(returnValue, returnType, inputMessage, outputMessage);
}
项目:spring4-understanding    文件:HttpEntityMethodProcessor.java   
@Override
public void handleReturnValue(Object returnValue, MethodParameter returnType,
        ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {

    mavContainer.setRequestHandled(true);
    if (returnValue == null) {
        return;
    }

    ServletServerHttpRequest inputMessage = createInputMessage(webRequest);
    ServletServerHttpResponse outputMessage = createOutputMessage(webRequest);

    Assert.isInstanceOf(HttpEntity.class, returnValue);
    HttpEntity<?> responseEntity = (HttpEntity<?>) returnValue;

    HttpHeaders entityHeaders = responseEntity.getHeaders();
    if (!entityHeaders.isEmpty()) {
        outputMessage.getHeaders().putAll(entityHeaders);
    }

    Object body = responseEntity.getBody();
    if (responseEntity instanceof ResponseEntity) {
        outputMessage.setStatusCode(((ResponseEntity<?>) responseEntity).getStatusCode());
        if (HttpMethod.GET == inputMessage.getMethod() && isResourceNotModified(inputMessage, outputMessage)) {
            outputMessage.setStatusCode(HttpStatus.NOT_MODIFIED);
            // Ensure headers are flushed, no body should be written.
            outputMessage.flush();
            // Skip call to converters, as they may update the body.
            return;
        }
    }

    // Try even with null body. ResponseBodyAdvice could get involved.
    writeWithMessageConverters(body, returnType, inputMessage, outputMessage);

    // Ensure headers are flushed even if no body was written.
    outputMessage.flush();
}
项目:spring4-understanding    文件:DispatcherServlet.java   
/**
 * No handler found -> set appropriate HTTP response status.
 * @param request current HTTP request
 * @param response current HTTP response
 * @throws Exception if preparing the response failed
 */
protected void noHandlerFound(HttpServletRequest request, HttpServletResponse response) throws Exception {
    if (pageNotFoundLogger.isWarnEnabled()) {
        pageNotFoundLogger.warn("No mapping found for HTTP request with URI [" + getRequestUri(request) +
                "] in DispatcherServlet with name '" + getServletName() + "'");
    }
    if (this.throwExceptionIfNoHandlerFound) {
        throw new NoHandlerFoundException(request.getMethod(), getRequestUri(request),
                new ServletServerHttpRequest(request).getHeaders());
    }
    else {
        response.sendError(HttpServletResponse.SC_NOT_FOUND);
    }
}