Add more @Nullable parameters based on null usage

Issue: SPR-15540
This commit is contained in:
Sebastien Deleuze
2017-05-31 21:35:52 +02:00
parent f9b319d3ba
commit 1f28825f9d
219 changed files with 441 additions and 355 deletions

View File

@@ -107,7 +107,7 @@ public class MessageHeaders implements Map<String, Object>, Serializable {
* {@link #TIMESTAMP} headers will also be added, overriding any existing values.
* @param headers a map with headers to add
*/
public MessageHeaders(Map<String, Object> headers) {
public MessageHeaders(@Nullable Map<String, Object> headers) {
this(headers, null, null);
}
@@ -117,7 +117,7 @@ public class MessageHeaders implements Map<String, Object>, Serializable {
* @param id the {@link #ID} header value
* @param timestamp the {@link #TIMESTAMP} header value
*/
protected MessageHeaders(Map<String, Object> headers, UUID id, Long timestamp) {
protected MessageHeaders(@Nullable Map<String, Object> headers, UUID id, Long timestamp) {
this.headers = (headers != null ? new HashMap<>(headers) : new HashMap<String, Object>());
if (id == null) {

View File

@@ -18,6 +18,7 @@ package org.springframework.messaging.core;
import java.util.Map;
import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
import org.springframework.util.Assert;
@@ -89,7 +90,7 @@ public abstract class AbstractDestinationResolvingMessagingTemplate<D> extends A
}
@Override
public <T> void convertAndSend(String destinationName, T payload, Map<String, Object> headers, MessagePostProcessor postProcessor) {
public <T> void convertAndSend(String destinationName, T payload, @Nullable Map<String, Object> headers, @Nullable MessagePostProcessor postProcessor) {
D destination = resolveDestination(destinationName);
super.convertAndSend(destination, payload, headers, postProcessor);
}

View File

@@ -125,7 +125,7 @@ public abstract class AbstractMessageSendingTemplate<D> implements MessageSendin
}
@Override
public void convertAndSend(Object payload, MessagePostProcessor postProcessor) throws MessagingException {
public void convertAndSend(Object payload, @Nullable MessagePostProcessor postProcessor) throws MessagingException {
convertAndSend(getRequiredDefaultDestination(), payload, postProcessor);
}
@@ -137,8 +137,8 @@ public abstract class AbstractMessageSendingTemplate<D> implements MessageSendin
}
@Override
public void convertAndSend(D destination, Object payload, Map<String, Object> headers,
MessagePostProcessor postProcessor) throws MessagingException {
public void convertAndSend(D destination, Object payload, @Nullable Map<String, Object> headers,
@Nullable MessagePostProcessor postProcessor) throws MessagingException {
Message<?> message = doConvert(payload, headers, postProcessor);
send(destination, message);

View File

@@ -18,6 +18,7 @@ package org.springframework.messaging.core;
import java.util.Map;
import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
/**
@@ -56,12 +57,12 @@ public abstract class AbstractMessagingTemplate<D> extends AbstractMessageReceiv
}
@Override
public <T> T convertSendAndReceive(D destination, Object request, Map<String, Object> headers, Class<T> targetClass) {
public <T> T convertSendAndReceive(D destination, Object request, @Nullable Map<String, Object> headers, Class<T> targetClass) {
return convertSendAndReceive(destination, request, headers, targetClass, null);
}
@Override
public <T> T convertSendAndReceive(Object request, Class<T> targetClass, MessagePostProcessor postProcessor) {
public <T> T convertSendAndReceive(Object request, Class<T> targetClass, @Nullable MessagePostProcessor postProcessor) {
return convertSendAndReceive(getRequiredDefaultDestination(), request, targetClass, postProcessor);
}
@@ -72,8 +73,8 @@ public abstract class AbstractMessagingTemplate<D> extends AbstractMessageReceiv
@SuppressWarnings("unchecked")
@Override
public <T> T convertSendAndReceive(D destination, Object request, Map<String, Object> headers,
Class<T> targetClass, MessagePostProcessor postProcessor) {
public <T> T convertSendAndReceive(D destination, Object request, @Nullable Map<String, Object> headers,
Class<T> targetClass, @Nullable MessagePostProcessor postProcessor) {
Message<?> requestMessage = doConvert(request, headers, postProcessor);
Message<?> replyMessage = sendAndReceive(destination, requestMessage);

View File

@@ -18,6 +18,7 @@ package org.springframework.messaging.core;
import java.util.Map;
import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessagingException;
@@ -86,7 +87,7 @@ public interface DestinationResolvingMessageSendingOperations<D> extends Message
* @param headers headers for the message to send
* @param postProcessor the post processor to apply to the message
*/
<T> void convertAndSend(String destinationName, T payload, Map<String, Object> headers,
MessagePostProcessor postProcessor) throws MessagingException;
<T> void convertAndSend(String destinationName, T payload, @Nullable Map<String, Object> headers,
@Nullable MessagePostProcessor postProcessor) throws MessagingException;
}

View File

@@ -92,7 +92,7 @@ public interface MessageRequestReplyOperations<D> {
* could not be received, for example due to a timeout
*/
@Nullable
<T> T convertSendAndReceive(D destination, Object request, Map<String, Object> headers, Class<T> targetClass)
<T> T convertSendAndReceive(D destination, Object request, @Nullable Map<String, Object> headers, Class<T> targetClass)
throws MessagingException;
/**
@@ -108,7 +108,7 @@ public interface MessageRequestReplyOperations<D> {
* could not be received, for example due to a timeout
*/
@Nullable
<T> T convertSendAndReceive(Object request, Class<T> targetClass, MessagePostProcessor requestPostProcessor)
<T> T convertSendAndReceive(Object request, Class<T> targetClass, @Nullable MessagePostProcessor requestPostProcessor)
throws MessagingException;
/**
@@ -142,7 +142,7 @@ public interface MessageRequestReplyOperations<D> {
* could not be received, for example due to a timeout
*/
@Nullable
<T> T convertSendAndReceive(D destination, Object request, Map<String, Object> headers,
Class<T> targetClass, MessagePostProcessor requestPostProcessor) throws MessagingException;
<T> T convertSendAndReceive(D destination, Object request, @Nullable Map<String, Object> headers,
Class<T> targetClass, @Nullable MessagePostProcessor requestPostProcessor) throws MessagingException;
}

View File

@@ -18,6 +18,7 @@ package org.springframework.messaging.core;
import java.util.Map;
import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessagingException;
@@ -80,7 +81,7 @@ public interface MessageSendingOperations<D> {
* @param payload the Object to use as payload
* @param postProcessor the post processor to apply to the message
*/
void convertAndSend(Object payload, MessagePostProcessor postProcessor) throws MessagingException;
void convertAndSend(Object payload, @Nullable MessagePostProcessor postProcessor) throws MessagingException;
/**
* Convert the given Object to serialized form, possibly using a
@@ -103,7 +104,7 @@ public interface MessageSendingOperations<D> {
* @param headers headers for the message to send
* @param postProcessor the post processor to apply to the message
*/
void convertAndSend(D destination, Object payload, Map<String, Object> headers, MessagePostProcessor postProcessor)
void convertAndSend(D destination, Object payload, @Nullable Map<String, Object> headers, @Nullable MessagePostProcessor postProcessor)
throws MessagingException;
}

View File

@@ -20,6 +20,7 @@ import java.security.Principal;
import java.util.List;
import java.util.Map;
import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.IdTimestampMessageHeaderInitializer;
import org.springframework.messaging.support.MessageHeaderAccessor;
@@ -87,7 +88,7 @@ public class SimpMessageHeaderAccessor extends NativeMessageHeaderAccessor {
* A constructor for creating new message headers.
* This constructor is protected. See factory methods in this and sub-classes.
*/
protected SimpMessageHeaderAccessor(SimpMessageType messageType, Map<String, List<String>> externalSourceHeaders) {
protected SimpMessageHeaderAccessor(SimpMessageType messageType, @Nullable Map<String, List<String>> externalSourceHeaders) {
super(externalSourceHeaders);
Assert.notNull(messageType, "MessageType must not be null");
setHeader(MESSAGE_TYPE_HEADER, messageType);
@@ -188,7 +189,7 @@ public class SimpMessageHeaderAccessor extends NativeMessageHeaderAccessor {
@SuppressWarnings("unchecked")
@Override
public String getDetailedLogMessage(Object payload) {
public String getDetailedLogMessage(@Nullable Object payload) {
if (getMessageType() == null) {
return super.getDetailedLogMessage(payload);
}

View File

@@ -107,7 +107,7 @@ public interface SimpMessageSendingOperations extends MessageSendingOperations<S
* @param headers the message headers
* @param postProcessor a postProcessor to post-process or modify the created message
*/
void convertAndSendToUser(String user, String destination, Object payload, Map<String, Object> headers,
MessagePostProcessor postProcessor) throws MessagingException;
void convertAndSendToUser(String user, String destination, Object payload, @Nullable Map<String, Object> headers,
@Nullable MessagePostProcessor postProcessor) throws MessagingException;
}

View File

@@ -31,6 +31,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.core.ResolvableType;
import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageDeliveryException;
import org.springframework.messaging.converter.MessageConversionException;
@@ -243,7 +244,7 @@ public class DefaultStompSession implements ConnectionHandlingStompSession {
}
@SuppressWarnings("unchecked")
private Message<byte[]> createMessage(StompHeaderAccessor accessor, Object payload) {
private Message<byte[]> createMessage(StompHeaderAccessor accessor, @Nullable Object payload) {
accessor.updateSimpMessageHeadersFromStompHeaders();
Message<byte[]> message;
if (payload == null) {
@@ -635,7 +636,7 @@ public class DefaultStompSession implements ConnectionHandlingStompSession {
}
@Override
public void unsubscribe(StompHeaders stompHeaders) {
public void unsubscribe(@Nullable StompHeaders stompHeaders) {
String id = this.headers.getId();
DefaultStompSession.this.subscriptions.remove(id);
DefaultStompSession.this.unsubscribe(id, stompHeaders);

View File

@@ -16,6 +16,7 @@
package org.springframework.messaging.simp.stomp;
import org.springframework.lang.Nullable;
import org.springframework.messaging.tcp.TcpOperations;
import org.springframework.messaging.tcp.reactor.ReactorNettyTcpClient;
import org.springframework.util.Assert;
@@ -75,7 +76,7 @@ public class ReactorNettyTcpStompClient extends StompClientSupport {
* @param handler the handler for the STOMP session
* @return ListenableFuture for access to the session when ready for use
*/
public ListenableFuture<StompSession> connect(StompHeaders connectHeaders, StompSessionHandler handler) {
public ListenableFuture<StompSession> connect(@Nullable StompHeaders connectHeaders, StompSessionHandler handler) {
ConnectionHandlingStompSession session = createSession(connectHeaders, handler);
this.tcpClient.connect(session);
return session.getSessionFuture();

View File

@@ -24,6 +24,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.MessageDeliveryException;
@@ -594,7 +595,7 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler
* Invoked when any TCP connectivity issue is detected, i.e. failure to establish
* the TCP connection, failure to send a message, missed heartbeat, etc.
*/
protected void handleTcpConnectionFailure(String error, Throwable ex) {
protected void handleTcpConnectionFailure(String error, @Nullable Throwable ex) {
if (logger.isErrorEnabled()) {
logger.error("TCP connection failure in session " + this.sessionId + ": " + error, ex);
}
@@ -943,7 +944,7 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler
}
@Override
protected void handleTcpConnectionFailure(String errorMessage, Throwable ex) {
protected void handleTcpConnectionFailure(String errorMessage, @Nullable Throwable ex) {
super.handleTcpConnectionFailure(errorMessage, ex);
publishBrokerUnavailableEvent();
}

View File

@@ -106,7 +106,7 @@ public class StompDecoder {
* @return the decoded messages, or an empty list if none
* @throws StompConversionException raised in case of decoding issues
*/
public List<Message<byte[]>> decode(ByteBuffer byteBuffer, MultiValueMap<String, String> partialMessageHeaders) {
public List<Message<byte[]>> decode(ByteBuffer byteBuffer, @Nullable MultiValueMap<String, String> partialMessageHeaders) {
List<Message<byte[]>> messages = new ArrayList<>();
while (byteBuffer.hasRemaining()) {
Message<byte[]> message = decodeMessage(byteBuffer, partialMessageHeaders);

View File

@@ -112,7 +112,7 @@ public class StompHeaderAccessor extends SimpMessageHeaderAccessor {
/**
* A constructor for creating message headers from a parsed STOMP frame.
*/
StompHeaderAccessor(StompCommand command, Map<String, List<String>> externalSourceHeaders) {
StompHeaderAccessor(StompCommand command, @Nullable Map<String, List<String>> externalSourceHeaders) {
super(command.getMessageType(), externalSourceHeaders);
setHeader(COMMAND_HEADER, command);
updateSimpMessageHeadersFromStompHeaders();
@@ -419,7 +419,7 @@ public class StompHeaderAccessor extends SimpMessageHeaderAccessor {
}
@Override
public String getDetailedLogMessage(Object payload) {
public String getDetailedLogMessage(@Nullable Object payload) {
if (isHeartbeat()) {
return "heart-beat in session " + getSessionId();
}

View File

@@ -25,6 +25,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MimeType;
@@ -396,7 +397,7 @@ public class StompHeaders implements MultiValueMap<String, String>, Serializable
* @see #set(String, String)
*/
@Override
public void add(String headerName, String headerValue) {
public void add(String headerName, @Nullable String headerValue) {
List<String> headerValues = headers.computeIfAbsent(headerName, k -> new LinkedList<>());
headerValues.add(headerValue);
}

View File

@@ -159,7 +159,7 @@ public interface StompSession {
* to send to the server.
* <p><strong>Note:</strong> There is no need to set the subscription id.
*/
void unsubscribe(StompHeaders stompHeaders);
void unsubscribe(@Nullable StompHeaders stompHeaders);
}
}

View File

@@ -178,7 +178,7 @@ public abstract class AbstractMessageChannel implements MessageChannel, Intercep
}
}
public void triggerAfterSendCompletion(Message<?> message, MessageChannel channel, boolean sent, Exception ex) {
public void triggerAfterSendCompletion(Message<?> message, MessageChannel channel, boolean sent, @Nullable Exception ex) {
for (int i = this.sendInterceptorIndex; i >= 0; i--) {
ChannelInterceptor interceptor = interceptors.get(i);
try {
@@ -212,7 +212,7 @@ public abstract class AbstractMessageChannel implements MessageChannel, Intercep
return message;
}
public void triggerAfterReceiveCompletion(Message<?> message, MessageChannel channel, Exception ex) {
public void triggerAfterReceiveCompletion(@Nullable Message<?> message, MessageChannel channel, @Nullable Exception ex) {
for (int i = this.receiveInterceptorIndex; i >= 0; i--) {
ChannelInterceptor interceptor = interceptors.get(i);
try {

View File

@@ -169,7 +169,7 @@ public class ExecutorSubscribableChannel extends AbstractSubscribableChannel {
return message;
}
private void triggerAfterMessageHandled(Message<?> message, Exception ex) {
private void triggerAfterMessageHandled(Message<?> message, @Nullable Exception ex) {
for (int i = this.interceptorIndex; i >= 0; i--) {
ExecutorChannelInterceptor interceptor = executorInterceptors.get(i);
try {

View File

@@ -488,7 +488,7 @@ public class MessageHeaderAccessor {
* @param payload the payload that corresponds to the headers.
* @return the message
*/
public String getDetailedLogMessage(Object payload) {
public String getDetailedLogMessage(@Nullable Object payload) {
return "headers=" + this.headers.toString() + getDetailedPayloadLogMessage(payload);
}