Nullability fine-tuning around declaration inconsistencies
Issue: SPR-15720 Issue: SPR-15792
This commit is contained in:
@@ -31,7 +31,6 @@ import org.springframework.jms.support.JmsUtils;
|
||||
import org.springframework.jms.support.QosSettings;
|
||||
import org.springframework.jms.support.converter.MessageConverter;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ErrorHandler;
|
||||
|
||||
/**
|
||||
@@ -506,6 +505,7 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public QosSettings getReplyQosSettings() {
|
||||
return this.replyQosSettings;
|
||||
}
|
||||
@@ -514,11 +514,12 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
|
||||
* Set the {@link MessageConverter} strategy for converting JMS Messages.
|
||||
* @since 4.1
|
||||
*/
|
||||
public void setMessageConverter(MessageConverter messageConverter) {
|
||||
public void setMessageConverter(@Nullable MessageConverter messageConverter) {
|
||||
this.messageConverter = messageConverter;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public MessageConverter getMessageConverter() {
|
||||
return this.messageConverter;
|
||||
}
|
||||
|
||||
@@ -144,7 +144,8 @@ public class MessageListenerAdapter extends AbstractAdaptableMessageListener imp
|
||||
* @param delegate the delegate object
|
||||
*/
|
||||
public MessageListenerAdapter(Object delegate) {
|
||||
setDelegate(delegate);
|
||||
Assert.notNull(delegate, "Delegate must not be null");
|
||||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
|
||||
@@ -196,12 +197,13 @@ public class MessageListenerAdapter extends AbstractAdaptableMessageListener imp
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public void onMessage(Message message, Session session) throws JMSException {
|
||||
public void onMessage(Message message, @Nullable Session session) throws JMSException {
|
||||
// Check whether the delegate is a MessageListener impl itself.
|
||||
// In that case, the adapter will simply act as a pass-through.
|
||||
Object delegate = getDelegate();
|
||||
if (delegate != this) {
|
||||
if (delegate instanceof SessionAwareMessageListener) {
|
||||
Assert.state(session != null, "Session is required for SessionAwareMessageListener");
|
||||
((SessionAwareMessageListener<Message>) delegate).onMessage(message, session);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.springframework.messaging.MessagingException;
|
||||
import org.springframework.messaging.core.AbstractMessageSendingTemplate;
|
||||
import org.springframework.messaging.handler.invocation.InvocableHandlerMethod;
|
||||
import org.springframework.messaging.support.MessageBuilder;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* A {@link javax.jms.MessageListener} adapter that invokes a configurable
|
||||
@@ -49,6 +50,7 @@ import org.springframework.messaging.support.MessageBuilder;
|
||||
*/
|
||||
public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageListener {
|
||||
|
||||
@Nullable
|
||||
private InvocableHandlerMethod handlerMethod;
|
||||
|
||||
|
||||
@@ -60,9 +62,14 @@ public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageLis
|
||||
this.handlerMethod = handlerMethod;
|
||||
}
|
||||
|
||||
private InvocableHandlerMethod getHandlerMethod() {
|
||||
Assert.state(this.handlerMethod != null, "No HandlerMethod set");
|
||||
return this.handlerMethod;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onMessage(javax.jms.Message jmsMessage, Session session) throws JMSException {
|
||||
public void onMessage(javax.jms.Message jmsMessage, @Nullable Session session) throws JMSException {
|
||||
Message<?> message = toMessagingMessage(jmsMessage);
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Processing [" + message + "]");
|
||||
@@ -78,7 +85,7 @@ public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageLis
|
||||
|
||||
@Override
|
||||
protected Object preProcessResponse(Object result) {
|
||||
MethodParameter returnType = this.handlerMethod.getReturnType();
|
||||
MethodParameter returnType = getHandlerMethod().getReturnType();
|
||||
if (result instanceof Message) {
|
||||
return MessageBuilder.fromMessage((Message<?>) result)
|
||||
.setHeader(AbstractMessageSendingTemplate.CONVERSION_HINT_HEADER, returnType).build();
|
||||
@@ -101,9 +108,10 @@ public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageLis
|
||||
* with a dedicated error message.
|
||||
*/
|
||||
@Nullable
|
||||
private Object invokeHandler(javax.jms.Message jmsMessage, Session session, Message<?> message) {
|
||||
private Object invokeHandler(javax.jms.Message jmsMessage, @Nullable Session session, Message<?> message) {
|
||||
InvocableHandlerMethod handlerMethod = getHandlerMethod();
|
||||
try {
|
||||
return this.handlerMethod.invoke(message, jmsMessage, session);
|
||||
return handlerMethod.invoke(message, jmsMessage, session);
|
||||
}
|
||||
catch (MessagingException ex) {
|
||||
throw new ListenerExecutionFailedException(
|
||||
@@ -111,15 +119,16 @@ public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageLis
|
||||
}
|
||||
catch (Exception ex) {
|
||||
throw new ListenerExecutionFailedException("Listener method '" +
|
||||
this.handlerMethod.getMethod().toGenericString() + "' threw exception", ex);
|
||||
handlerMethod.getMethod().toGenericString() + "' threw exception", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private String createMessagingErrorMessage(String description) {
|
||||
InvocableHandlerMethod handlerMethod = getHandlerMethod();
|
||||
StringBuilder sb = new StringBuilder(description).append("\n")
|
||||
.append("Endpoint handler details:\n")
|
||||
.append("Method [").append(this.handlerMethod.getMethod()).append("]\n")
|
||||
.append("Bean [").append(this.handlerMethod.getBean()).append("]\n");
|
||||
.append("Method [").append(handlerMethod.getMethod()).append("]\n")
|
||||
.append("Bean [").append(handlerMethod.getBean()).append("]\n");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@ import javax.resource.ResourceException;
|
||||
import javax.resource.spi.UnavailableException;
|
||||
|
||||
import org.springframework.jca.endpoint.AbstractMessageEndpointFactory;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* JMS-specific implementation of the JCA 1.7
|
||||
@@ -47,6 +49,7 @@ import org.springframework.jca.endpoint.AbstractMessageEndpointFactory;
|
||||
*/
|
||||
public class JmsMessageEndpointFactory extends AbstractMessageEndpointFactory {
|
||||
|
||||
@Nullable
|
||||
private MessageListener messageListener;
|
||||
|
||||
|
||||
@@ -61,6 +64,7 @@ public class JmsMessageEndpointFactory extends AbstractMessageEndpointFactory {
|
||||
* Return the JMS MessageListener for this endpoint.
|
||||
*/
|
||||
protected MessageListener getMessageListener() {
|
||||
Assert.state(messageListener != null, "No MessageListener set");
|
||||
return this.messageListener;
|
||||
}
|
||||
|
||||
@@ -90,16 +94,12 @@ public class JmsMessageEndpointFactory extends AbstractMessageEndpointFactory {
|
||||
}
|
||||
}
|
||||
try {
|
||||
messageListener.onMessage(message);
|
||||
getMessageListener().onMessage(message);
|
||||
}
|
||||
catch (RuntimeException ex) {
|
||||
catch (RuntimeException | Error ex) {
|
||||
onEndpointException(ex);
|
||||
throw ex;
|
||||
}
|
||||
catch (Error err) {
|
||||
onEndpointException(err);
|
||||
throw err;
|
||||
}
|
||||
finally {
|
||||
if (applyDeliveryCalls) {
|
||||
try {
|
||||
@@ -114,7 +114,7 @@ public class JmsMessageEndpointFactory extends AbstractMessageEndpointFactory {
|
||||
|
||||
@Override
|
||||
protected ClassLoader getEndpointClassLoader() {
|
||||
return messageListener.getClass().getClassLoader();
|
||||
return getMessageListener().getClass().getClassLoader();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@ public class JmsInvokerServiceExporter extends RemoteInvocationBasedExporter
|
||||
|
||||
private boolean ignoreInvalidRequests = true;
|
||||
|
||||
@Nullable
|
||||
private Object proxy;
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -32,6 +32,7 @@ import javax.xml.transform.stream.StreamResult;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.oxm.Marshaller;
|
||||
import org.springframework.oxm.Unmarshaller;
|
||||
import org.springframework.oxm.XmlMappingException;
|
||||
@@ -51,8 +52,10 @@ import org.springframework.util.Assert;
|
||||
*/
|
||||
public class MarshallingMessageConverter implements MessageConverter, InitializingBean {
|
||||
|
||||
@Nullable
|
||||
private Marshaller marshaller;
|
||||
|
||||
@Nullable
|
||||
private Unmarshaller unmarshaller;
|
||||
|
||||
private MessageType targetType = MessageType.BYTES;
|
||||
@@ -108,6 +111,7 @@ public class MarshallingMessageConverter implements MessageConverter, Initializi
|
||||
* Set the {@link Marshaller} to be used by this message converter.
|
||||
*/
|
||||
public void setMarshaller(Marshaller marshaller) {
|
||||
Assert.notNull(marshaller, "Marshaller must not be null");
|
||||
this.marshaller = marshaller;
|
||||
}
|
||||
|
||||
@@ -115,6 +119,7 @@ public class MarshallingMessageConverter implements MessageConverter, Initializi
|
||||
* Set the {@link Unmarshaller} to be used by this message converter.
|
||||
*/
|
||||
public void setUnmarshaller(Unmarshaller unmarshaller) {
|
||||
Assert.notNull(unmarshaller, "Unmarshaller must not be null");
|
||||
this.unmarshaller = unmarshaller;
|
||||
}
|
||||
|
||||
@@ -148,6 +153,7 @@ public class MarshallingMessageConverter implements MessageConverter, Initializi
|
||||
*/
|
||||
@Override
|
||||
public Message toMessage(Object object, Session session) throws JMSException, MessageConversionException {
|
||||
Assert.state(this.marshaller != null, "No Marshaller set");
|
||||
try {
|
||||
switch (this.targetType) {
|
||||
case TEXT:
|
||||
@@ -158,10 +164,7 @@ public class MarshallingMessageConverter implements MessageConverter, Initializi
|
||||
return marshalToMessage(object, session, this.marshaller, this.targetType);
|
||||
}
|
||||
}
|
||||
catch (XmlMappingException ex) {
|
||||
throw new MessageConversionException("Could not marshal [" + object + "]", ex);
|
||||
}
|
||||
catch (IOException ex) {
|
||||
catch (XmlMappingException | IOException ex) {
|
||||
throw new MessageConversionException("Could not marshal [" + object + "]", ex);
|
||||
}
|
||||
}
|
||||
@@ -173,6 +176,7 @@ public class MarshallingMessageConverter implements MessageConverter, Initializi
|
||||
*/
|
||||
@Override
|
||||
public Object fromMessage(Message message) throws JMSException, MessageConversionException {
|
||||
Assert.state(this.unmarshaller != null, "No Unmarshaller set");
|
||||
try {
|
||||
if (message instanceof TextMessage) {
|
||||
TextMessage textMessage = (TextMessage) message;
|
||||
|
||||
Reference in New Issue
Block a user