diff --git a/config/api/src/main/java/org/jboss/windup/config/condition/GraphCondition.java b/config/api/src/main/java/org/jboss/windup/config/condition/GraphCondition.java index 479f81795a..9845062c34 100644 --- a/config/api/src/main/java/org/jboss/windup/config/condition/GraphCondition.java +++ b/config/api/src/main/java/org/jboss/windup/config/condition/GraphCondition.java @@ -16,6 +16,7 @@ package org.jboss.windup.config.condition; import org.jboss.windup.config.GraphRewrite; +import org.jboss.windup.config.operation.Iteration; import org.ocpsoft.rewrite.config.Condition; import org.ocpsoft.rewrite.config.DefaultConditionBuilder; import org.ocpsoft.rewrite.context.EvaluationContext; @@ -30,7 +31,7 @@ public abstract class GraphCondition extends DefaultConditionBuilder { private String inputVariablesName; - private String outputVariablesName; + private String outputVariablesName = Iteration.DEFAULT_VARIABLE_LIST_STRING; public abstract boolean evaluate(GraphRewrite event, EvaluationContext context); diff --git a/rules-java-project/src/main/java/org/jboss/windup/project/condition/Project.java b/rules-java-project/src/main/java/org/jboss/windup/project/condition/Project.java index 118135ee90..752d679515 100644 --- a/rules-java-project/src/main/java/org/jboss/windup/project/condition/Project.java +++ b/rules-java-project/src/main/java/org/jboss/windup/project/condition/Project.java @@ -13,6 +13,7 @@ import org.jboss.windup.graph.model.WindupVertexFrame; import org.jboss.windup.graph.service.GraphService; import org.jboss.windup.rules.apps.java.model.project.MavenProjectModel; +import org.ocpsoft.rewrite.config.ConditionBuilder; import org.ocpsoft.rewrite.context.EvaluationContext; public class Project extends GraphCondition @@ -26,6 +27,15 @@ public static Project dependsOnArtifact(Artifact artifact) project.artifact = artifact; return project; } + + public static ProjectFrom from(String from) + { + return new ProjectFrom(from); + } + + public void setArtifact(Artifact artifact) { + this.artifact=artifact; + } public Artifact getArtifact() { @@ -86,9 +96,10 @@ public boolean evaluate(GraphRewrite event, EvaluationContext context) - public void as(String as) + public ConditionBuilder as(String as) { super.setOutputVariablesName(as); + return this; } public String toString() diff --git a/rules-java-project/src/main/java/org/jboss/windup/project/condition/ProjectFrom.java b/rules-java-project/src/main/java/org/jboss/windup/project/condition/ProjectFrom.java new file mode 100644 index 0000000000..e35f028bf4 --- /dev/null +++ b/rules-java-project/src/main/java/org/jboss/windup/project/condition/ProjectFrom.java @@ -0,0 +1,20 @@ +package org.jboss.windup.project.condition; + + +public class ProjectFrom +{ + private String inputVarName; + + public ProjectFrom(String from) + { + this.inputVarName = from; + } + + public Project dependsOnArtifact(Artifact artifact) + { + Project project = new Project(); + project.setArtifact(artifact); + project.setInputVariablesName(inputVarName); + return project; + } +} diff --git a/rules-java-project/src/test/java/org/jboss/windup/project/condition/test/ProjectTest.java b/rules-java-project/src/test/java/org/jboss/windup/project/condition/test/ProjectTest.java new file mode 100644 index 0000000000..60f9cc84c9 --- /dev/null +++ b/rules-java-project/src/test/java/org/jboss/windup/project/condition/test/ProjectTest.java @@ -0,0 +1,20 @@ +package org.jboss.windup.project.condition.test; + +import org.jboss.windup.project.condition.Artifact; +import org.jboss.windup.project.condition.Project; +import org.junit.Assert; +import org.junit.Test; + +public class ProjectTest +{ + + /** + * Testing that .from() and .as() sets the right variable + */ + @Test + public void xmlFileInputOutputVariableTest() { + Project as = (Project)Project.from("input").dependsOnArtifact(Artifact.withArtifactId("abc")).as("output"); + Assert.assertEquals("input", as.getInputVariablesName()); + Assert.assertEquals("output", as.getOutputVariablesName()); + } +} diff --git a/rules-java/src/main/java/org/jboss/windup/rules/apps/java/condition/JavaClass.java b/rules-java/src/main/java/org/jboss/windup/rules/apps/java/condition/JavaClass.java index 134f898836..1647594311 100644 --- a/rules-java/src/main/java/org/jboss/windup/rules/apps/java/condition/JavaClass.java +++ b/rules-java/src/main/java/org/jboss/windup/rules/apps/java/condition/JavaClass.java @@ -57,7 +57,6 @@ public class JavaClass extends ParameterizedGraphCondition implements JavaClassB private final String uniqueID; // maintains a unique identifier for each private List locations = Collections.emptyList(); - private String variable = Iteration.DEFAULT_VARIABLE_LIST_STRING; private RegexParameterizedPatternParser referencePattern; private RegexParameterizedPatternParser typeFilterPattern; @@ -111,7 +110,7 @@ public JavaClassBuilderAt at(TypeReferenceLocation... locations) public ConditionBuilder as(String variable) { Assert.notNull(variable, "Variable name must not be null."); - this.variable = variable; + this.setOutputVariablesName(variable); return this; } @@ -326,7 +325,7 @@ public void setParameterStore(ParameterStore store) @Override protected String getVarname() { - return variable; + return getOutputVariablesName(); } public String toString() @@ -345,7 +344,7 @@ public String toString() { builder.append(".at(" + locations + ")"); } - builder.append(".as(" + variable + ")"); + builder.append(".as(" + getVarname() + ")"); return builder.toString(); } } diff --git a/rules-java/src/test/java/org/jboss/windup/rules/java/JavaClassTest.java b/rules-java/src/test/java/org/jboss/windup/rules/java/JavaClassTest.java index de4b4c4dc5..a02770a966 100644 --- a/rules-java/src/test/java/org/jboss/windup/rules/java/JavaClassTest.java +++ b/rules-java/src/test/java/org/jboss/windup/rules/java/JavaClassTest.java @@ -41,6 +41,7 @@ import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; +import org.ocpsoft.rewrite.config.ConditionBuilder; import org.ocpsoft.rewrite.config.Configuration; import org.ocpsoft.rewrite.config.ConfigurationBuilder; import org.ocpsoft.rewrite.context.EvaluationContext; @@ -135,6 +136,17 @@ public void testJavaClassCondition() throws IOException, InstantiationException, Assert.assertEquals(2, provider.getSecondRuleMatchCount()); } } + + /** + * Testing that .from() and .as() sets the right variable + */ + @Test + public void testJavaClassInputOutputVariables() + { + JavaClass as = (JavaClass) JavaClass.from("input").references("abc").as("output"); + Assert.assertEquals("input", as.getInputVariablesName()); + Assert.assertEquals("output", as.getOutputVariablesName()); + } private Path getDefaultPath() { diff --git a/rules-xml/src/main/java/org/jboss/windup/rules/apps/xml/condition/XmlFile.java b/rules-xml/src/main/java/org/jboss/windup/rules/apps/xml/condition/XmlFile.java index 1e49863665..b8484dd889 100644 --- a/rules-xml/src/main/java/org/jboss/windup/rules/apps/xml/condition/XmlFile.java +++ b/rules-xml/src/main/java/org/jboss/windup/rules/apps/xml/condition/XmlFile.java @@ -54,7 +54,6 @@ public class XmlFile extends GraphCondition private static XPathFactory factory = XPathFactory.newInstance(); private XPath xpathEngine = factory.newXPath(); - private String variable = Iteration.DEFAULT_VARIABLE_LIST_STRING; private String xpathString; private XPathExpression compiledXPath; private Map namespaces = new HashMap<>(); @@ -94,7 +93,7 @@ public static XmlFile withDTDPublicId(String publicIdRegex) public ConditionBuilder as(String variable) { Assert.notNull(variable, "Variable name must not be null."); - this.variable = variable; + this.setOutputVariablesName(variable); return this; } @@ -255,7 +254,7 @@ else if (iterated instanceof XmlFileModel) } } } - Variables.instance(event).setVariable(variable, resultLocations); + Variables.instance(event).setVariable(getOutputVariablesName(), resultLocations); ExecutionStatistics.get().end("XmlFile.evaluate"); return !resultLocations.isEmpty(); } @@ -314,7 +313,7 @@ public String toString() { builder.append(".withDTDPublicId(" + publicId + ")"); } - builder.append(".as(" + variable + ")"); + builder.append(".as(" + getInputVariablesName() + ")"); return builder.toString(); } } diff --git a/rules-xml/src/test/java/org/jboss/windup/rules/xml/XmlFileTest.java b/rules-xml/src/test/java/org/jboss/windup/rules/xml/XmlFileTest.java new file mode 100644 index 0000000000..47034d1a3a --- /dev/null +++ b/rules-xml/src/test/java/org/jboss/windup/rules/xml/XmlFileTest.java @@ -0,0 +1,19 @@ +package org.jboss.windup.rules.xml; + +import org.jboss.windup.rules.apps.xml.condition.XmlFile; +import org.junit.Assert; +import org.junit.Test; + +public class XmlFileTest +{ + + /** + * Testing that .from() and .as() sets the right variable + */ + @Test + public void xmlFileInputOutputVariableTest() { + XmlFile as = (XmlFile)XmlFile.from("input").matchesXpath("abc").as("output"); + Assert.assertEquals("input", as.getInputVariablesName()); + Assert.assertEquals("output", as.getOutputVariablesName()); + } +}