/* * 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.LinkedList; import java.util.List; 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.GraphOperation; import org.jboss.windup.config.operation.Iteration; import org.jboss.windup.config.operation.graph.TypeOperation; import org.jboss.windup.config.phase.DiscoveryPhase; import org.jboss.windup.config.query.Query; import org.jboss.windup.rules.apps.java.model.project.MavenProjectModel; 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 TestMavenExampleRuleProvider extends AbstractRuleProvider { private final List<MavenProjectModel> results = new LinkedList<>(); public TestMavenExampleRuleProvider() { super(MetadataBuilder.forProvider(TestMavenExampleRuleProvider.class, "TestMavenExampleRuleProvider") .setPhase(DiscoveryPhase.class)); } // @formatter:off @Override public Configuration getConfiguration(RuleLoaderContext ruleLoaderContext) { Configuration configuration = ConfigurationBuilder.begin() // Add the MavenFacetModel type to all XmlMetaFacetModel vertices. .addRule() .when( Query.fromType(TestXmlMetaFacetModel.class) ) .perform( Iteration.over(TestXmlMetaFacetModel.class) .perform( TypeOperation.addType(Iteration.DEFAULT_SINGLE_VARIABLE_STRING, MavenProjectModel.class) ) .endIteration() ) // Add all MavenFacetModel vertices to this.results. .addRule() .when( Query.fromType(MavenProjectModel.class).as("mavenModels") ) .perform( Iteration.over(MavenProjectModel.class, "mavenModels") .perform( new GraphOperation() { @Override public void perform(GraphRewrite event, EvaluationContext context) { Variables varStack = Variables.instance(event); MavenProjectModel mavenFacetModel = Iteration.getCurrentPayload(varStack, MavenProjectModel.class, Iteration.singleVariableIterationName("mavenModels")); results.add(mavenFacetModel); } }) .endIteration() ); return configuration; } // @formatter:on public List<MavenProjectModel> getSearchResults() { return results; } }