Java 类org.springframework.http.StreamingHttpOutputMessage 实例源码

项目:xm-ms-entity    文件:MultipartMixedConverter.java   
private void writeForm(MultiValueMap<String, String> form, MediaType contentType,
    HttpOutputMessage outputMessage) throws IOException {

    Charset charset;
    if (contentType != null) {
        outputMessage.getHeaders().setContentType(contentType);
        charset = contentType.getCharset() != null ? contentType.getCharset() : this.defaultCharset;
    } else {
        outputMessage.getHeaders().setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        charset = this.defaultCharset;
    }
    StringBuilder builder = new StringBuilder();
    buildByNames(form, charset, builder);
    final byte[] bytes = builder.toString().getBytes(charset.name());
    outputMessage.getHeaders().setContentLength(bytes.length);

    if (outputMessage instanceof StreamingHttpOutputMessage) {
        StreamingHttpOutputMessage streamingOutputMessage = (StreamingHttpOutputMessage) outputMessage;
        streamingOutputMessage.setBody(outputStream -> StreamUtils.copy(bytes, outputStream));
    } else {
        StreamUtils.copy(bytes, outputMessage.getBody());
    }
}
项目:xm-ms-entity    文件:MultipartMixedConverter.java   
private void writeMultipart(final MultiValueMap<String, Object> parts, HttpOutputMessage outputMessage)
    throws IOException {
    final byte[] boundary = generateMultipartBoundary();
    Map<String, String> parameters = Collections.singletonMap("boundary", new String(boundary, "US-ASCII"));

    MediaType contentType = new MediaType(mixed, parameters);
    HttpHeaders headers = outputMessage.getHeaders();
    headers.setContentType(contentType);

    if (outputMessage instanceof StreamingHttpOutputMessage) {
        StreamingHttpOutputMessage streamingOutputMessage = (StreamingHttpOutputMessage) outputMessage;
        streamingOutputMessage.setBody(outputStream -> {
            writeParts(outputStream, parts, boundary);
            writeEnd(outputStream, boundary);
        });
    } else {
        writeParts(outputMessage.getBody(), parts, boundary);
        writeEnd(outputMessage.getBody(), boundary);
    }
}
项目:spring4-understanding    文件:FormHttpMessageConverter.java   
private void writeMultipart(final MultiValueMap<String, Object> parts, HttpOutputMessage outputMessage) throws IOException {
    final byte[] boundary = generateMultipartBoundary();
    Map<String, String> parameters = Collections.singletonMap("boundary", new String(boundary, "US-ASCII"));

    MediaType contentType = new MediaType(MediaType.MULTIPART_FORM_DATA, parameters);
    HttpHeaders headers = outputMessage.getHeaders();
    headers.setContentType(contentType);

    if (outputMessage instanceof StreamingHttpOutputMessage) {
        StreamingHttpOutputMessage streamingOutputMessage = (StreamingHttpOutputMessage) outputMessage;
        streamingOutputMessage.setBody(new StreamingHttpOutputMessage.Body() {
            @Override
            public void writeTo(OutputStream outputStream) throws IOException {
                writeParts(outputStream, parts, boundary);
                writeEnd(outputStream, boundary);
            }
        });
    }
    else {
        writeParts(outputMessage.getBody(), parts, boundary);
        writeEnd(outputMessage.getBody(), boundary);
    }
}
项目:spring4-understanding    文件:BufferedImageHttpMessageConverter.java   
@Override
public void write(final BufferedImage image, final MediaType contentType,
        final HttpOutputMessage outputMessage)
        throws IOException, HttpMessageNotWritableException {

    if (outputMessage instanceof StreamingHttpOutputMessage) {
        StreamingHttpOutputMessage streamingOutputMessage = (StreamingHttpOutputMessage) outputMessage;
        streamingOutputMessage.setBody(new StreamingHttpOutputMessage.Body() {
            @Override
            public void writeTo(OutputStream outputStream) throws IOException {
                writeInternal(image, contentType, outputMessage.getHeaders(), outputStream);
            }
        });
    }
    else {
        writeInternal(image, contentType, outputMessage.getHeaders(), outputMessage.getBody());
    }
}
项目:spring4-understanding    文件:AbstractAsyncHttpRequestFactoryTestCase.java   
@Test
public void multipleWrites() throws Exception {
    AsyncClientHttpRequest request = this.factory.createAsyncRequest(new URI(baseUrl + "/echo"), HttpMethod.POST);
    final byte[] body = "Hello World".getBytes("UTF-8");

    if (request instanceof StreamingHttpOutputMessage) {
        StreamingHttpOutputMessage streamingRequest = (StreamingHttpOutputMessage) request;
        streamingRequest.setBody(outputStream -> StreamUtils.copy(body, outputStream));
    }
    else {
        StreamUtils.copy(body, request.getBody());
    }

    Future<ClientHttpResponse> futureResponse = request.executeAsync();
    ClientHttpResponse response = futureResponse.get();
    try {
        FileCopyUtils.copy(body, request.getBody());
        fail("IllegalStateException expected");
    }
    catch (IllegalStateException ex) {
        // expected
    }
    finally {
        response.close();
    }
}
项目:spring4-understanding    文件:AbstractHttpRequestFactoryTestCase.java   
@Test(expected = IllegalStateException.class)
public void multipleWrites() throws Exception {
    ClientHttpRequest request = factory.createRequest(new URI(baseUrl + "/echo"), HttpMethod.POST);
    final byte[] body = "Hello World".getBytes("UTF-8");
    if (request instanceof StreamingHttpOutputMessage) {
        StreamingHttpOutputMessage streamingRequest =
                (StreamingHttpOutputMessage) request;
        streamingRequest.setBody(new StreamingHttpOutputMessage.Body() {
            @Override
            public void writeTo(OutputStream outputStream) throws IOException {
                StreamUtils.copy(body, outputStream);
            }
        });
    }
    else {
        StreamUtils.copy(body, request.getBody());
    }

    ClientHttpResponse response = request.execute();
    try {
        FileCopyUtils.copy(body, request.getBody());
    }
    finally {
        response.close();
    }
}
项目:spring4-understanding    文件:AbstractHttpMessageConverter.java   
/**
 * This implementation sets the default headers by calling {@link #addDefaultHeaders},
 * and then calls {@link #writeInternal}.
 */
