Polish MessageBuilder
This commit is contained in:
@@ -27,9 +27,9 @@ public interface DestinationResolvingMessageSendingOperations<D> extends Message
|
||||
|
||||
<P> void send(String destinationName, Message<P> message) throws MessagingException;
|
||||
|
||||
<T> void convertAndSend(String destinationName, T message) throws MessagingException;
|
||||
<T> void convertAndSend(String destinationName, T payload) throws MessagingException;
|
||||
|
||||
<T> void convertAndSend(String destinationName, T message, MessagePostProcessor postProcessor)
|
||||
<T> void convertAndSend(String destinationName, T payload, MessagePostProcessor postProcessor)
|
||||
throws MessagingException;
|
||||
|
||||
}
|
||||
|
||||
@@ -29,12 +29,12 @@ public interface MessageSendingOperations<D> {
|
||||
|
||||
<P> void send(D destination, Message<P> message) throws MessagingException;
|
||||
|
||||
<T> void convertAndSend(T message) throws MessagingException;
|
||||
<T> void convertAndSend(T payload) throws MessagingException;
|
||||
|
||||
<T> void convertAndSend(D destination, T message) throws MessagingException;
|
||||
<T> void convertAndSend(D destination, T payload) throws MessagingException;
|
||||
|
||||
<T> void convertAndSend(T message, MessagePostProcessor postProcessor) throws MessagingException;
|
||||
<T> void convertAndSend(T payload, MessagePostProcessor postProcessor) throws MessagingException;
|
||||
|
||||
<T> void convertAndSend(D destination, T message, MessagePostProcessor postProcessor) throws MessagingException;
|
||||
<T> void convertAndSend(D destination, T payload, MessagePostProcessor postProcessor) throws MessagingException;
|
||||
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ import org.springframework.util.Assert;
|
||||
* A specialization of {@link AbstractMessageSendingTemplate} that adds String-based
|
||||
* destinations as a message header.
|
||||
*
|
||||
* @author Mark Fisher
|
||||
* @author Rossen Stoyanchev
|
||||
* @since 4.0
|
||||
*/
|
||||
public class SimpMessagingTemplate extends AbstractMessageSendingTemplate<String>
|
||||
@@ -104,7 +104,7 @@ public class SimpMessagingTemplate extends AbstractMessageSendingTemplate<String
|
||||
SimpMessageHeaderAccessor headers = SimpMessageHeaderAccessor.wrap(message);
|
||||
headers.setDestination(destination);
|
||||
headers.setMessageTypeIfNotSet(SimpMessageType.MESSAGE);
|
||||
message = MessageBuilder.withPayloadAndHeaders(message.getPayload(), headers).build();
|
||||
message = MessageBuilder.withPayload(message.getPayload()).setHeaders(headers).build();
|
||||
|
||||
long timeout = this.sendTimeout;
|
||||
boolean sent = (timeout >= 0)
|
||||
|
||||
@@ -123,7 +123,7 @@ public class SendToMethodReturnValueHandler implements HandlerMethodReturnValueH
|
||||
public Message<?> postProcessMessage(Message<?> message) {
|
||||
SimpMessageHeaderAccessor headers = SimpMessageHeaderAccessor.wrap(message);
|
||||
headers.setSessionId(this.sessionId);
|
||||
return MessageBuilder.withPayloadAndHeaders(message.getPayload(), headers).build();
|
||||
return MessageBuilder.withPayload(message.getPayload()).setHeaders(headers).build();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ public class SubscriptionMethodReturnValueHandler implements HandlerMethodReturn
|
||||
headers.setSessionId(this.sessionId);
|
||||
headers.setSubscriptionId(this.subscriptionId);
|
||||
headers.setMessageTypeIfNotSet(SimpMessageType.MESSAGE);
|
||||
return MessageBuilder.withPayloadAndHeaders(message.getPayload(), headers).build();
|
||||
return MessageBuilder.withPayload(message.getPayload()).setHeaders(headers).build();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -325,7 +325,7 @@ public class AnnotationMethodMessageHandler implements MessageHandler, Applicati
|
||||
|
||||
try {
|
||||
headers.setDestination(lookupPath);
|
||||
message = MessageBuilder.withPayloadAndHeaders(message.getPayload(), headers).build();
|
||||
message = MessageBuilder.withPayload(message.getPayload()).setHeaders(headers).build();
|
||||
|
||||
Object returnValue = invocableHandlerMethod.invoke(message);
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ public class SimpleBrokerMessageHandler extends AbstractBrokerMessageHandler {
|
||||
replyHeaders.setSessionId(headers.getSessionId());
|
||||
replyHeaders.setHeader(SimpMessageHeaderAccessor.CONNECT_MESSAGE_HEADER, message);
|
||||
|
||||
Message<byte[]> connectAck = MessageBuilder.withPayloadAndHeaders(EMPTY_PAYLOAD, replyHeaders).build();
|
||||
Message<byte[]> connectAck = MessageBuilder.withPayload(EMPTY_PAYLOAD).setHeaders(replyHeaders).build();
|
||||
this.messageChannel.send(connectAck);
|
||||
}
|
||||
}
|
||||
@@ -121,7 +121,7 @@ public class SimpleBrokerMessageHandler extends AbstractBrokerMessageHandler {
|
||||
headers.setSubscriptionId(subscriptionId);
|
||||
|
||||
Object payload = message.getPayload();
|
||||
Message<?> clientMessage = MessageBuilder.withPayloadAndHeaders(payload, headers).build();
|
||||
Message<?> clientMessage = MessageBuilder.withPayload(payload).setHeaders(headers).build();
|
||||
try {
|
||||
this.messageChannel.send(clientMessage);
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@ public class UserDestinationMessageHandler implements MessageHandler {
|
||||
|
||||
String targetDestination = destinationParser.getTargetDestination(sessionId);
|
||||
headers.setDestination(targetDestination);
|
||||
message = MessageBuilder.withPayloadAndHeaders(message.getPayload(), headers).build();
|
||||
message = MessageBuilder.withPayload(message.getPayload()).setHeaders(headers).build();
|
||||
|
||||
if (logger.isTraceEnabled()) {
|
||||
logger.trace("Sending message to resolved target destination " + targetDestination);
|
||||
|
||||
@@ -239,7 +239,7 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler
|
||||
sessionId = (sessionId == null) ? SystemStompRelaySession.ID : sessionId;
|
||||
headers.setSessionId(sessionId);
|
||||
headers.updateStompCommandAsClientMessage();
|
||||
message = MessageBuilder.withPayloadAndHeaders(message.getPayload(), headers).build();
|
||||
message = MessageBuilder.withPayload(message.getPayload()).setHeaders(headers).build();
|
||||
}
|
||||
|
||||
if (sessionId == null) {
|
||||
@@ -252,7 +252,7 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler
|
||||
}
|
||||
|
||||
if (SimpMessageType.CONNECT.equals(messageType)) {
|
||||
message = MessageBuilder.withPayloadAndHeaders(message.getPayload(), headers).build();
|
||||
message = MessageBuilder.withPayload(message.getPayload()).setHeaders(headers).build();
|
||||
StompRelaySession session = new StompRelaySession(sessionId);
|
||||
this.relaySessions.put(sessionId, session);
|
||||
session.connect(message);
|
||||
@@ -359,7 +359,7 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler
|
||||
}
|
||||
|
||||
headers.setSessionId(this.sessionId);
|
||||
message = MessageBuilder.withPayloadAndHeaders(message.getPayload(), headers).build();
|
||||
message = MessageBuilder.withPayload(message.getPayload()).setHeaders(headers).build();
|
||||
sendMessageToClient(message);
|
||||
}
|
||||
|
||||
@@ -383,7 +383,7 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler
|
||||
StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.ERROR);
|
||||
headers.setSessionId(this.sessionId);
|
||||
headers.setMessage(errorText);
|
||||
Message<?> errorMessage = MessageBuilder.withPayloadAndHeaders(new byte[0], headers).build();
|
||||
Message<?> errorMessage = MessageBuilder.withPayload(new byte[0]).setHeaders(headers).build();
|
||||
sendMessageToClient(errorMessage);
|
||||
}
|
||||
|
||||
@@ -516,7 +516,7 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler
|
||||
headers.setLogin(systemLogin);
|
||||
headers.setPasscode(systemPasscode);
|
||||
headers.setHeartbeat(systemHeartbeatSendInterval, systemHeartbeatReceiveInterval);
|
||||
Message<?> connectMessage = MessageBuilder.withPayloadAndHeaders(new byte[0], headers).build();
|
||||
Message<?> connectMessage = MessageBuilder.withPayload(new byte[0]).setHeaders(headers).build();
|
||||
super.connect(connectMessage);
|
||||
}
|
||||
|
||||
|
||||
@@ -60,11 +60,11 @@ public class StompDecoder {
|
||||
MultiValueMap<String, String> headers = readHeaders(buffer);
|
||||
byte[] payload = readPayload(buffer, headers);
|
||||
|
||||
decodedMessage = MessageBuilder.withPayloadAndHeaders(payload,
|
||||
decodedMessage = MessageBuilder.withPayload(payload).setHeaders(
|
||||
StompHeaderAccessor.create(StompCommand.valueOf(command), headers)).build();
|
||||
}
|
||||
else {
|
||||
decodedMessage = MessageBuilder.withPayloadAndHeaders(HEARTBEAT_PAYLOAD,
|
||||
decodedMessage = MessageBuilder.withPayload(HEARTBEAT_PAYLOAD).setHeaders(
|
||||
StompHeaderAccessor.create(SimpMessageType.HEARTBEAT)).build();
|
||||
}
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ public class StompProtocolHandler implements SubProtocolHandler {
|
||||
headers.setSessionId(session.getId());
|
||||
headers.setUser(session.getPrincipal());
|
||||
|
||||
message = MessageBuilder.withPayloadAndHeaders(message.getPayload(), headers).build();
|
||||
message = MessageBuilder.withPayload(message.getPayload()).setHeaders(headers).build();
|
||||
outputChannel.send(message);
|
||||
}
|
||||
catch (Throwable t) {
|
||||
@@ -132,7 +132,7 @@ public class StompProtocolHandler implements SubProtocolHandler {
|
||||
|
||||
StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.ERROR);
|
||||
headers.setMessage(error.getMessage());
|
||||
Message<byte[]> message = MessageBuilder.withPayloadAndHeaders(new byte[0], headers).build();
|
||||
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).setHeaders(headers).build();
|
||||
String payload = new String(this.stompEncoder.encode(message), Charset.forName("UTF-8"));
|
||||
try {
|
||||
session.sendMessage(new TextMessage(payload));
|
||||
@@ -176,7 +176,7 @@ public class StompProtocolHandler implements SubProtocolHandler {
|
||||
}
|
||||
|
||||
try {
|
||||
message = MessageBuilder.withPayloadAndHeaders(message.getPayload(), headers).build();
|
||||
message = MessageBuilder.withPayload(message.getPayload()).setHeaders(headers).build();
|
||||
byte[] bytes = this.stompEncoder.encode((Message<byte[]>)message);
|
||||
session.sendMessage(new TextMessage(new String(bytes, Charset.forName("UTF-8"))));
|
||||
}
|
||||
@@ -248,7 +248,7 @@ public class StompProtocolHandler implements SubProtocolHandler {
|
||||
|
||||
StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.DISCONNECT);
|
||||
headers.setSessionId(session.getId());
|
||||
Message<?> message = MessageBuilder.withPayloadAndHeaders(new byte[0], headers).build();
|
||||
Message<?> message = MessageBuilder.withPayload(new byte[0]).setHeaders(headers).build();
|
||||
outputChannel.send(message);
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ public final class MessageBuilder<T> {
|
||||
|
||||
private final T payload;
|
||||
|
||||
private final MessageHeaderAccessor headerAccessor;
|
||||
private MessageHeaderAccessor headerAccessor;
|
||||
|
||||
private final Message<T> originalMessage;
|
||||
|
||||
@@ -44,12 +44,11 @@ public final class MessageBuilder<T> {
|
||||
/**
|
||||
* Private constructor to be invoked from the static factory methods only.
|
||||
*/
|
||||
private MessageBuilder(T payload, Message<T> originalMessage, MessageHeaderAccessor headerAccessor) {
|
||||
private MessageBuilder(T payload, Message<T> originalMessage) {
|
||||
Assert.notNull(payload, "payload must not be null");
|
||||
this.payload = payload;
|
||||
this.originalMessage = originalMessage;
|
||||
this.headerAccessor = (headerAccessor != null) ?
|
||||
headerAccessor : new MessageHeaderAccessor(originalMessage);
|
||||
this.headerAccessor = new MessageHeaderAccessor(originalMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -61,8 +60,7 @@ public final class MessageBuilder<T> {
|
||||
*/
|
||||
public static <T> MessageBuilder<T> fromMessage(Message<T> message) {
|
||||
Assert.notNull(message, "message must not be null");
|
||||
MessageBuilder<T> builder = new MessageBuilder<T>(message.getPayload(), message, null);
|
||||
return builder;
|
||||
return new MessageBuilder<T>(message.getPayload(), message);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -71,19 +69,18 @@ public final class MessageBuilder<T> {
|
||||
* @param payload the payload for the new message
|
||||
*/
|
||||
public static <T> MessageBuilder<T> withPayload(T payload) {
|
||||
MessageBuilder<T> builder = new MessageBuilder<T>(payload, null, null);
|
||||
return builder;
|
||||
return new MessageBuilder<T>(payload, null);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a builder for a new {@link Message} instance with the provided payload and headers.
|
||||
*
|
||||
* @param payload the payload for the new message
|
||||
* Set the message headers.
|
||||
* @param headerAccessor the headers for the message
|
||||
*/
|
||||
public static <T> MessageBuilder<T> withPayloadAndHeaders(T payload, MessageHeaderAccessor headerAccessor) {
|
||||
MessageBuilder<T> builder = new MessageBuilder<T>(payload, null, headerAccessor);
|
||||
return builder;
|
||||
public MessageBuilder<T> setHeaders(MessageHeaderAccessor headerAccessor) {
|
||||
Assert.notNull(headerAccessor, "headerAccessor is required");
|
||||
this.headerAccessor = headerAccessor;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user