INT-1919 added removeHeaders(String...) method to MessageBuilder to support plural semantics of possibly removing multiple headers with a single callback
This commit is contained in:
@@ -113,36 +113,44 @@ public final class MessageBuilder<T> {
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all headers provided via array of 'headerPatterns'. As the name suggests the array
|
||||
* may contain simple matching patterns for header names. Supported pattern styles are:
|
||||
* "xxx*", "*xxx", "*xxx*" and "xxx*yyy".
|
||||
*
|
||||
* @param headerPatterns
|
||||
*/
|
||||
public MessageBuilder<T> removeHeaders(String... headerPatterns) {
|
||||
List<String> headersToRemove = new ArrayList<String>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
headersToRemove.add(pattern);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (String headerToRemove : headersToRemove) {
|
||||
this.removeHeader(headerToRemove);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* Remove the value for the given header name.
|
||||
*/
|
||||
public MessageBuilder<T> removeHeader(String headerName) {
|
||||
if (StringUtils.hasLength(headerName)){
|
||||
if (headerName.contains("*")){
|
||||
List<String> headersToRemove = new ArrayList<String>();
|
||||
for (String hdrName : this.headers.keySet()) {
|
||||
if (PatternMatchUtils.simpleMatch(headerName, hdrName)){
|
||||
headersToRemove.add(hdrName);
|
||||
}
|
||||
}
|
||||
for (String headerToRemove : headersToRemove) {
|
||||
this.doRemoveHeader(headerToRemove);
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.doRemoveHeader(headerName);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
private void doRemoveHeader(String headerName){
|
||||
if (StringUtils.hasLength(headerName) && !headerName.equals(MessageHeaders.ID)
|
||||
&& !headerName.equals(MessageHeaders.TIMESTAMP)) {
|
||||
this.modified = true;
|
||||
this.headers.remove(headerName);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.springframework.util.Assert;
|
||||
* Transformer that removes Message headers.
|
||||
*
|
||||
* @author Mark Fisher
|
||||
* @author Oleg Zhurakousky
|
||||
* @since 2.0
|
||||
*/
|
||||
public class HeaderFilter implements Transformer {
|
||||
@@ -38,10 +39,8 @@ public class HeaderFilter implements Transformer {
|
||||
|
||||
|
||||
public Message<?> transform(Message<?> message) {
|
||||
MessageBuilder<?> builder = MessageBuilder.fromMessage(message);
|
||||
for (String headerName : headersToRemove) {
|
||||
builder.removeHeader(headerName);
|
||||
}
|
||||
MessageBuilder<?> builder = MessageBuilder.fromMessage(message);
|
||||
builder.removeHeaders(headersToRemove);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user