diff --git a/spring-context/src/main/java/org/springframework/messaging/support/MessageHeaderAccessor.java b/spring-context/src/main/java/org/springframework/messaging/support/MessageHeaderAccessor.java index 796abf8e1b..fcc8221927 100644 --- a/spring-context/src/main/java/org/springframework/messaging/support/MessageHeaderAccessor.java +++ b/spring-context/src/main/java/org/springframework/messaging/support/MessageHeaderAccessor.java @@ -142,11 +142,8 @@ public class MessageHeaderAccessor { for (String pattern : headerPatterns) { if (StringUtils.hasLength(pattern)){ if (pattern.contains("*")){ - for (String headerName : this.headers.keySet()) { - if (PatternMatchUtils.simpleMatch(pattern, headerName)){ - headersToRemove.add(headerName); - } - } + headersToRemove.addAll(getMatchingHeaderNames(pattern, this.headers)); + headersToRemove.addAll(getMatchingHeaderNames(pattern, this.originalHeaders)); } else { headersToRemove.add(pattern); @@ -158,6 +155,18 @@ public class MessageHeaderAccessor { } } + private List getMatchingHeaderNames(String pattern, Map headers) { + List matchingHeaderNames = new ArrayList(); + if (headers != null) { + for (Map.Entry header: headers.entrySet()) { + if (PatternMatchUtils.simpleMatch(pattern, header.getKey())) { + matchingHeaderNames.add(header.getKey()); + } + } + } + return matchingHeaderNames; + } + /** * Remove the value for the given header name. */