diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/ArchiveExtraction.java b/config/api/src/main/java/org/jboss/windup/config/phase/ArchiveExtraction.java
index cfffacaa34..aecb8f206e 100644
--- a/config/api/src/main/java/org/jboss/windup/config/phase/ArchiveExtraction.java
+++ b/config/api/src/main/java/org/jboss/windup/config/phase/ArchiveExtraction.java
@@ -5,7 +5,12 @@
import org.jboss.windup.config.WindupRuleProvider;
/**
+ * Previous: {@link Discovery}
+ * Next: {@link ArchiveMetadataExtraction}
+ *
+ *
* Unzipping of any input files (such as an incoming ear file) occur during this phase. + *
* * @author jsightler * diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/ArchiveMetadataExtraction.java b/config/api/src/main/java/org/jboss/windup/config/phase/ArchiveMetadataExtraction.java index b4c5ddc2f3..6198434f76 100644 --- a/config/api/src/main/java/org/jboss/windup/config/phase/ArchiveMetadataExtraction.java +++ b/config/api/src/main/java/org/jboss/windup/config/phase/ArchiveMetadataExtraction.java @@ -5,8 +5,13 @@ import org.jboss.windup.config.WindupRuleProvider; /** + * Previous: {@link ArchiveExtraction}* Occurs immediately after archive extraction. This handles things like calculating checksums for archives or determining the specific type of * archive (ear vs other types of archives). + *
* */ public class ArchiveMetadataExtraction extends RulePhase diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/ClassifyFileTypes.java b/config/api/src/main/java/org/jboss/windup/config/phase/ClassifyFileTypes.java index 921b96f8cc..6f4f738aea 100644 --- a/config/api/src/main/java/org/jboss/windup/config/phase/ClassifyFileTypes.java +++ b/config/api/src/main/java/org/jboss/windup/config/phase/ClassifyFileTypes.java @@ -5,8 +5,14 @@ import org.jboss.windup.config.WindupRuleProvider; /** + * Previous: {@link ArchiveMetadataExtraction}* This scans files and attaches metadata to them. For example, this may find all of the Java files in an application and mark them as Java, or it may * find all of the bash scripts in an input and identify them appropriately. + *
+ * . * */ public class ClassifyFileTypes extends RulePhase diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/DecompilationPhase.java b/config/api/src/main/java/org/jboss/windup/config/phase/Decompilation.java similarity index 62% rename from config/api/src/main/java/org/jboss/windup/config/phase/DecompilationPhase.java rename to config/api/src/main/java/org/jboss/windup/config/phase/Decompilation.java index 0ee8c4f658..5a1bdac954 100644 --- a/config/api/src/main/java/org/jboss/windup/config/phase/DecompilationPhase.java +++ b/config/api/src/main/java/org/jboss/windup/config/phase/Decompilation.java @@ -5,17 +5,22 @@ import org.jboss.windup.config.WindupRuleProvider; /** + * Previous: {@link ClassifyFileTypes}* Any required decompilation of an input application would occur during this phase. + *
* * @author jsightler * */ -public class DecompilationPhase extends RulePhase +public class Decompilation extends RulePhase { @Override public List+ * Discovering of the project structure of the input application will occur during this phase. This will discover which files are in which project + * (including determining subprojects) and analyze as much metadata as possible for supported project types (for example, Maven projects). + *
* * @author jsightler * @@ -16,6 +22,6 @@ public class DiscoverProjectStructure extends RulePhase @Override public List* This discovers files from the input (for example, find all of the files in the input directory). + *
* * @author jsightler * diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/Finalize.java b/config/api/src/main/java/org/jboss/windup/config/phase/Finalize.java index ff4a3a3aa8..9a7439ed5b 100644 --- a/config/api/src/main/java/org/jboss/windup/config/phase/Finalize.java +++ b/config/api/src/main/java/org/jboss/windup/config/phase/Finalize.java @@ -5,8 +5,13 @@ import org.jboss.windup.config.WindupRuleProvider; /** + * Previous: {@link PostReportRendering}* This occurs at the end of execution. {@link Rule}s in this phase are responsible for any cleanup of resources that may have been opened during * {@link Rule}s from earlier {@link WindupRuleProvider}s. + *
* * @author jsightler * diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/InitialAnalysis.java b/config/api/src/main/java/org/jboss/windup/config/phase/InitialAnalysis.java index 419fff35f9..2239581605 100644 --- a/config/api/src/main/java/org/jboss/windup/config/phase/InitialAnalysis.java +++ b/config/api/src/main/java/org/jboss/windup/config/phase/InitialAnalysis.java @@ -5,9 +5,14 @@ import org.jboss.windup.config.WindupRuleProvider; /** + * Previous: {@link DiscoverProjectStructure}* This phase occurs after the application has been unzipped, files have been discovered (including basic filetype information), and the project * structure has been ascertained. {@link Rule}s from this phase will perform tasks such as the analysis of source code for placement within the graph * (for use by later {@link Rule}s). + *
* * @author jsightler * diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/Initialization.java b/config/api/src/main/java/org/jboss/windup/config/phase/Initialization.java index 698273b80e..38aeba19cb 100644 --- a/config/api/src/main/java/org/jboss/windup/config/phase/Initialization.java +++ b/config/api/src/main/java/org/jboss/windup/config/phase/Initialization.java @@ -5,8 +5,13 @@ import org.jboss.windup.config.WindupRuleProvider; /** + * Previous: {@link ArchiveExtraction}* This is the first phase of Windup Execution. Initialization related tasks (such as copying configuration data to the graph) should occur during * this phase. + *
* * @author jsightler * diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/MigrationRules.java b/config/api/src/main/java/org/jboss/windup/config/phase/MigrationRules.java index 9ed64473c7..20789c8f8f 100644 --- a/config/api/src/main/java/org/jboss/windup/config/phase/MigrationRules.java +++ b/config/api/src/main/java/org/jboss/windup/config/phase/MigrationRules.java @@ -5,8 +5,13 @@ import org.jboss.windup.config.WindupRuleProvider; /** + * Previous: {@link InitialAnalysis}* Most {@link Rule}s will go in this {@link RulePhase}. These include {@link Rule}s that detect code in the source application (or server) that will * need to be changed and produce metadata to be reported on regarding these changes. + *
* * @author jsightler * diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/PostFinalize.java b/config/api/src/main/java/org/jboss/windup/config/phase/PostFinalize.java index d99d7f88d0..b6d65e4757 100644 --- a/config/api/src/main/java/org/jboss/windup/config/phase/PostFinalize.java +++ b/config/api/src/main/java/org/jboss/windup/config/phase/PostFinalize.java @@ -5,6 +5,9 @@ import org.jboss.windup.config.WindupRuleProvider; /** + * Previous: {@link Finalize} + * + ** This occurs immediately after finalize. This is an ideal place to put {@link Rule}s that would like to be the absolute last things to fire. * Examples: * @@ -12,6 +15,7 @@ *
+ * This occurs immediately after {@link MigrationRules}. This can be used in cases where some rule wants to execute immediately after all other + * migration rules. The primary use case at the moment involves unit tests. + *
* * @author jsightler * diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/PostReportGeneration.java b/config/api/src/main/java/org/jboss/windup/config/phase/PostReportGeneration.java index a3bd15c26b..cb78b036d2 100644 --- a/config/api/src/main/java/org/jboss/windup/config/phase/PostReportGeneration.java +++ b/config/api/src/main/java/org/jboss/windup/config/phase/PostReportGeneration.java @@ -5,8 +5,13 @@ import org.jboss.windup.config.WindupRuleProvider; /** + * Previous: {@link ReportGeneration}* This occurs immediately after the main tasks of report generation. This can be used to generate reports that will need data from all of the other * reports that have been previously generated. + *
* * @author jsightler * diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/PostReportRendering.java b/config/api/src/main/java/org/jboss/windup/config/phase/PostReportRendering.java index 6644feb01d..aa5cd3683e 100644 --- a/config/api/src/main/java/org/jboss/windup/config/phase/PostReportRendering.java +++ b/config/api/src/main/java/org/jboss/windup/config/phase/PostReportRendering.java @@ -5,8 +5,13 @@ import org.jboss.windup.config.WindupRuleProvider; /** + * Previous: {@link ReportRendering}* This occurs immediately after reports have been rendered. It can be used to render any reports that need to execute last. One possible use is to * render all of the contents of the graph itself. + *
* * @author jsightler * diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/PreReportGeneration.java b/config/api/src/main/java/org/jboss/windup/config/phase/PreReportGeneration.java index 54ac709acf..7d22132b22 100644 --- a/config/api/src/main/java/org/jboss/windup/config/phase/PreReportGeneration.java +++ b/config/api/src/main/java/org/jboss/windup/config/phase/PreReportGeneration.java @@ -5,8 +5,13 @@ import org.jboss.windup.config.WindupRuleProvider; /** + * Previous: {@link PostMigrationRules}* This occurs immediately before {@link ReportGeneration} and can be used for initialization related tasks that will be needed by all reports during * {@link ReportGeneration}. + *
* * @author jsightler * @@ -17,6 +22,6 @@ public class PreReportGeneration extends RulePhase @Override public List* During this phase, report information will be gathered and stored in the graph. + *
* * @author jsightler * diff --git a/config/api/src/main/java/org/jboss/windup/config/phase/ReportRendering.java b/config/api/src/main/java/org/jboss/windup/config/phase/ReportRendering.java index cc97d5ae1f..2303d65326 100644 --- a/config/api/src/main/java/org/jboss/windup/config/phase/ReportRendering.java +++ b/config/api/src/main/java/org/jboss/windup/config/phase/ReportRendering.java @@ -5,7 +5,12 @@ import org.jboss.windup.config.WindupRuleProvider; /** + * Previous: {@link PostReportGeneration}* Reports will be rendered to the disk during this phase. + *
* * @author jsightler * diff --git a/reporting/impl/src/main/java/org/jboss/windup/reporting/freemarker/IsRulePhaseMethod.java b/reporting/impl/src/main/java/org/jboss/windup/reporting/freemarker/IsRulePhaseMethod.java new file mode 100644 index 0000000000..b00999412b --- /dev/null +++ b/reporting/impl/src/main/java/org/jboss/windup/reporting/freemarker/IsRulePhaseMethod.java @@ -0,0 +1,51 @@ +package org.jboss.windup.reporting.freemarker; + +import java.util.List; + +import org.jboss.windup.config.GraphRewrite; +import org.jboss.windup.config.phase.RulePhase; + +import freemarker.ext.beans.StringModel; +import freemarker.template.TemplateModelException; + +/** + * Returns true if the passed in object is a and instanceof {@link RulePhase}.