@Override
public final void write(final T t, MediaType contentType, HttpOutputMessage outputMessage)
        throws IOException, HttpMessageNotWritableException {

    final HttpHeaders headers = outputMessage.getHeaders();
    addDefaultHeaders(headers, t, contentType);

    if (outputMessage instanceof StreamingHttpOutputMessage) {
        StreamingHttpOutputMessage streamingOutputMessage =
                (StreamingHttpOutputMessage) outputMessage;
        streamingOutputMessage.setBody(new StreamingHttpOutputMessage.Body() {
            @Override
            public void writeTo(final OutputStream outputStream) throws IOException {
                writeInternal(t, new HttpOutputMessage() {
                    @Override
                    public OutputStream getBody() throws IOException {
                        return outputStream;
                    }
                    @Override
                    public HttpHeaders getHeaders() {
                        return headers;
                    }
                });
            }
        });
    }
    else {
        writeInternal(t, outputMessage);
        outputMessage.getBody().flush();
    }
}
项目:spring4-understanding    文件:AbstractGenericHttpMessageConverter.java   
/**
 * This implementation sets the default headers by calling {@link #addDefaultHeaders},
 * and then calls {@link #writeInternal}.
 */
public final void write(final T t, final Type type, MediaType contentType, HttpOutputMessage outputMessage)
        throws IOException, HttpMessageNotWritableException {

    final HttpHeaders headers = outputMessage.getHeaders();
    addDefaultHeaders(headers, t, contentType);

    if (outputMessage instanceof StreamingHttpOutputMessage) {
        StreamingHttpOutputMessage streamingOutputMessage = (StreamingHttpOutputMessage) outputMessage;
        streamingOutputMessage.setBody(new StreamingHttpOutputMessage.Body() {
            @Override
            public void writeTo(final OutputStream outputStream) throws IOException {
                writeInternal(t, type, new HttpOutputMessage() {
                    @Override
                    public OutputStream getBody() throws IOException {
                        return outputStream;
                    }
                    @Override
                    public HttpHeaders getHeaders() {
                        return headers;
                    }
                });
            }
        });
    }
    else {
        writeInternal(t, type, outputMessage);
        outputMessage.getBody().flush();
    }
}
项目:spring4-understanding    文件:AbstractAsyncHttpRequestFactoryTestCase.java   
@Test
public void echo() throws Exception {
    AsyncClientHttpRequest request = this.factory.createAsyncRequest(new URI(baseUrl + "/echo"), HttpMethod.PUT);
    assertEquals("Invalid HTTP method", HttpMethod.PUT, request.getMethod());
    String headerName = "MyHeader";
    String headerValue1 = "value1";
    request.getHeaders().add(headerName, headerValue1);
    String headerValue2 = "value2";
    request.getHeaders().add(headerName, headerValue2);
    final byte[] body = "Hello World".getBytes("UTF-8");
    request.getHeaders().setContentLength(body.length);

    if (request instanceof StreamingHttpOutputMessage) {
        StreamingHttpOutputMessage streamingRequest = (StreamingHttpOutputMessage) request;
        streamingRequest.setBody(outputStream -> StreamUtils.copy(body, outputStream));
    }
    else {
        StreamUtils.copy(body, request.getBody());
    }

    Future<ClientHttpResponse> futureResponse = request.executeAsync();
    ClientHttpResponse response = futureResponse.get();
    try {
        assertEquals("Invalid status code", HttpStatus.OK, response.getStatusCode());
        assertTrue("Header not found", response.getHeaders().containsKey(headerName));
        assertEquals("Header value not found", Arrays.asList(headerValue1, headerValue2),
                response.getHeaders().get(headerName));
        byte[] result = FileCopyUtils.copyToByteArray(response.getBody());
        assertTrue("Invalid body", Arrays.equals(body, result));
    }
    finally {
        response.close();
    }
}
项目:spring4-understanding    文件:AbstractHttpRequestFactoryTestCase.java   
@Test
public void echo() throws Exception {
    ClientHttpRequest request = factory.createRequest(new URI(baseUrl + "/echo"), HttpMethod.PUT);
    assertEquals("Invalid HTTP method", HttpMethod.PUT, request.getMethod());
    String headerName = "MyHeader";
    String headerValue1 = "value1";
    request.getHeaders().add(headerName, headerValue1);
    String headerValue2 = "value2";
    request.getHeaders().add(headerName, headerValue2);
    final byte[] body = "Hello World".getBytes("UTF-8");
    request.getHeaders().setContentLength(body.length);
    if (request instanceof StreamingHttpOutputMessage) {
        StreamingHttpOutputMessage streamingRequest =
                (StreamingHttpOutputMessage) request;
        streamingRequest.setBody(new StreamingHttpOutputMessage.Body() {
            @Override
            public void writeTo(OutputStream outputStream) throws IOException {
                StreamUtils.copy(body, outputStream);
            }
        });
    }
    else {
        StreamUtils.copy(body, request.getBody());
    }
    ClientHttpResponse response = request.execute();
    try {
        assertEquals("Invalid status code", HttpStatus.OK, response.getStatusCode());
        assertTrue("Header not found", response.getHeaders().containsKey(headerName));
        assertEquals("Header value not found", Arrays.asList(headerValue1, headerValue2),
                response.getHeaders().get(headerName));
        byte[] result = FileCopyUtils.copyToByteArray(response.getBody());
        assertTrue("Invalid body", Arrays.equals(body, result));
    }
    finally {
        response.close();
    }
}
项目:lams    文件:AbstractHttpMessageConverter.java   
/**
 * This implementation delegates to {@link #getDefaultContentType(Object)} if a content
 * type was not provided, calls {@link #getContentLength}, and sets the corresponding headers
 * on the output message. It then calls {@link #writeInternal}.
 */
