diff --git a/spring-integration-core/src/main/java/org/springframework/integration/MessageHeaders.java b/spring-integration-core/src/main/java/org/springframework/integration/MessageHeaders.java index 046969c043..dc9991d813 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/MessageHeaders.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/MessageHeaders.java @@ -33,7 +33,20 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** - * The headers for a {@link Message}. + * The headers for a {@link Message}.
+ * IMPORTANT: MessageHeaders are immutable. Any mutating operation (e.g., put(..), putAll(..) etc.) + * will result in {@link UnsupportedOperationException} + * To create MessageHeaders instance use fluent MessageBuilder API + *
+ * MessageBuilder.withPayload("foo").setHeader("key1", "value1").setHeader("key2", "value2");
+ * 
+ * or create an instance of GenericMessage passing payload as {@link Object} and headers as a regular {@link Map} + *
+ * Map headers = new HashMap();
+ * headers.put("key1", "value1");
+ * headers.put("key2", "value2");
+ * new GenericMessage("foo", headers);
+ * 
* * @author Arjen Poutsma * @author Mark Fisher @@ -192,19 +205,27 @@ public final class MessageHeaders implements Map, Serializable { /* * Unsupported operations */ - + /** + * Since MessageHeaders are immutable the call to this method will result in {@link UnsupportedOperationException} + */ public Object put(String key, Object value) { throw new UnsupportedOperationException("MessageHeaders is immutable."); } - + /** + * Since MessageHeaders are immutable the call to this method will result in {@link UnsupportedOperationException} + */ public void putAll(Map t) { throw new UnsupportedOperationException("MessageHeaders is immutable."); } - + /** + * Since MessageHeaders are immutable the call to this method will result in {@link UnsupportedOperationException} + */ public Object remove(Object key) { throw new UnsupportedOperationException("MessageHeaders is immutable."); } - + /** + * Since MessageHeaders are immutable the call to this method will result in {@link UnsupportedOperationException} + */ public void clear() { throw new UnsupportedOperationException("MessageHeaders is immutable."); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/message/ErrorMessage.java b/spring-integration-core/src/main/java/org/springframework/integration/message/ErrorMessage.java index ca8e84f350..9a96d11718 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/message/ErrorMessage.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/message/ErrorMessage.java @@ -20,6 +20,7 @@ import java.util.Map; /** * A message implementation that accepts a {@link Throwable} payload. + * Once created this object is immutable. * * @author Mark Fisher * @author Oleg Zhurakousky diff --git a/spring-integration-core/src/main/java/org/springframework/integration/message/GenericMessage.java b/spring-integration-core/src/main/java/org/springframework/integration/message/GenericMessage.java index 0d2a9e9638..4874feabd2 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/message/GenericMessage.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/message/GenericMessage.java @@ -27,6 +27,7 @@ import org.springframework.util.ObjectUtils; /** * Base Message class defining common properties such as id, payload, and headers. + * Once created this object is immutable. * * @author Mark Fisher */