Add more @Nullable parameters based on null usage
Issue: SPR-15540
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user