Consider original headers in pattern-based removal
When headers are being removed based on pattern matching, both the new header names and the original header names need to be matched against the pattern. Previously, only new headers were being considered resulting in any matching original headers not being removed.
This commit is contained in:
committed by
Rossen Stoyanchev
parent
98d7073370
commit
e694cc16c7
@@ -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<String> getMatchingHeaderNames(String pattern, Map<String, Object> headers) {
|
||||
List<String> matchingHeaderNames = new ArrayList<String>();
|
||||
if (headers != null) {
|
||||
for (Map.Entry<String, Object> header: headers.entrySet()) {
|
||||
if (PatternMatchUtils.simpleMatch(pattern, header.getKey())) {
|
||||
matchingHeaderNames.add(header.getKey());
|
||||
}
|
||||
}
|
||||
}
|
||||
return matchingHeaderNames;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the value for the given header name.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user