Polish MessageBuilder

This commit is contained in:
Rossen Stoyanchev
2013-10-07 09:26:26 -04:00
parent 4574528a27
commit 824cb9f8cd
18 changed files with 55 additions and 59 deletions

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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)

View File

@@ -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();
}
}

View File

@@ -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();
}
}
}

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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);
}

View File

@@ -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;
}
/**