@Override
public final void write(final T t, MediaType contentType, HttpOutputMessage outputMessage)
        throws IOException, HttpMessageNotWritableException {

    final HttpHeaders headers = outputMessage.getHeaders();
    if (headers.getContentType() == null) {
        MediaType contentTypeToUse = contentType;
        if (contentType == null || contentType.isWildcardType() || contentType.isWildcardSubtype()) {
            contentTypeToUse = getDefaultContentType(t);
        }
        if (contentTypeToUse != null) {
            headers.setContentType(contentTypeToUse);
        }
    }
    if (headers.getContentLength() == -1) {
        Long contentLength = getContentLength(t, headers.getContentType());
        if (contentLength != null) {
            headers.setContentLength(contentLength);
        }
    }

    if (outputMessage instanceof StreamingHttpOutputMessage) {
        StreamingHttpOutputMessage streamingOutputMessage =
                (StreamingHttpOutputMessage) outputMessage;
        streamingOutputMessage.setBody(new StreamingHttpOutputMessage.Body() {
            @Override
            public void writeTo(final OutputStream outputStream) throws IOException {
                writeInternal(t, new HttpOutputMessage() {
                    @Override
                    public OutputStream getBody() throws IOException {
                        return outputStream;
                    }
                    @Override
                    public HttpHeaders getHeaders() {
                        return headers;
                    }
                });
            }
        });
    }
    else {
        writeInternal(t, outputMessage);
        outputMessage.getBody().flush();
    }
}
项目:lams    文件:HttpComponentsStreamingClientHttpRequest.java   
public StreamingHttpEntity(HttpHeaders headers, StreamingHttpOutputMessage.Body body) {
    this.headers = headers;
    this.body = body;
}
项目:spring4-understanding    文件:FormHttpMessageConverter.java   
private void writeForm(MultiValueMap<String, String> form, MediaType contentType,
        HttpOutputMessage outputMessage) throws IOException {

    Charset charset;
    if (contentType != null) {
        outputMessage.getHeaders().setContentType(contentType);
        charset = contentType.getCharSet() != null ? contentType.getCharSet() : this.charset;
    }
    else {
        outputMessage.getHeaders().setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        charset = this.charset;
    }
    StringBuilder builder = new StringBuilder();
    for (Iterator<String> nameIterator = form.keySet().iterator(); nameIterator.hasNext();) {
        String name = nameIterator.next();
        for (Iterator<String> valueIterator = form.get(name).iterator(); valueIterator.hasNext();) {
            String value = valueIterator.next();
            builder.append(URLEncoder.encode(name, charset.name()));
            if (value != null) {
                builder.append('=');
                builder.append(URLEncoder.encode(value, charset.name()));
                if (valueIterator.hasNext()) {
                    builder.append('&');
                }
            }
        }
        if (nameIterator.hasNext()) {
            builder.append('&');
        }
    }
    final byte[] bytes = builder.toString().getBytes(charset.name());
    outputMessage.getHeaders().setContentLength(bytes.length);

    if (outputMessage instanceof StreamingHttpOutputMessage) {
        StreamingHttpOutputMessage streamingOutputMessage = (StreamingHttpOutputMessage) outputMessage;
        streamingOutputMessage.setBody(new StreamingHttpOutputMessage.Body() {
            @Override
            public void writeTo(OutputStream outputStream) throws IOException {
                StreamUtils.copy(bytes, outputStream);
            }
        });
    }
    else {
        StreamUtils.copy(bytes, outputMessage.getBody());
    }
}
项目:spring4-understanding    文件:HttpComponentsStreamingClientHttpRequest.java   
public StreamingHttpEntity(HttpHeaders headers, StreamingHttpOutputMessage.Body body) {
    this.headers = headers;
    this.body = body;
}