Browse Source

Consistent headers.getContentLength() checks

pull/1033/head
Juergen Hoeller 10 years ago
parent
commit
7f438dc9aa
  1. 4
      spring-web/src/main/java/org/springframework/http/client/AbstractBufferingAsyncClientHttpRequest.java
  2. 4
      spring-web/src/main/java/org/springframework/http/client/AbstractBufferingClientHttpRequest.java
  3. 8
      spring-web/src/main/java/org/springframework/http/converter/AbstractHttpMessageConverter.java
  4. 2
      spring-web/src/main/java/org/springframework/http/server/ServletServerHttpRequest.java
  5. 4
      spring-web/src/main/java/org/springframework/web/client/RestTemplate.java

4
spring-web/src/main/java/org/springframework/http/client/AbstractBufferingAsyncClientHttpRequest.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2014 the original author or authors. * Copyright 2002-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -43,7 +43,7 @@ abstract class AbstractBufferingAsyncClientHttpRequest extends AbstractAsyncClie
@Override @Override
protected ListenableFuture<ClientHttpResponse> executeInternal(HttpHeaders headers) throws IOException { protected ListenableFuture<ClientHttpResponse> executeInternal(HttpHeaders headers) throws IOException {
byte[] bytes = this.bufferedOutput.toByteArray(); byte[] bytes = this.bufferedOutput.toByteArray();
if (headers.getContentLength() == -1) { if (headers.getContentLength() < 0) {
headers.setContentLength(bytes.length); headers.setContentLength(bytes.length);
} }
ListenableFuture<ClientHttpResponse> result = executeInternal(headers, bytes); ListenableFuture<ClientHttpResponse> result = executeInternal(headers, bytes);

4
spring-web/src/main/java/org/springframework/http/client/AbstractBufferingClientHttpRequest.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2014 the original author or authors. * Copyright 2002-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -42,7 +42,7 @@ abstract class AbstractBufferingClientHttpRequest extends AbstractClientHttpRequ
@Override @Override
protected ClientHttpResponse executeInternal(HttpHeaders headers) throws IOException { protected ClientHttpResponse executeInternal(HttpHeaders headers) throws IOException {
byte[] bytes = this.bufferedOutput.toByteArray(); byte[] bytes = this.bufferedOutput.toByteArray();
if (headers.getContentLength() == -1) { if (headers.getContentLength() < 0) {
headers.setContentLength(bytes.length); headers.setContentLength(bytes.length);
} }
ClientHttpResponse result = executeInternal(headers, bytes); ClientHttpResponse result = executeInternal(headers, bytes);

8
spring-web/src/main/java/org/springframework/http/converter/AbstractHttpMessageConverter.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2015 the original author or authors. * Copyright 2002-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -68,7 +68,7 @@ public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConv
} }
/** /**
* Construct an {@code AbstractHttpMessageConverter} with multiple supported media type. * Construct an {@code AbstractHttpMessageConverter} with multiple supported media types.
* @param supportedMediaTypes the supported media types * @param supportedMediaTypes the supported media types
*/ */
protected AbstractHttpMessageConverter(MediaType... supportedMediaTypes) { protected AbstractHttpMessageConverter(MediaType... supportedMediaTypes) {
@ -101,7 +101,7 @@ public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConv
} }
/** /**
* Returns true if any of the {@linkplain #setSupportedMediaTypes(List) * Returns {@code true} if any of the {@linkplain #setSupportedMediaTypes(List)
* supported} media types {@link MediaType#includes(MediaType) include} the * supported} media types {@link MediaType#includes(MediaType) include} the
* given media type. * given media type.
* @param mediaType the media type to read, can be {@code null} if not specified. * @param mediaType the media type to read, can be {@code null} if not specified.
@ -217,7 +217,7 @@ public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConv
headers.setContentType(contentTypeToUse); headers.setContentType(contentTypeToUse);
} }
} }
if (headers.getContentLength() == -1) { if (headers.getContentLength() < 0) {
Long contentLength = getContentLength(t, headers.getContentType()); Long contentLength = getContentLength(t, headers.getContentType());
if (contentLength != null) { if (contentLength != null) {
headers.setContentLength(contentLength); headers.setContentLength(contentLength);

2
spring-web/src/main/java/org/springframework/http/server/ServletServerHttpRequest.java

@ -132,7 +132,7 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
this.headers.setContentType(newContentType); this.headers.setContentType(newContentType);
} }
} }
if (this.headers.getContentLength() == -1) { if (this.headers.getContentLength() < 0) {
int requestContentLength = this.servletRequest.getContentLength(); int requestContentLength = this.servletRequest.getContentLength();
if (requestContentLength != -1) { if (requestContentLength != -1) {
this.headers.setContentLength(requestContentLength); this.headers.setContentLength(requestContentLength);

4
spring-web/src/main/java/org/springframework/web/client/RestTemplate.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2015 the original author or authors. * Copyright 2002-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -773,7 +773,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
if (!requestHeaders.isEmpty()) { if (!requestHeaders.isEmpty()) {
httpHeaders.putAll(requestHeaders); httpHeaders.putAll(requestHeaders);
} }
if (httpHeaders.getContentLength() == -1) { if (httpHeaders.getContentLength() < 0) {
httpHeaders.setContentLength(0L); httpHeaders.setContentLength(0L);
} }
} }

Loading…
Cancel
Save