All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kohsuke.maven.rewrite.edit.ReplaceElementText Maven / Gradle / Ivy

package org.kohsuke.maven.rewrite.edit;

import com.google.common.base.Predicate;
import org.kohsuke.maven.rewrite.Mark;
import org.kohsuke.maven.rewrite.XmlPatcher;
import org.kohsuke.maven.rewrite.XmlPath;
import org.kohsuke.maven.rewrite.XmlVisitor;

/**
 * Replaces an element text, such <foo>abc</foo> to <foo>def</foo>
 *
 * @author Kohsuke Kawaguchi
 */
public abstract class ReplaceElementText extends XmlVisitor {
    private final Predicate matcher;
    private Mark m;

    public ReplaceElementText(Predicate matcher) {
        this.matcher = matcher;
    }

    @Override
    public void startDocument(XmlPatcher scanner) {
        super.startDocument(scanner);
        m = getPatcher().mark();
    }

    @Override
    public void startElement() {
        if (matcher.apply(getPath()))
            m.set();
    }

    @Override
    public void endElement() {
        if (matcher.apply(getPath())) {
            Mark r = m.toCurrent();
            String current = r.verbatim();
            String updated = replace(current);
            r.replace(updated);
            r.clear();
        }
    }

    public abstract String replace(String current);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy