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