Add missing @Nullable annotations on parameters

Issue: SPR-15540
This commit is contained in:
Sebastien Deleuze
2017-05-31 12:37:54 +02:00
parent ad2c0f8410
commit b47d713e14
380 changed files with 1085 additions and 732 deletions

View File

@@ -31,6 +31,7 @@ import org.springframework.http.MediaType;
import org.springframework.http.ReactiveHttpInputMessage;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
/**
@@ -76,7 +77,7 @@ public class DecoderHttpMessageReader<T> implements HttpMessageReader<T> {
@Override
public boolean canRead(ResolvableType elementType, MediaType mediaType) {
public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType) {
return this.decoder.canDecode(elementType, mediaType);
}

View File

@@ -32,6 +32,7 @@ import org.springframework.http.MediaType;
import org.springframework.http.ReactiveHttpOutputMessage;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
@@ -91,7 +92,7 @@ public class EncoderHttpMessageWriter<T> implements HttpMessageWriter<T> {
@Override
public Mono<Void> write(Publisher<? extends T> inputStream, ResolvableType elementType,
MediaType mediaType, ReactiveHttpOutputMessage message, Map<String, Object> hints) {
@Nullable MediaType mediaType, ReactiveHttpOutputMessage message, Map<String, Object> hints) {
MediaType contentType = updateContentType(message, mediaType);
@@ -139,7 +140,7 @@ public class EncoderHttpMessageWriter<T> implements HttpMessageWriter<T> {
@Override
public Mono<Void> write(Publisher<? extends T> inputStream, ResolvableType actualType,
ResolvableType elementType, MediaType mediaType, ServerHttpRequest request,
ResolvableType elementType, @Nullable MediaType mediaType, ServerHttpRequest request,
ServerHttpResponse response, Map<String, Object> hints) {
Map<String, Object> allHints = new HashMap<>();

View File

@@ -33,6 +33,7 @@ import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferUtils;
import org.springframework.http.MediaType;
import org.springframework.http.ReactiveHttpInputMessage;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
@@ -75,7 +76,7 @@ public class FormHttpMessageReader implements HttpMessageReader<MultiValueMap<St
@Override
public boolean canRead(ResolvableType elementType, MediaType mediaType) {
public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType) {
return (MULTIVALUE_TYPE.isAssignableFrom(elementType) &&
(mediaType == null || MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(mediaType)));
}

View File

@@ -34,6 +34,7 @@ import org.springframework.core.ResolvableType;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.MediaType;
import org.springframework.http.ReactiveHttpOutputMessage;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.MultiValueMap;
@@ -82,7 +83,7 @@ public class FormHttpMessageWriter implements HttpMessageWriter<MultiValueMap<St
@Override
public Mono<Void> write(Publisher<? extends MultiValueMap<String, String>> inputStream,
ResolvableType elementType, MediaType mediaType, ReactiveHttpOutputMessage message,
ResolvableType elementType, @Nullable MediaType mediaType, ReactiveHttpOutputMessage message,
Map<String, Object> hints) {
MediaType contentType = message.getHeaders().getContentType();

View File

@@ -46,6 +46,7 @@ import org.springframework.http.ReactiveHttpOutputMessage;
import org.springframework.http.ZeroCopyHttpOutputMessage;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.lang.Nullable;
import org.springframework.util.MimeTypeUtils;
import static java.util.Collections.emptyMap;
@@ -106,7 +107,7 @@ public class ResourceHttpMessageWriter implements HttpMessageWriter<Resource> {
@Override
public Mono<Void> write(Publisher<? extends Resource> inputStream, ResolvableType elementType,
MediaType mediaType, ReactiveHttpOutputMessage message, Map<String, Object> hints) {
@Nullable MediaType mediaType, ReactiveHttpOutputMessage message, Map<String, Object> hints) {
return Mono.from(inputStream).flatMap(resource ->
writeResource(resource, elementType, mediaType, message, hints));
@@ -175,8 +176,8 @@ public class ResourceHttpMessageWriter implements HttpMessageWriter<Resource> {
@Override
@SuppressWarnings("unchecked")
public Mono<Void> write(Publisher<? extends Resource> inputStream, ResolvableType actualType,
ResolvableType elementType, MediaType mediaType, ServerHttpRequest request,
public Mono<Void> write(Publisher<? extends Resource> inputStream, @Nullable ResolvableType actualType,
ResolvableType elementType, @Nullable MediaType mediaType, ServerHttpRequest request,
ServerHttpResponse response, Map<String, Object> hints) {
HttpHeaders headers = response.getHeaders();

View File

@@ -37,6 +37,7 @@ import org.springframework.core.io.buffer.DataBufferUtils;
import org.springframework.core.io.buffer.DefaultDataBufferFactory;
import org.springframework.http.MediaType;
import org.springframework.http.ReactiveHttpInputMessage;
import org.springframework.lang.Nullable;
import static java.util.stream.Collectors.joining;
@@ -91,7 +92,7 @@ public class ServerSentEventHttpMessageReader implements HttpMessageReader<Objec
}
@Override
public boolean canRead(ResolvableType elementType, MediaType mediaType) {
public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType) {
return MediaType.TEXT_EVENT_STREAM.includes(mediaType) ||
ServerSentEvent.class.isAssignableFrom(elementType.getRawClass());
}

View File

@@ -93,7 +93,7 @@ public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Objec
}
@Override
public Mono<Void> write(Publisher<?> input, ResolvableType elementType, MediaType mediaType,
public Mono<Void> write(Publisher<?> input, ResolvableType elementType, @Nullable MediaType mediaType,
ReactiveHttpOutputMessage message, Map<String, Object> hints) {
message.getHeaders().setContentType(MediaType.TEXT_EVENT_STREAM);
@@ -171,7 +171,7 @@ public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Objec
@Override
public Mono<Void> write(Publisher<?> input, ResolvableType actualType, ResolvableType elementType,
MediaType mediaType, ServerHttpRequest request, ServerHttpResponse response,
@Nullable MediaType mediaType, ServerHttpRequest request, ServerHttpResponse response,
Map<String, Object> hints) {
Map<String, Object> allHints = new HashMap<>();

View File

@@ -40,6 +40,7 @@ import org.springframework.http.codec.HttpMessageDecoder;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.MimeType;
@@ -68,7 +69,7 @@ public class Jackson2JsonDecoder extends Jackson2CodecSupport implements HttpMes
@Override
public boolean canDecode(ResolvableType elementType, MimeType mimeType) {
public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {
JavaType javaType = this.objectMapper.getTypeFactory().constructType(elementType.getType());
// Skip String: CharSequenceDecoder + "*/*" comes after
return (!CharSequence.class.isAssignableFrom(elementType.resolve(Object.class)) &&
@@ -83,14 +84,14 @@ public class Jackson2JsonDecoder extends Jackson2CodecSupport implements HttpMes
@Override
public Flux<Object> decode(Publisher<DataBuffer> input, ResolvableType elementType,
MimeType mimeType, Map<String, Object> hints) {
@Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {
return decodeInternal(this.fluxDecoder, input, elementType, mimeType, hints);
}
@Override
public Mono<Object> decodeToMono(Publisher<DataBuffer> input, ResolvableType elementType,
MimeType mimeType, Map<String, Object> hints) {
@Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {
return decodeInternal(this.monoDecoder, input, elementType, mimeType, hints).singleOrEmpty();
}

View File

@@ -49,6 +49,7 @@ import org.springframework.http.codec.HttpMessageEncoder;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.MimeType;
@@ -105,7 +106,7 @@ public class Jackson2JsonEncoder extends Jackson2CodecSupport implements HttpMes
@Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) {
Class<?> clazz = elementType.resolve(Object.class);
return (Object.class == clazz) ||
!String.class.isAssignableFrom(elementType.resolve(clazz)) &&
@@ -114,7 +115,7 @@ public class Jackson2JsonEncoder extends Jackson2CodecSupport implements HttpMes
@Override
public Flux<DataBuffer> encode(Publisher<?> inputStream, DataBufferFactory bufferFactory,
ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) {
ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {
Assert.notNull(inputStream, "'inputStream' must not be null");
Assert.notNull(bufferFactory, "'bufferFactory' must not be null");

View File

@@ -33,6 +33,7 @@ import org.springframework.core.codec.AbstractDecoder;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferFactory;
import org.springframework.core.io.buffer.DataBufferUtils;
import org.springframework.lang.Nullable;
import org.springframework.util.MimeType;
/**
@@ -97,7 +98,7 @@ class JsonObjectDecoder extends AbstractDecoder<DataBuffer> {
@Override
public Flux<DataBuffer> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType,
MimeType mimeType, Map<String, Object> hints) {
@Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {
return Flux.from(inputStream)
.flatMap(new Function<DataBuffer, Publisher<? extends DataBuffer>>() {

View File

@@ -30,6 +30,7 @@ import org.springframework.core.ResolvableType;
import org.springframework.http.MediaType;
import org.springframework.http.ReactiveHttpInputMessage;
import org.springframework.http.codec.HttpMessageReader;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
@@ -66,7 +67,7 @@ public class MultipartHttpMessageReader implements HttpMessageReader<MultiValueM
}
@Override
public boolean canRead(ResolvableType elementType, MediaType mediaType) {
public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType) {
return MULTIPART_VALUE_TYPE.isAssignableFrom(elementType) &&
(mediaType == null || MediaType.MULTIPART_FORM_DATA.isCompatibleWith(mediaType));
}

View File

@@ -46,6 +46,7 @@ import org.springframework.http.ReactiveHttpOutputMessage;
import org.springframework.http.codec.EncoderHttpMessageWriter;
import org.springframework.http.codec.HttpMessageWriter;
import org.springframework.http.codec.ResourceHttpMessageWriter;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.MimeTypeUtils;
import org.springframework.util.MultiValueMap;
@@ -116,7 +117,7 @@ public class MultipartHttpMessageWriter implements HttpMessageWriter<MultiValueM
@Override
public Mono<Void> write(Publisher<? extends MultiValueMap<String, ?>> inputStream,
ResolvableType elementType, MediaType mediaType, ReactiveHttpOutputMessage outputMessage,
ResolvableType elementType, @Nullable MediaType mediaType, ReactiveHttpOutputMessage outputMessage,
Map<String, Object> hints) {
byte[] boundary = generateMultipartBoundary();

View File

@@ -51,6 +51,7 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ReactiveHttpInputMessage;
import org.springframework.http.codec.HttpMessageReader;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
/**
@@ -78,7 +79,7 @@ public class SynchronossPartHttpMessageReader implements HttpMessageReader<Part>
}
@Override
public boolean canRead(ResolvableType elementType, MediaType mediaType) {
public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType) {
return Part.class.equals(elementType.resolve(Object.class)) &&
(mediaType == null || MediaType.MULTIPART_FORM_DATA.isCompatibleWith(mediaType));
}

View File

@@ -41,6 +41,7 @@ import org.springframework.core.codec.AbstractDecoder;
import org.springframework.core.codec.CodecException;
import org.springframework.core.codec.DecodingException;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.lang.Nullable;
import org.springframework.util.ClassUtils;
import org.springframework.util.MimeType;
import org.springframework.util.MimeTypeUtils;
@@ -78,7 +79,7 @@ public class Jaxb2XmlDecoder extends AbstractDecoder<Object> {
@Override
public boolean canDecode(ResolvableType elementType, MimeType mimeType) {
public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {
if (super.canDecode(elementType, mimeType)) {
Class<?> outputClass = elementType.getRawClass();
return outputClass.isAnnotationPresent(XmlRootElement.class) ||
@@ -91,7 +92,7 @@ public class Jaxb2XmlDecoder extends AbstractDecoder<Object> {
@Override
public Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType,
MimeType mimeType, Map<String, Object> hints) {
@Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {
Class<?> outputClass = elementType.getRawClass();
Flux<XMLEvent> xmlEventFlux = this.xmlEventDecoder.decode(inputStream, null, mimeType, hints);

View File

@@ -33,6 +33,7 @@ import org.springframework.core.codec.CodecException;
import org.springframework.core.codec.EncodingException;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferFactory;
import org.springframework.lang.Nullable;
import org.springframework.util.ClassUtils;
import org.springframework.util.MimeType;
import org.springframework.util.MimeTypeUtils;
@@ -56,7 +57,7 @@ public class Jaxb2XmlEncoder extends AbstractSingleValueEncoder<Object> {
@Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) {
if (super.canEncode(elementType, mimeType)) {
Class<?> outputClass = elementType.resolve(Object.class);
return (outputClass.isAnnotationPresent(XmlRootElement.class) ||

View File

@@ -40,6 +40,7 @@ import org.springframework.core.ResolvableType;
import org.springframework.core.codec.AbstractDecoder;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferUtils;
import org.springframework.lang.Nullable;
import org.springframework.util.ClassUtils;
import org.springframework.util.MimeType;
import org.springframework.util.MimeTypeUtils;
@@ -89,8 +90,8 @@ public class XmlEventDecoder extends AbstractDecoder<XMLEvent> {
@Override
@SuppressWarnings("unchecked")
public Flux<XMLEvent> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType,
MimeType mimeType, Map<String, Object> hints) {
public Flux<XMLEvent> decode(Publisher<DataBuffer> inputStream, @Nullable ResolvableType elementType,
@Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {
Flux<DataBuffer> flux = Flux.from(inputStream);
if (useAalto && aaltoPresent) {

View File

@@ -66,12 +66,12 @@ public abstract class AbstractGenericHttpMessageConverter<T> extends AbstractHtt
}
@Override
public boolean canRead(Type type, Class<?> contextClass, MediaType mediaType) {
public boolean canRead(Type type, @Nullable Class<?> contextClass, @Nullable MediaType mediaType) {
return (type instanceof Class ? canRead((Class<?>) type, mediaType) : canRead(mediaType));
}
@Override
public boolean canWrite(Type type, Class<?> clazz, MediaType mediaType) {
public boolean canWrite(@Nullable Type type, Class<?> clazz, @Nullable MediaType mediaType) {
return canWrite(clazz, mediaType);
}
@@ -79,7 +79,7 @@ public abstract class AbstractGenericHttpMessageConverter<T> extends AbstractHtt
* 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)
public final void write(final T t, @Nullable final Type type, @Nullable MediaType contentType, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
final HttpHeaders headers = outputMessage.getHeaders();

View File

@@ -130,7 +130,7 @@ public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConv
* {@linkplain MediaType#includes(MediaType) include} the given media type.
*/
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType) {
return supports(clazz) && canRead(mediaType);
}
@@ -162,7 +162,7 @@ public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConv
* {@linkplain MediaType#includes(MediaType) include} the given media type.
*/
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
return supports(clazz) && canWrite(mediaType);
}
@@ -200,7 +200,7 @@ public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConv
* and then calls {@link #writeInternal}.
*/
@Override
public final void write(final T t, MediaType contentType, HttpOutputMessage outputMessage)
public final void write(final T t, @Nullable MediaType contentType, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
final HttpHeaders headers = outputMessage.getHeaders();
@@ -238,7 +238,7 @@ public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConv
* {@link #getContentLength}, and sets the corresponding headers.
* @since 4.2
*/
protected void addDefaultHeaders(HttpHeaders headers, T t, MediaType contentType) throws IOException{
protected void addDefaultHeaders(HttpHeaders headers, T t, @Nullable MediaType contentType) throws IOException{
if (headers.getContentType() == null) {
MediaType contentTypeToUse = contentType;
if (contentType == null || contentType.isWildcardType() || contentType.isWildcardSubtype()) {

View File

@@ -42,6 +42,7 @@ import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.StreamingHttpOutputMessage;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
@@ -127,7 +128,7 @@ public class BufferedImageHttpMessageConverter implements HttpMessageConverter<B
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType) {
return (BufferedImage.class == clazz && isReadable(mediaType));
}
@@ -140,7 +141,7 @@ public class BufferedImageHttpMessageConverter implements HttpMessageConverter<B
}
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
return (BufferedImage.class == clazz && isWritable(mediaType));
}
@@ -204,7 +205,7 @@ public class BufferedImageHttpMessageConverter implements HttpMessageConverter<B
}
@Override
public void write(final BufferedImage image, final MediaType contentType,
public void write(final BufferedImage image, @Nullable final MediaType contentType,
final HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {

View File

@@ -22,6 +22,7 @@ import java.io.IOException;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.lang.Nullable;
import org.springframework.util.StreamUtils;
/**
@@ -60,7 +61,7 @@ public class ByteArrayHttpMessageConverter extends AbstractHttpMessageConverter<
}
@Override
protected Long getContentLength(byte[] bytes, MediaType contentType) {
protected Long getContentLength(byte[] bytes, @Nullable MediaType contentType) {
return (long) bytes.length;
}

View File

@@ -203,7 +203,7 @@ public class FormHttpMessageConverter implements HttpMessageConverter<MultiValue
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType) {
if (!MultiValueMap.class.isAssignableFrom(clazz)) {
return false;
}
@@ -220,7 +220,7 @@ public class FormHttpMessageConverter implements HttpMessageConverter<MultiValue
}
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
if (!MultiValueMap.class.isAssignableFrom(clazz)) {
return false;
}
@@ -261,7 +261,7 @@ public class FormHttpMessageConverter implements HttpMessageConverter<MultiValue
@Override
@SuppressWarnings("unchecked")
public void write(MultiValueMap<String, ?> map, MediaType contentType, HttpOutputMessage outputMessage)
public void write(MultiValueMap<String, ?> map, @Nullable MediaType contentType, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
if (!isMultipart(map, contentType)) {

View File

@@ -23,6 +23,7 @@ import org.springframework.core.convert.ConversionService;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
/**
@@ -89,12 +90,12 @@ public class ObjectToStringHttpMessageConverter extends AbstractHttpMessageConve
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType) {
return this.conversionService.canConvert(String.class, clazz) && canRead(mediaType);
}
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
return this.conversionService.canConvert(clazz, String.class) && canWrite(mediaType);
}
@@ -117,7 +118,7 @@ public class ObjectToStringHttpMessageConverter extends AbstractHttpMessageConve
}
@Override
protected Long getContentLength(Object obj, MediaType contentType) {
protected Long getContentLength(Object obj, @Nullable MediaType contentType) {
String value = this.conversionService.convert(obj, String.class);
return this.stringHttpMessageConverter.getContentLength(value, contentType);
}

View File

@@ -27,6 +27,7 @@ import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.MediaTypeFactory;
import org.springframework.lang.Nullable;
import org.springframework.util.StreamUtils;
/**
@@ -106,7 +107,7 @@ public class ResourceHttpMessageConverter extends AbstractHttpMessageConverter<R
}
@Override
protected Long getContentLength(Resource resource, MediaType contentType) throws IOException {
protected Long getContentLength(Resource resource, @Nullable MediaType contentType) throws IOException {
// Don't try to determine contentLength on InputStreamResource - cannot be read afterwards...
// Note: custom InputStreamResource subclasses could provide a pre-calculated content length!
if (InputStreamResource.class == resource.getClass()) {

View File

@@ -31,6 +31,7 @@ import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.MediaTypeFactory;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.MimeTypeUtils;
import org.springframework.util.StreamUtils;
@@ -67,17 +68,17 @@ public class ResourceRegionHttpMessageConverter extends AbstractGenericHttpMessa
}
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType) {
return false;
}
@Override
public boolean canRead(Type type, Class<?> contextClass, MediaType mediaType) {
public boolean canRead(Type type, @Nullable Class<?> contextClass, @Nullable MediaType mediaType) {
return false;
}
@Override
public Object read(Type type, Class<?> contextClass, HttpInputMessage inputMessage)
public Object read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage)
throws IOException, HttpMessageNotReadableException {
throw new UnsupportedOperationException();
@@ -91,12 +92,12 @@ public class ResourceRegionHttpMessageConverter extends AbstractGenericHttpMessa
}
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
return canWrite(clazz, null, mediaType);
}
@Override
public boolean canWrite(Type type, Class<?> clazz, MediaType mediaType) {
public boolean canWrite(@Nullable Type type, Class<?> clazz, @Nullable MediaType mediaType) {
if (!(type instanceof ParameterizedType)) {
return ResourceRegion.class.isAssignableFrom((Class<?>) type);
}
@@ -121,7 +122,7 @@ public class ResourceRegionHttpMessageConverter extends AbstractGenericHttpMessa
@Override
@SuppressWarnings("unchecked")
protected void writeInternal(Object object, Type type, HttpOutputMessage outputMessage)
protected void writeInternal(Object object, @Nullable Type type, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
if (object instanceof ResourceRegion) {

View File

@@ -25,6 +25,7 @@ import java.util.List;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.lang.Nullable;
import org.springframework.util.StreamUtils;
/**
@@ -86,7 +87,7 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter<Str
}
@Override
protected Long getContentLength(String str, MediaType contentType) {
protected Long getContentLength(String str, @Nullable MediaType contentType) {
Charset charset = getContentTypeCharset(contentType);
return (long) str.getBytes(charset).length;
}

View File

@@ -145,12 +145,12 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType) {
return canRead(clazz, null, mediaType);
}
@Override
public boolean canRead(Type type, Class<?> contextClass, MediaType mediaType) {
public boolean canRead(Type type, @Nullable Class<?> contextClass, @Nullable MediaType mediaType) {
if (!canRead(mediaType)) {
return false;
}
@@ -167,7 +167,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
}
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
if (!canWrite(mediaType)) {
return false;
}
@@ -212,7 +212,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
}
@Override
public Object read(Type type, Class<?> contextClass, HttpInputMessage inputMessage)
public Object read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage)
throws IOException, HttpMessageNotReadableException {
JavaType javaType = getJavaType(type, contextClass);
@@ -239,7 +239,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
}
@Override
protected void writeInternal(Object object, Type type, HttpOutputMessage outputMessage)
protected void writeInternal(Object object, @Nullable Type type, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
MediaType contentType = outputMessage.getHeaders().getContentType();
@@ -347,7 +347,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
}
@Override
protected Long getContentLength(Object object, MediaType contentType) throws IOException {
protected Long getContentLength(Object object, @Nullable MediaType contentType) throws IOException {
if (object instanceof MappingJacksonValue) {
object = ((MappingJacksonValue) object).getValue();
}

View File

@@ -84,7 +84,7 @@ public abstract class AbstractJsonHttpMessageConverter extends AbstractGenericHt
@Override
public final Object read(Type type, Class<?> contextClass, HttpInputMessage inputMessage)
public final Object read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage)
throws IOException, HttpMessageNotReadableException {
return readResolved(GenericTypeResolver.resolveType(type, contextClass), inputMessage);
@@ -110,7 +110,7 @@ public abstract class AbstractJsonHttpMessageConverter extends AbstractGenericHt
}
@Override
protected final void writeInternal(Object o, Type type, HttpOutputMessage outputMessage)
protected final void writeInternal(Object o, @Nullable Type type, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
Writer writer = getWriter(outputMessage);

View File

@@ -22,6 +22,7 @@ import java.lang.reflect.Type;
import com.google.gson.Gson;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
/**
@@ -90,7 +91,7 @@ public class GsonHttpMessageConverter extends AbstractJsonHttpMessageConverter {
}
@Override
protected void writeInternal(Object o, Type type, Writer writer) throws Exception {
protected void writeInternal(Object o, @Nullable Type type, Writer writer) throws Exception {
if (type != null) {
getGson().toJson(o, type, writer);
}

View File

@@ -46,6 +46,7 @@ import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.lang.Nullable;
/**
* A {@link FactoryBean} for creating a Jackson 2.x {@link ObjectMapper} (default) or
@@ -421,7 +422,7 @@ public class Jackson2ObjectMapperFactoryBean implements FactoryBean<ObjectMapper
}
@Override
public void setBeanClassLoader(ClassLoader beanClassLoader) {
public void setBeanClassLoader(@Nullable ClassLoader beanClassLoader) {
this.builder.moduleClassLoader(beanClassLoader);
}

View File

@@ -23,6 +23,7 @@ import javax.json.bind.Jsonb;
import javax.json.bind.JsonbBuilder;
import javax.json.bind.JsonbConfig;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
/**
@@ -97,7 +98,7 @@ public class JsonbHttpMessageConverter extends AbstractJsonHttpMessageConverter
}
@Override
protected void writeInternal(Object o, Type type, Writer writer) throws Exception {
protected void writeInternal(Object o, @Nullable Type type, Writer writer) throws Exception {
if (type != null) {
getJsonb().toJson(o, type, writer);
}

View File

@@ -41,6 +41,7 @@ import org.springframework.http.MediaType;
import org.springframework.http.converter.AbstractHttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.lang.Nullable;
import org.springframework.util.ClassUtils;
import static org.springframework.http.MediaType.*;
@@ -175,7 +176,7 @@ public class ProtobufHttpMessageConverter extends AbstractHttpMessageConverter<M
}
@Override
protected boolean canWrite(MediaType mediaType) {
protected boolean canWrite(@Nullable MediaType mediaType) {
return (super.canWrite(mediaType) ||
(this.protobufFormatSupport != null && this.protobufFormatSupport.supportsWriteOnly(mediaType)));
}

View File

@@ -45,6 +45,7 @@ import org.springframework.http.converter.GenericHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConversionException;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.lang.Nullable;
import org.springframework.util.ReflectionUtils;
import org.springframework.util.StreamUtils;
@@ -71,7 +72,7 @@ public class Jaxb2CollectionHttpMessageConverter<T extends Collection>
* required generic type information in order to read a Collection.
*/
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType) {
return false;
}
@@ -82,7 +83,7 @@ public class Jaxb2CollectionHttpMessageConverter<T extends Collection>
* {@link XmlRootElement} or {@link XmlType}.
*/
@Override
public boolean canRead(Type type, Class<?> contextClass, MediaType mediaType) {
public boolean canRead(Type type, @Nullable Class<?> contextClass, @Nullable MediaType mediaType) {
if (!(type instanceof ParameterizedType)) {
return false;
}
@@ -111,7 +112,7 @@ public class Jaxb2CollectionHttpMessageConverter<T extends Collection>
* does not convert collections to XML.
*/
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
return false;
}
@@ -120,7 +121,7 @@ public class Jaxb2CollectionHttpMessageConverter<T extends Collection>
* does not convert collections to XML.
*/
@Override
public boolean canWrite(Type type, Class<?> clazz, MediaType mediaType) {
public boolean canWrite(@Nullable Type type, Class<?> clazz, @Nullable MediaType mediaType) {
return false;
}
@@ -138,7 +139,7 @@ public class Jaxb2CollectionHttpMessageConverter<T extends Collection>
@Override
@SuppressWarnings("unchecked")
public T read(Type type, Class<?> contextClass, HttpInputMessage inputMessage)
public T read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage)
throws IOException, HttpMessageNotReadableException {
ParameterizedType parameterizedType = (ParameterizedType) type;
@@ -228,7 +229,7 @@ public class Jaxb2CollectionHttpMessageConverter<T extends Collection>
}
@Override
public void write(T t, Type type, MediaType contentType, HttpOutputMessage outputMessage)
public void write(T t, @Nullable Type type, @Nullable MediaType contentType, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
throw new UnsupportedOperationException();

View File

@@ -43,6 +43,7 @@ import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConversionException;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.lang.Nullable;
import org.springframework.util.ClassUtils;
/**
@@ -107,13 +108,13 @@ public class Jaxb2RootElementHttpMessageConverter extends AbstractJaxb2HttpMessa
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType) {
return (clazz.isAnnotationPresent(XmlRootElement.class) || clazz.isAnnotationPresent(XmlType.class)) &&
canRead(mediaType);
}
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
return (AnnotationUtils.findAnnotation(clazz, XmlRootElement.class) != null && canWrite(mediaType));
}

View File

@@ -25,6 +25,7 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.lang.Nullable;
import org.springframework.oxm.Marshaller;
import org.springframework.oxm.MarshallingFailureException;
import org.springframework.oxm.Unmarshaller;
@@ -106,12 +107,12 @@ public class MarshallingHttpMessageConverter extends AbstractXmlHttpMessageConve
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType) {
return (canRead(mediaType) && this.unmarshaller != null && this.unmarshaller.supports(clazz));
}
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
return (canWrite(mediaType) && this.marshaller != null && this.marshaller.supports(clazz));
}

View File

@@ -53,6 +53,7 @@ import org.springframework.http.converter.AbstractHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConversionException;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.lang.Nullable;
import org.springframework.util.StreamUtils;
/**
@@ -226,7 +227,8 @@ public class SourceHttpMessageConverter<T extends Source> extends AbstractHttpMe
}
@Override
protected Long getContentLength(T t, MediaType contentType) {
@Nullable
protected Long getContentLength(T t, @Nullable MediaType contentType) {
if (t instanceof DOMSource) {
try {
CountingOutputStream os = new CountingOutputStream();

View File

@@ -113,7 +113,7 @@ public abstract class AbstractHttpInvokerRequestExecutor implements HttpInvokerR
}
@Override
public void setBeanClassLoader(ClassLoader classLoader) {
public void setBeanClassLoader(@Nullable ClassLoader classLoader) {
this.beanClassLoader = classLoader;
}

View File

@@ -300,7 +300,7 @@ public class JaxWsPortClientInterceptor extends LocalJaxWsServiceFactory
* building a client proxy in the {@link JaxWsPortProxyFactoryBean} subclass.
*/
@Override
public void setBeanClassLoader(ClassLoader classLoader) {
public void setBeanClassLoader(@Nullable ClassLoader classLoader) {
this.beanClassLoader = classLoader;
}

View File

@@ -19,6 +19,7 @@ package org.springframework.web.bind;
import java.util.ArrayList;
import java.util.List;
import org.springframework.lang.Nullable;
import org.springframework.validation.Errors;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
@@ -64,7 +65,7 @@ public class EscapedErrors implements Errors {
}
@Override
public void setNestedPath(String nestedPath) {
public void setNestedPath(@Nullable String nestedPath) {
this.source.setNestedPath(nestedPath);
}
@@ -95,22 +96,22 @@ public class EscapedErrors implements Errors {
}
@Override
public void reject(String errorCode, Object[] errorArgs, String defaultMessage) {
public void reject(String errorCode, @Nullable Object[] errorArgs, String defaultMessage) {
this.source.reject(errorCode, errorArgs, defaultMessage);
}
@Override
public void rejectValue(String field, String errorCode) {
public void rejectValue(@Nullable String field, String errorCode) {
this.source.rejectValue(field, errorCode);
}
@Override
public void rejectValue(String field, String errorCode, String defaultMessage) {
public void rejectValue(@Nullable String field, String errorCode, String defaultMessage) {
this.source.rejectValue(field, errorCode, defaultMessage);
}
@Override
public void rejectValue(String field, String errorCode, Object[] errorArgs, String defaultMessage) {
public void rejectValue(@Nullable String field, String errorCode, @Nullable Object[] errorArgs, @Nullable String defaultMessage) {
this.source.rejectValue(field, errorCode, errorArgs, defaultMessage);
}
@@ -202,7 +203,7 @@ public class EscapedErrors implements Errors {
}
@Override
public Class<?> getFieldType(String field) {
public Class<?> getFieldType(@Nullable String field) {
return this.source.getFieldType(field);
}

View File

@@ -49,7 +49,7 @@ public class DefaultDataBinderFactory implements WebDataBinderFactory {
*/
@Override
@SuppressWarnings("deprecation")
public final WebDataBinder createBinder(NativeWebRequest webRequest, Object target,
public final WebDataBinder createBinder(NativeWebRequest webRequest, @Nullable Object target,
String objectName) throws Exception {
WebDataBinder dataBinder = createBinderInstance(target, objectName, webRequest);

View File

@@ -22,6 +22,7 @@ import java.util.Map;
import org.springframework.beans.PropertyEditorRegistry;
import org.springframework.core.MethodParameter;
import org.springframework.lang.Nullable;
import org.springframework.validation.BeanPropertyBindingResult;
import org.springframework.validation.BindingResult;
import org.springframework.validation.Errors;
@@ -66,7 +67,7 @@ public class WebExchangeBindException extends ServerWebInputException implements
}
@Override
public void setNestedPath(String nestedPath) {
public void setNestedPath(@Nullable String nestedPath) {
this.bindingResult.setNestedPath(nestedPath);
}
@@ -97,22 +98,22 @@ public class WebExchangeBindException extends ServerWebInputException implements
}
@Override
public void reject(String errorCode, Object[] errorArgs, String defaultMessage) {
public void reject(String errorCode, @Nullable Object[] errorArgs, String defaultMessage) {
this.bindingResult.reject(errorCode, errorArgs, defaultMessage);
}
@Override
public void rejectValue(String field, String errorCode) {
public void rejectValue(@Nullable String field, String errorCode) {
this.bindingResult.rejectValue(field, errorCode);
}
@Override
public void rejectValue(String field, String errorCode, String defaultMessage) {
public void rejectValue(@Nullable String field, String errorCode, String defaultMessage) {
this.bindingResult.rejectValue(field, errorCode, defaultMessage);
}
@Override
public void rejectValue(String field, String errorCode, Object[] errorArgs, String defaultMessage) {
public void rejectValue(@Nullable String field, String errorCode, @Nullable Object[] errorArgs, @Nullable String defaultMessage) {
this.bindingResult.rejectValue(field, errorCode, errorArgs, defaultMessage);
}
@@ -203,7 +204,7 @@ public class WebExchangeBindException extends ServerWebInputException implements
}
@Override
public Class<?> getFieldType(String field) {
public Class<?> getFieldType(@Nullable String field) {
return this.bindingResult.getFieldType(field);
}
@@ -224,7 +225,7 @@ public class WebExchangeBindException extends ServerWebInputException implements
@Override
@SuppressWarnings("rawtypes")
public PropertyEditor findEditor(String field, Class valueType) {
public PropertyEditor findEditor(@Nullable String field, @Nullable Class valueType) {
return this.bindingResult.findEditor(field, valueType);
}

View File

@@ -419,7 +419,7 @@ public interface AsyncRestOperations {
* @return an arbitrary object, as returned by the {@link ResponseExtractor}
*/
<T> ListenableFuture<T> execute(String url, HttpMethod method,
AsyncRequestCallback requestCallback, ResponseExtractor<T> responseExtractor,
@Nullable AsyncRequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor,
Object... uriVariables) throws RestClientException;
/**
@@ -435,7 +435,7 @@ public interface AsyncRestOperations {
* @return an arbitrary object, as returned by the {@link ResponseExtractor}
*/
<T> ListenableFuture<T> execute(String url, HttpMethod method,
AsyncRequestCallback requestCallback, ResponseExtractor<T> responseExtractor,
@Nullable AsyncRequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor,
Map<String, ?> uriVariables) throws RestClientException;
/**
@@ -449,7 +449,7 @@ public interface AsyncRestOperations {
* @return an arbitrary object, as returned by the {@link ResponseExtractor}
*/
<T> ListenableFuture<T> execute(URI url, HttpMethod method,
AsyncRequestCallback requestCallback, ResponseExtractor<T> responseExtractor)
@Nullable AsyncRequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor)
throws RestClientException;
}

View File

@@ -267,7 +267,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
// POST
@Override
public ListenableFuture<URI> postForLocation(String url, HttpEntity<?> request, Object... uriVars)
public ListenableFuture<URI> postForLocation(String url, @Nullable HttpEntity<?> request, Object... uriVars)
throws RestClientException {
AsyncRequestCallback callback = httpEntityCallback(request);
@@ -277,7 +277,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
}
@Override
public ListenableFuture<URI> postForLocation(String url, HttpEntity<?> request, Map<String, ?> uriVars)
public ListenableFuture<URI> postForLocation(String url, @Nullable HttpEntity<?> request, Map<String, ?> uriVars)
throws RestClientException {
AsyncRequestCallback callback = httpEntityCallback(request);
@@ -287,7 +287,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
}
@Override
public ListenableFuture<URI> postForLocation(URI url, HttpEntity<?> request) throws RestClientException {
public ListenableFuture<URI> postForLocation(URI url, @Nullable HttpEntity<?> request) throws RestClientException {
AsyncRequestCallback callback = httpEntityCallback(request);
ResponseExtractor<HttpHeaders> extractor = headersExtractor();
ListenableFuture<HttpHeaders> future = execute(url, HttpMethod.POST, callback, extractor);
@@ -304,7 +304,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
}
@Override
public <T> ListenableFuture<ResponseEntity<T>> postForEntity(String url, HttpEntity<?> request,
public <T> ListenableFuture<ResponseEntity<T>> postForEntity(String url, @Nullable HttpEntity<?> request,
Class<T> responseType, Object... uriVariables) throws RestClientException {
AsyncRequestCallback requestCallback = httpEntityCallback(request, responseType);
@@ -313,7 +313,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
}
@Override
public <T> ListenableFuture<ResponseEntity<T>> postForEntity(String url, HttpEntity<?> request,
public <T> ListenableFuture<ResponseEntity<T>> postForEntity(String url, @Nullable HttpEntity<?> request,
Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
AsyncRequestCallback requestCallback = httpEntityCallback(request, responseType);
@@ -322,7 +322,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
}
@Override
public <T> ListenableFuture<ResponseEntity<T>> postForEntity(URI url, HttpEntity<?> request, Class<T> responseType)
public <T> ListenableFuture<ResponseEntity<T>> postForEntity(URI url, @Nullable HttpEntity<?> request, Class<T> responseType)
throws RestClientException {
AsyncRequestCallback requestCallback = httpEntityCallback(request, responseType);
@@ -334,19 +334,19 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
// PUT
@Override
public ListenableFuture<?> put(String url, HttpEntity<?> request, Object... uriVariables) throws RestClientException {
public ListenableFuture<?> put(String url, @Nullable HttpEntity<?> request, Object... uriVariables) throws RestClientException {
AsyncRequestCallback requestCallback = httpEntityCallback(request);
return execute(url, HttpMethod.PUT, requestCallback, null, uriVariables);
}
@Override
public ListenableFuture<?> put(String url, HttpEntity<?> request, Map<String, ?> uriVariables) throws RestClientException {
public ListenableFuture<?> put(String url, @Nullable HttpEntity<?> request, Map<String, ?> uriVariables) throws RestClientException {
AsyncRequestCallback requestCallback = httpEntityCallback(request);
return execute(url, HttpMethod.PUT, requestCallback, null, uriVariables);
}
@Override
public ListenableFuture<?> put(URI url, HttpEntity<?> request) throws RestClientException {
public ListenableFuture<?> put(URI url, @Nullable HttpEntity<?> request) throws RestClientException {
AsyncRequestCallback requestCallback = httpEntityCallback(request);
return execute(url, HttpMethod.PUT, requestCallback, null);
}
@@ -405,7 +405,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
// exchange
@Override
public <T> ListenableFuture<ResponseEntity<T>> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity,
public <T> ListenableFuture<ResponseEntity<T>> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
Class<T> responseType, Object... uriVariables) throws RestClientException {
AsyncRequestCallback requestCallback = httpEntityCallback(requestEntity, responseType);
@@ -414,7 +414,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
}
@Override
public <T> ListenableFuture<ResponseEntity<T>> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity,
public <T> ListenableFuture<ResponseEntity<T>> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
AsyncRequestCallback requestCallback = httpEntityCallback(requestEntity, responseType);
@@ -423,7 +423,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
}
@Override
public <T> ListenableFuture<ResponseEntity<T>> exchange(URI url, HttpMethod method, HttpEntity<?> requestEntity,
public <T> ListenableFuture<ResponseEntity<T>> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
Class<T> responseType) throws RestClientException {
AsyncRequestCallback requestCallback = httpEntityCallback(requestEntity, responseType);
@@ -432,7 +432,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
}
@Override
public <T> ListenableFuture<ResponseEntity<T>> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity,
public <T> ListenableFuture<ResponseEntity<T>> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
ParameterizedTypeReference<T> responseType, Object... uriVariables) throws RestClientException {
Type type = responseType.getType();
@@ -442,7 +442,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
}
@Override
public <T> ListenableFuture<ResponseEntity<T>> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity,
public <T> ListenableFuture<ResponseEntity<T>> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
ParameterizedTypeReference<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
Type type = responseType.getType();
@@ -452,7 +452,7 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
}
@Override
public <T> ListenableFuture<ResponseEntity<T>> exchange(URI url, HttpMethod method, HttpEntity<?> requestEntity,
public <T> ListenableFuture<ResponseEntity<T>> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
ParameterizedTypeReference<T> responseType) throws RestClientException {
Type type = responseType.getType();
@@ -465,24 +465,24 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
// general execution
@Override
public <T> ListenableFuture<T> execute(String url, HttpMethod method, AsyncRequestCallback requestCallback,
ResponseExtractor<T> responseExtractor, Object... uriVariables) throws RestClientException {
public <T> ListenableFuture<T> execute(String url, HttpMethod method, @Nullable AsyncRequestCallback requestCallback,
@Nullable ResponseExtractor<T> responseExtractor, Object... uriVariables) throws RestClientException {
URI expanded = getUriTemplateHandler().expand(url, uriVariables);
return doExecute(expanded, method, requestCallback, responseExtractor);
}
@Override
public <T> ListenableFuture<T> execute(String url, HttpMethod method, AsyncRequestCallback requestCallback,
ResponseExtractor<T> responseExtractor, Map<String, ?> uriVariables) throws RestClientException {
public <T> ListenableFuture<T> execute(String url, HttpMethod method, @Nullable AsyncRequestCallback requestCallback,
@Nullable ResponseExtractor<T> responseExtractor, Map<String, ?> uriVariables) throws RestClientException {
URI expanded = getUriTemplateHandler().expand(url, uriVariables);
return doExecute(expanded, method, requestCallback, responseExtractor);
}
@Override
public <T> ListenableFuture<T> execute(URI url, HttpMethod method, AsyncRequestCallback requestCallback,
ResponseExtractor<T> responseExtractor) throws RestClientException {
public <T> ListenableFuture<T> execute(URI url, HttpMethod method, @Nullable AsyncRequestCallback requestCallback,
@Nullable ResponseExtractor<T> responseExtractor) throws RestClientException {
return doExecute(url, method, requestCallback, responseExtractor);
}

View File

@@ -380,28 +380,28 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
// POST
@Override
public URI postForLocation(String url, Object request, Object... uriVariables) throws RestClientException {
public URI postForLocation(String url, @Nullable Object request, Object... uriVariables) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request);
HttpHeaders headers = execute(url, HttpMethod.POST, requestCallback, headersExtractor(), uriVariables);
return headers.getLocation();
}
@Override
public URI postForLocation(String url, Object request, Map<String, ?> uriVariables) throws RestClientException {
public URI postForLocation(String url, @Nullable Object request, Map<String, ?> uriVariables) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request);
HttpHeaders headers = execute(url, HttpMethod.POST, requestCallback, headersExtractor(), uriVariables);
return headers.getLocation();
}
@Override
public URI postForLocation(URI url, Object request) throws RestClientException {
public URI postForLocation(URI url, @Nullable Object request) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request);
HttpHeaders headers = execute(url, HttpMethod.POST, requestCallback, headersExtractor());
return headers.getLocation();
}
@Override
public <T> T postForObject(String url, Object request, Class<T> responseType, Object... uriVariables)
public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables)
throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request, responseType);
@@ -411,7 +411,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
}
@Override
public <T> T postForObject(String url, Object request, Class<T> responseType, Map<String, ?> uriVariables)
public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables)
throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request, responseType);
@@ -421,7 +421,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
}
@Override
public <T> T postForObject(URI url, Object request, Class<T> responseType) throws RestClientException {
public <T> T postForObject(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request, responseType);
HttpMessageConverterExtractor<T> responseExtractor =
new HttpMessageConverterExtractor<>(responseType, getMessageConverters());
@@ -429,7 +429,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
}
@Override
public <T> ResponseEntity<T> postForEntity(String url, Object request, Class<T> responseType, Object... uriVariables)
public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables)
throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request, responseType);
@@ -438,7 +438,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
}
@Override
public <T> ResponseEntity<T> postForEntity(String url, Object request, Class<T> responseType, Map<String, ?> uriVariables)
public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables)
throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request, responseType);
@@ -447,7 +447,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
}
@Override
public <T> ResponseEntity<T> postForEntity(URI url, Object request, Class<T> responseType) throws RestClientException {
public <T> ResponseEntity<T> postForEntity(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request, responseType);
ResponseExtractor<ResponseEntity<T>> responseExtractor = responseEntityExtractor(responseType);
return execute(url, HttpMethod.POST, requestCallback, responseExtractor);
@@ -457,19 +457,19 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
// PUT
@Override
public void put(String url, Object request, Object... uriVariables) throws RestClientException {
public void put(String url, @Nullable Object request, Object... uriVariables) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request);
execute(url, HttpMethod.PUT, requestCallback, null, uriVariables);
}
@Override
public void put(String url, Object request, Map<String, ?> uriVariables) throws RestClientException {
public void put(String url, @Nullable Object request, Map<String, ?> uriVariables) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request);
execute(url, HttpMethod.PUT, requestCallback, null, uriVariables);
}
@Override
public void put(URI url, Object request) throws RestClientException {
public void put(URI url, @Nullable Object request) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request);
execute(url, HttpMethod.PUT, requestCallback, null);
}
@@ -478,7 +478,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
// PATCH
@Override
public <T> T patchForObject(String url, Object request, Class<T> responseType,
public <T> T patchForObject(String url, @Nullable Object request, Class<T> responseType,
Object... uriVariables) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request, responseType);
@@ -488,7 +488,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
}
@Override
public <T> T patchForObject(String url, Object request, Class<T> responseType,
public <T> T patchForObject(String url, @Nullable Object request, Class<T> responseType,
Map<String, ?> uriVariables) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request, responseType);
@@ -498,7 +498,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
}
@Override
public <T> T patchForObject(URI url, Object request, Class<T> responseType)
public <T> T patchForObject(URI url, @Nullable Object request, Class<T> responseType)
throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(request, responseType);
@@ -554,7 +554,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
@Override
public <T> ResponseEntity<T> exchange(String url, HttpMethod method,
HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) throws RestClientException {
@Nullable HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(requestEntity, responseType);
ResponseExtractor<ResponseEntity<T>> responseExtractor = responseEntityExtractor(responseType);
@@ -563,7 +563,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
@Override
public <T> ResponseEntity<T> exchange(String url, HttpMethod method,
HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
@Nullable HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(requestEntity, responseType);
ResponseExtractor<ResponseEntity<T>> responseExtractor = responseEntityExtractor(responseType);
@@ -571,7 +571,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
}
@Override
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, HttpEntity<?> requestEntity,
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
Class<T> responseType) throws RestClientException {
RequestCallback requestCallback = httpEntityCallback(requestEntity, responseType);
@@ -580,7 +580,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
}
@Override
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity,
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
ParameterizedTypeReference<T> responseType, Object... uriVariables) throws RestClientException {
Type type = responseType.getType();
@@ -590,7 +590,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
}
@Override
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity,
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
ParameterizedTypeReference<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
Type type = responseType.getType();
@@ -600,7 +600,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
}
@Override
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, HttpEntity<?> requestEntity,
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
ParameterizedTypeReference<T> responseType) throws RestClientException {
Type type = responseType.getType();
@@ -636,24 +636,24 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
// general execution
@Override
public <T> T execute(String url, HttpMethod method, RequestCallback requestCallback,
ResponseExtractor<T> responseExtractor, Object... uriVariables) throws RestClientException {
public <T> T execute(String url, HttpMethod method, @Nullable RequestCallback requestCallback,
@Nullable ResponseExtractor<T> responseExtractor, Object... uriVariables) throws RestClientException {
URI expanded = getUriTemplateHandler().expand(url, uriVariables);
return doExecute(expanded, method, requestCallback, responseExtractor);
}
@Override
public <T> T execute(String url, HttpMethod method, RequestCallback requestCallback,
ResponseExtractor<T> responseExtractor, Map<String, ?> uriVariables) throws RestClientException {
public <T> T execute(String url, HttpMethod method, @Nullable RequestCallback requestCallback,
@Nullable ResponseExtractor<T> responseExtractor, Map<String, ?> uriVariables) throws RestClientException {
URI expanded = getUriTemplateHandler().expand(url, uriVariables);
return doExecute(expanded, method, requestCallback, responseExtractor);
}
@Override
public <T> T execute(URI url, HttpMethod method, RequestCallback requestCallback,
ResponseExtractor<T> responseExtractor) throws RestClientException {
public <T> T execute(URI url, HttpMethod method, @Nullable RequestCallback requestCallback,
@Nullable ResponseExtractor<T> responseExtractor) throws RestClientException {
return doExecute(url, method, requestCallback, responseExtractor);
}

View File

@@ -26,6 +26,7 @@ import org.springframework.core.env.PropertySource.StubPropertySource;
import org.springframework.core.env.StandardEnvironment;
import org.springframework.jndi.JndiLocatorDelegate;
import org.springframework.jndi.JndiPropertySource;
import org.springframework.lang.Nullable;
import org.springframework.web.context.ConfigurableWebEnvironment;
/**
@@ -90,7 +91,7 @@ public class StandardServletEnvironment extends StandardEnvironment implements C
}
@Override
public void initPropertySources(ServletContext servletContext, ServletConfig servletConfig) {
public void initPropertySources(@Nullable ServletContext servletContext, @Nullable ServletConfig servletConfig) {
WebApplicationContextUtils.initServletPropertySources(getPropertySources(), servletContext, servletConfig);
}

View File

@@ -33,6 +33,7 @@ import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.http.server.ServletServerHttpResponse;
import org.springframework.lang.Nullable;
import org.springframework.util.CollectionUtils;
import org.springframework.web.util.WebUtils;
@@ -57,7 +58,7 @@ public class DefaultCorsProcessor implements CorsProcessor {
@Override
@SuppressWarnings("resource")
public boolean processRequest(CorsConfiguration config, HttpServletRequest request, HttpServletResponse response)
public boolean processRequest(@Nullable CorsConfiguration config, HttpServletRequest request, HttpServletResponse response)
throws IOException {
if (!CorsUtils.isCorsRequest(request)) {

View File

@@ -27,6 +27,7 @@ import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.lang.Nullable;
import org.springframework.util.CollectionUtils;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.server.ServerWebExchange;
@@ -51,7 +52,7 @@ public class DefaultCorsProcessor implements CorsProcessor {
@Override
public boolean processRequest(CorsConfiguration config, ServerWebExchange exchange) {
public boolean processRequest(@Nullable CorsConfiguration config, ServerWebExchange exchange) {
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();

View File

@@ -21,6 +21,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.MultiValueMap;
import org.springframework.util.ObjectUtils;
@@ -210,19 +211,19 @@ public class DefaultUriBuilderFactory implements UriBuilderFactory {
}
@Override
public DefaultUriBuilder scheme(String scheme) {
public DefaultUriBuilder scheme(@Nullable String scheme) {
this.uriComponentsBuilder.scheme(scheme);
return this;
}
@Override
public DefaultUriBuilder userInfo(String userInfo) {
public DefaultUriBuilder userInfo(@Nullable String userInfo) {
this.uriComponentsBuilder.userInfo(userInfo);
return this;
}
@Override
public DefaultUriBuilder host(String host) {
public DefaultUriBuilder host(@Nullable String host) {
this.uriComponentsBuilder.host(host);
return this;
}
@@ -234,19 +235,19 @@ public class DefaultUriBuilderFactory implements UriBuilderFactory {
}
@Override
public DefaultUriBuilder port(String port) {
public DefaultUriBuilder port(@Nullable String port) {
this.uriComponentsBuilder.port(port);
return this;
}
@Override
public DefaultUriBuilder path(String path) {
public DefaultUriBuilder path(@Nullable String path) {
this.uriComponentsBuilder.path(path);
return this;
}
@Override
public DefaultUriBuilder replacePath(String path) {
public DefaultUriBuilder replacePath(@Nullable String path) {
this.uriComponentsBuilder.replacePath(path);
return this;
}
@@ -264,7 +265,7 @@ public class DefaultUriBuilderFactory implements UriBuilderFactory {
}
@Override
public DefaultUriBuilder replaceQuery(String query) {
public DefaultUriBuilder replaceQuery(@Nullable String query) {
this.uriComponentsBuilder.replaceQuery(query);
return this;
}
@@ -294,7 +295,7 @@ public class DefaultUriBuilderFactory implements UriBuilderFactory {
}
@Override
public DefaultUriBuilder fragment(String fragment) {
public DefaultUriBuilder fragment(@Nullable String fragment) {
this.uriComponentsBuilder.fragment(fragment);
return this;
}

View File

@@ -81,7 +81,7 @@ final class HierarchicalUriComponents extends UriComponents {
*/
HierarchicalUriComponents(@Nullable String scheme, @Nullable String userInfo, @Nullable String host, @Nullable String port,
@Nullable PathComponent path, @Nullable MultiValueMap<String, String> queryParams,
@Nullable String fragment, @Nullable boolean encoded, @Nullable boolean verify) {
@Nullable String fragment, boolean encoded, boolean verify) {
super(scheme, fragment);
this.userInfo = userInfo;
@@ -919,7 +919,7 @@ final class HierarchicalUriComponents extends UriComponents {
}
@Override
public Object getValue(String name) {
public Object getValue(@Nullable String name) {
Object value = this.delegate.getValue(name);
if (ObjectUtils.isArray(value)) {
value = StringUtils.arrayToCommaDelimitedString(ObjectUtils.toObjectArray(value));

View File

@@ -304,7 +304,8 @@ public abstract class UriComponents implements Serializable {
}
@Override
public Object getValue(String name) {
@Nullable
public Object getValue(@Nullable String name) {
if (!this.uriVariables.containsKey(name)) {
throw new IllegalArgumentException("Map has no value for '" + name + "'");
}
@@ -325,7 +326,8 @@ public abstract class UriComponents implements Serializable {
}
@Override
public Object getValue(String name) {
@Nullable
public Object getValue(@Nullable String name) {
if (!this.valueIterator.hasNext()) {
throw new IllegalArgumentException("Not enough variable values available to expand '" + name + "'");
}