package org.jboss.windup.rules.apps.xml.condition.validators; import org.jboss.windup.config.GraphRewrite; import org.jboss.windup.rules.apps.xml.model.XmlFileModel; import org.ocpsoft.rewrite.context.EvaluationContext; import java.util.HashSet; import java.util.Set; /** * A validator used to disallow to query against the same xmlfile twice within one {@link XmlFile.evaluate()} call. * This may happen in the case of connecting multiple XmlFile conditions from which the first one * returns multiple places in an XmlFile. */ public class XmlCacheValidator implements XmlFileValidator { Set<String> xmlCache = new HashSet<>(); @Override public boolean isValid(GraphRewrite event,EvaluationContext context, XmlFileModel model) { if (xmlCache.contains(model.getFilePath())) { return false; } else { xmlCache.add(model.getFilePath()); } return true; } public void clear() { this.xmlCache.clear(); } }