From b2b02ad7a17752479ff9febe7b4ab15da3b81708 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Fri, 8 Nov 2019 15:03:12 +0000 Subject: [PATCH] Polishing --- .../messaging/support/MessageBuilder.java | 37 ++++++++++--------- .../support/MessageBuilderTests.java | 13 +++---- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/spring-messaging/src/main/java/org/springframework/messaging/support/MessageBuilder.java b/spring-messaging/src/main/java/org/springframework/messaging/support/MessageBuilder.java index cd909f4baf..64d75f2d0f 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/support/MessageBuilder.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/support/MessageBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -41,23 +41,23 @@ public final class MessageBuilder { private final T payload; @Nullable - private final Message originalMessage; + private final Message providedMessage; private MessageHeaderAccessor headerAccessor; - private MessageBuilder(Message originalMessage) { - Assert.notNull(originalMessage, "Message must not be null"); - this.payload = originalMessage.getPayload(); - this.originalMessage = originalMessage; - this.headerAccessor = new MessageHeaderAccessor(originalMessage); + private MessageBuilder(Message providedMessage) { + Assert.notNull(providedMessage, "Message must not be null"); + this.payload = providedMessage.getPayload(); + this.providedMessage = providedMessage; + this.headerAccessor = new MessageHeaderAccessor(providedMessage); } private MessageBuilder(T payload, MessageHeaderAccessor accessor) { Assert.notNull(payload, "Payload must not be null"); Assert.notNull(accessor, "MessageHeaderAccessor must not be null"); this.payload = payload; - this.originalMessage = null; + this.providedMessage = null; this.headerAccessor = accessor; } @@ -149,16 +149,18 @@ public final class MessageBuilder { @SuppressWarnings("unchecked") public Message build() { - if (this.originalMessage != null && !this.headerAccessor.isModified()) { - return this.originalMessage; + if (this.providedMessage != null && !this.headerAccessor.isModified()) { + return this.providedMessage; } MessageHeaders headersToUse = this.headerAccessor.toMessageHeaders(); if (this.payload instanceof Throwable) { - Message originalMessage = null; - if (this.originalMessage != null && this.originalMessage instanceof ErrorMessage) { - originalMessage = ((ErrorMessage) this.originalMessage).getOriginalMessage(); + if (this.providedMessage != null && this.providedMessage instanceof ErrorMessage) { + Message message = ((ErrorMessage) this.providedMessage).getOriginalMessage(); + if (message != null) { + return (Message) new ErrorMessage((Throwable) this.payload, headersToUse, message); + } } - return (Message) new ErrorMessage((Throwable) this.payload, headersToUse, originalMessage); + return (Message) new ErrorMessage((Throwable) this.payload, headersToUse); } else { return new GenericMessage<>(this.payload, headersToUse); @@ -170,10 +172,9 @@ public final class MessageBuilder { * Create a builder for a new {@link Message} instance pre-populated with all of the * headers copied from the provided message. The payload of the provided Message will * also be used as the payload for the new message. - * - * If the provided message is an {@link ErrorMessage} - the - * {@link ErrorMessage#originalMessage} link will be provided to the new instance. - * + *

If the provided message is an {@link ErrorMessage}, the + * {@link ErrorMessage#getOriginalMessage() originalMessage} it contains, will be + * passed on to new instance. * @param message the Message from which the payload and all headers will be copied */ public static MessageBuilder fromMessage(Message message) { diff --git a/spring-messaging/src/test/java/org/springframework/messaging/support/MessageBuilderTests.java b/spring-messaging/src/test/java/org/springframework/messaging/support/MessageBuilderTests.java index 3e26ba42c2..c1e2df81ea 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/support/MessageBuilderTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/support/MessageBuilderTests.java @@ -108,18 +108,17 @@ public class MessageBuilderTests { assertThat(message2.getHeaders().get("foo")).isEqualTo("bar"); } - @Test + @Test // gh-23417 public void createErrorMessageFromErrorMessage() { - Message originalMessage = MessageBuilder.withPayload("test") - .setHeader("foo", "bar").build(); - RuntimeException errorPayload = new RuntimeException(); - ErrorMessage errorMessage1 = new ErrorMessage(errorPayload, Collections.singletonMap("baz", "42"), originalMessage); + Message source = MessageBuilder.withPayload("test").setHeader("foo", "bar").build(); + RuntimeException ex = new RuntimeException(); + ErrorMessage errorMessage1 = new ErrorMessage(ex, Collections.singletonMap("baz", "42"), source); Message errorMessage2 = MessageBuilder.fromMessage(errorMessage1).build(); assertThat(errorMessage2).isExactlyInstanceOf(ErrorMessage.class); ErrorMessage actual = (ErrorMessage) errorMessage2; - assertThat(actual.getPayload()).isSameAs(errorPayload); + assertThat(actual.getPayload()).isSameAs(ex); assertThat(actual.getHeaders().get("baz")).isEqualTo("42"); - assertThat(actual.getOriginalMessage()).isSameAs(originalMessage); + assertThat(actual.getOriginalMessage()).isSameAs(source); } @Test -- GitLab