package org.jboss.windup.rules.apps.xml; import org.jboss.windup.config.AbstractRuleProvider; import org.jboss.windup.config.GraphRewrite; import org.jboss.windup.config.RuleProvider; import org.jboss.windup.config.metadata.RuleProviderMetadata; import org.jboss.windup.config.ruleprovider.IteratingRuleProvider; import org.jboss.windup.graph.model.WindupVertexFrame; import org.jboss.windup.rules.apps.xml.model.XmlFileModel; import org.ocpsoft.rewrite.context.EvaluationContext; import org.w3c.dom.Document; import com.esotericsoftware.minlog.Log; /** * This provides a simplified way to extend {@link AbstractRuleProvider} for cases where the rule simply needs to * provide some query, and wants to execute a function over each valid xml row. * * @author <a href="mailto:bradsdavis@gmail.com">Brad Davis</a> */ public abstract class IteratingXmlRuleProvider<PAYLOADTYPE extends XmlFileModel> extends IteratingRuleProvider<PAYLOADTYPE> { public IteratingXmlRuleProvider() { super(); } public IteratingXmlRuleProvider(RuleProviderMetadata metadata) { super(metadata); } public IteratingXmlRuleProvider(Class<? extends RuleProvider> implementationType, String id) { super(implementationType, id); } /** * Perform this function for each {@link WindupVertexFrame} returned by the "when" clause. */ public void perform(GraphRewrite event, EvaluationContext context, PAYLOADTYPE payload) { Document doc = payload.asDocument(); if(doc == null) { Log.warn("Document is null."); return; } perform(event, context, payload, doc); } public abstract void perform(GraphRewrite event, EvaluationContext context, PAYLOADTYPE payload, Document doc); }