public TreeVisitor getVisitor()

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;
            }
        };
    }