Skip to content

Commit 400738e

Browse files
committed
Polish MessageHeaderAccessor
Issue: SPR-12431
1 parent 5e3edc6 commit 400738e

File tree

2 files changed

+62
-12
lines changed

2 files changed

+62
-12
lines changed

spring-messaging/src/main/java/org/springframework/messaging/support/MessageHeaderAccessor.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import java.util.HashMap;
2323
import java.util.List;
2424
import java.util.Map;
25-
import java.util.Set;
2625
import java.util.UUID;
2726

2827
import org.apache.commons.logging.Log;
@@ -373,9 +372,9 @@ public void removeHeaders(String... headerPatterns) {
373372
private List<String> getMatchingHeaderNames(String pattern, Map<String, Object> headers) {
374373
List<String> matchingHeaderNames = new ArrayList<String>();
375374
if (headers != null) {
376-
for (Map.Entry<String, Object> header: headers.entrySet()) {
377-
if (PatternMatchUtils.simpleMatch(pattern, header.getKey())) {
378-
matchingHeaderNames.add(header.getKey());
375+
for (String key : headers.keySet()) {
376+
if (PatternMatchUtils.simpleMatch(pattern, key)) {
377+
matchingHeaderNames.add(key);
379378
}
380379
}
381380
}
@@ -389,10 +388,9 @@ private List<String> getMatchingHeaderNames(String pattern, Map<String, Object>
389388
*/
390389
public void copyHeaders(Map<String, ?> headersToCopy) {
391390
if (headersToCopy != null) {
392-
Set<String> keys = headersToCopy.keySet();
393-
for (String key : keys) {
394-
if (!isReadOnly(key)) {
395-
setHeader(key, headersToCopy.get(key));
391+
for (Map.Entry<String, ?> entry : headersToCopy.entrySet()) {
392+
if (!isReadOnly(entry.getKey())) {
393+
setHeader(entry.getKey(), entry.getValue());
396394
}
397395
}
398396
}
@@ -404,10 +402,9 @@ public void copyHeaders(Map<String, ?> headersToCopy) {
404402
*/
405403
public void copyHeadersIfAbsent(Map<String, ?> headersToCopy) {
406404
if (headersToCopy != null) {
407-
Set<String> keys = headersToCopy.keySet();
408-
for (String key : keys) {
409-
if (!isReadOnly(key)) {
410-
setHeaderIfAbsent(key, headersToCopy.get(key));
405+
for (Map.Entry<String, ?> entry : headersToCopy.entrySet()) {
406+
if (!isReadOnly(entry.getKey())) {
407+
setHeaderIfAbsent(entry.getKey(), entry.getValue());
411408
}
412409
}
413410
}

spring-messaging/src/test/java/org/springframework/messaging/support/MessageHeaderAccessorTests.java

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
* Test fixture for {@link MessageHeaderAccessor}.
4040
*
4141
* @author Rossen Stoyanchev
42+
* @author Sebastien Deleuze
4243
*/
4344
public class MessageHeaderAccessorTests {
4445

@@ -88,6 +89,58 @@ public void existingHeadersModification() throws InterruptedException {
8889
assertEquals("baz", actual.get("bar"));
8990
}
9091

92+
@Test
93+
public void removeHeaders() {
94+
Map<String, Object> map = new HashMap<>();
95+
map.put("foo", "bar");
96+
map.put("bar", "baz");
97+
GenericMessage<String> message = new GenericMessage<>("payload", map);
98+
MessageHeaderAccessor accessor = new MessageHeaderAccessor(message);
99+
100+
accessor.removeHeaders("fo*");
101+
102+
MessageHeaders actual = accessor.getMessageHeaders();
103+
assertEquals(2, actual.size());
104+
assertNull(actual.get("foo"));
105+
assertEquals("baz", actual.get("bar"));
106+
}
107+
108+
@Test
109+
public void copyHeaders() {
110+
Map<String, Object> map1 = new HashMap<>();
111+
map1.put("foo", "bar");
112+
GenericMessage<String> message = new GenericMessage<>("payload", map1);
113+
MessageHeaderAccessor accessor = new MessageHeaderAccessor(message);
114+
115+
Map<String, Object> map2 = new HashMap<>();
116+
map2.put("foo", "BAR");
117+
map2.put("bar", "baz");
118+
accessor.copyHeaders(map2);
119+
120+
MessageHeaders actual = accessor.getMessageHeaders();
121+
assertEquals(3, actual.size());
122+
assertEquals("BAR", actual.get("foo"));
123+
assertEquals("baz", actual.get("bar"));
124+
}
125+
126+
@Test
127+
public void copyHeadersIfAbsent() {
128+
Map<String, Object> map1 = new HashMap<>();
129+
map1.put("foo", "bar");
130+
GenericMessage<String> message = new GenericMessage<>("payload", map1);
131+
MessageHeaderAccessor accessor = new MessageHeaderAccessor(message);
132+
133+
Map<String, Object> map2 = new HashMap<>();
134+
map2.put("foo", "BAR");
135+
map2.put("bar", "baz");
136+
accessor.copyHeadersIfAbsent(map2);
137+
138+
MessageHeaders actual = accessor.getMessageHeaders();
139+
assertEquals(3, actual.size());
140+
assertEquals("bar", actual.get("foo"));
141+
assertEquals("baz", actual.get("bar"));
142+
}
143+
91144
@Test
92145
public void copyHeadersFromNullMap() {
93146
MessageHeaderAccessor headers = new MessageHeaderAccessor();

0 commit comments

Comments
 (0)