/* * Copyright 2014 Red Hat, Inc. and/or its affiliates. * * Licensed under the Eclipse Public License version 1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package org.jboss.windup.config; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.jboss.windup.config.loader.RuleLoaderContext; import org.jboss.windup.config.metadata.MetadataBuilder; import org.jboss.windup.config.model.TestXmlMetaFacetModel; import org.jboss.windup.config.operation.Iteration; import org.jboss.windup.config.operation.iteration.AbstractIterationFilter; import org.jboss.windup.config.operation.iteration.AbstractIterationOperation; import org.jboss.windup.config.phase.DiscoveryPhase; import org.jboss.windup.config.query.Query; import org.junit.Assert; import org.ocpsoft.rewrite.config.Configuration; import org.ocpsoft.rewrite.config.ConfigurationBuilder; import org.ocpsoft.rewrite.context.EvaluationContext; /** * @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a> * */ public class TestXmlExampleRuleProvider1 extends AbstractRuleProvider { final List<TestXmlMetaFacetModel> typeSearchResults = new ArrayList<>(); final Set<String> xmlRootNames = new HashSet<>(); private final Set<String> excludedXmlRootNames = new HashSet<>(); public TestXmlExampleRuleProvider1() { super(MetadataBuilder.forProvider(TestXmlExampleRuleProvider1.class, "TestXmlExampleRuleProvider1") .setPhase(DiscoveryPhase.class)); } // @formatter:off @Override public Configuration getConfiguration(RuleLoaderContext ruleLoaderContext) { Configuration configuration = ConfigurationBuilder.begin() .addRule() .when(Query.fromType(TestXmlMetaFacetModel.class)) .perform(Iteration .over() .when(new AbstractIterationFilter<TestXmlMetaFacetModel>() { @Override public boolean evaluate(GraphRewrite event, EvaluationContext context, TestXmlMetaFacetModel payload) { String rootTagName = payload.getRootTagName(); boolean result = !"xmlTag3".equals(rootTagName); return result; } }) .perform(new AbstractIterationOperation<TestXmlMetaFacetModel>() { @Override public void perform(GraphRewrite event, EvaluationContext context, TestXmlMetaFacetModel xmlFacetModel) { typeSearchResults.add(xmlFacetModel); if (xmlRootNames.contains(xmlFacetModel.getRootTagName())) { Assert.fail("Tag found multiple times"); } xmlRootNames.add(xmlFacetModel.getRootTagName()); } }) .otherwise(new AbstractIterationOperation<TestXmlMetaFacetModel>() { @Override public void perform(GraphRewrite event, EvaluationContext context, TestXmlMetaFacetModel payload) { typeSearchResults.add(payload); if (excludedXmlRootNames.contains(payload.getRootTagName())) { Assert.fail("Tag found multiple times"); } excludedXmlRootNames.add(payload.getRootTagName()); } }) .endIteration() ); return configuration; } public List<TestXmlMetaFacetModel> getTypeSearchResults() { return typeSearchResults; } public Set<String> getXmlRootNames() { return xmlRootNames; } public Set<String> getExcludedXmlRootNames() { return excludedXmlRootNames; } }