INT-836 refactored HeaderEnricher to delegate to MessageProcessor implementations

This commit is contained in:
Mark Fisher
2010-06-11 22:10:11 +00:00
parent bfd6c81673
commit b6974b712c
4 changed files with 73 additions and 86 deletions

View File

@@ -44,12 +44,12 @@ public class XPathHeaderEnricher extends HeaderEnricher {
* Create an instance of XPathHeaderEnricher using a map with header names as keys
* and XPathExpressionValueHolders to evaluate the values.
*/
public XPathHeaderEnricher(Map<String, XPathExpressionValueHolder> expressionMap) {
public XPathHeaderEnricher(Map<String, XPathExpressionEvaluatingHeaderValueMessageProcessor> expressionMap) {
super(expressionMap);
}
public static class XPathExpressionValueHolder implements ValueHolder {
public static class XPathExpressionEvaluatingHeaderValueMessageProcessor implements HeaderValueMessageProcessor {
private final XPathExpression expression;
@@ -60,12 +60,12 @@ public class XPathHeaderEnricher extends HeaderEnricher {
private volatile Boolean overwrite = null;
public XPathExpressionValueHolder(String expression) {
public XPathExpressionEvaluatingHeaderValueMessageProcessor(String expression) {
Assert.hasText(expression, "expression must have text");
this.expression = XPathExpressionFactory.createXPathExpression(expression);
}
public XPathExpressionValueHolder(XPathExpression expression) {
public XPathExpressionEvaluatingHeaderValueMessageProcessor(XPathExpression expression) {
Assert.notNull(expression, "expression must not be null");
this.expression = expression;
}
@@ -78,7 +78,11 @@ public class XPathHeaderEnricher extends HeaderEnricher {
this.overwrite = overwrite;
}
public Object evaluate(Message<?> message) {
public Boolean isOverwrite() {
return this.overwrite;
}
public Object processMessage(Message<?> message) {
Node node = converter.convertToNode(message.getPayload());
Object result = this.evaluationType.evaluateXPath(this.expression, node);
if (result instanceof String && ((String) result).length() == 0) {
@@ -86,10 +90,6 @@ public class XPathHeaderEnricher extends HeaderEnricher {
}
return result;
}
public Boolean isOverwrite() {
return this.overwrite;
}
}
}