in camel-upgrade-recipes/src/main/java/org/apache/camel/upgrade/camel40/xml/CircuitBreakerXmlDslRecipe.java [102:145]
public TreeVisitor<?, ExecutionContext> getVisitor() {
return new AbstractCamelXmlVisitor() {
@Override
public Xml.Tag doVisitTag(final Xml.Tag tag, final ExecutionContext ctx) {
Xml.Tag t = super.doVisitTag(tag, ctx);
if (RESILIENCE4J_MATCHER.matches(getCursor())) {
Map<String, String> values = ctx.pollMessage(RESILIENCE4J_XPATH);
if (values != null && !values.isEmpty()) {
//create list of values
List<Xml.Attribute> toAdd = values.entrySet().stream()
.map(e -> autoFormat(new Xml.Attribute(
Tree.randomId(), "", Markers.EMPTY,
new Xml.Ident(Tree.randomId(), "", Markers.EMPTY, e.getKey()),
"",
autoFormat(new Xml.Attribute.Value(
Tree.randomId(), "", Markers.EMPTY,
Xml.Attribute.Value.Quote.Double,
e.getValue()), ctx)),
ctx))
.collect(Collectors.toList());
return t.withAttributes(ListUtils.concatAll(t.getAttributes(), toAdd));
}
}
for (Map.Entry<String, XPathMatcher> entry : ATTRIBUTE_MATCHERS.entrySet()) {
if (entry.getValue().matches(getCursor())) {
if (t.getValue().isPresent() && !t.getValue().get().isEmpty()) {
Map<String, String> values = ctx.getMessage(RESILIENCE4J_XPATH, new LinkedHashMap<>());
values.put(entry.getKey(), t.getValue().get());
ctx.putMessage(RESILIENCE4J_XPATH, values);
}
//skip tag
return null;
}
}
return t;
}
};
}