This is an automated email from the ASF dual-hosted git repository. claude pushed a commit to branch feature/restructure in repository https://gitbox.apache.org/repos/asf/creadur-rat.git
commit 9e445c9c559468b5bcdb349dbfe39fd563d7179e Author: Claude Warren <[email protected]> AuthorDate: Thu Dec 25 10:44:40 2025 +0000 Maven source generated --- .../main/java/org/apache/rat/cli/CLIOption.java | 5 +- apache-rat-core-tests/pom.xml | 116 --------------------- .../main/java/org/apache/rat/commandline/Arg.java | 8 +- .../org/apache/rat/commandline/StyleSheets.java | 6 +- .../apache/rat/documentation/velocity/RatTool.java | 3 +- .../java/org/apache/rat/ui/AbstractOption.java | 14 +-- .../rat/ui/{SetArgs.java => ArgumentTracker.java} | 33 ++++-- .../main/java/org/apache/rat/ui/OptionFactory.java | 4 +- apache-rat-plugin-parent/impl/pom.xml | 22 +++- .../apache/rat/{mp => maven}/AbstractRatMojo.java | 11 +- .../rat/{mp => maven}/RatCheckException.java | 2 +- .../org/apache/rat/{mp => maven}/RatCheckMojo.java | 36 +++---- .../apache/rat/{mp => maven}/RatReportMojo.java | 2 +- .../org/apache/rat/{mp => maven}/package-info.java | 2 +- .../java/org/apache/rat/mp/OptionMojoTest.java | 1 + .../java/org/apache/rat/mp/RatCheckMojoTest.java | 4 + .../java/org/apache/rat/maven/TestGenerator.java | 5 +- .../org/apache/rat/maven/AbstractMaven.vm | 30 ++---- .../org/apache/rat/maven/AbstractMavenFunc.vm | 10 +- .../resources/org/apache/rat/maven/TestJava.vm | 4 + 20 files changed, 111 insertions(+), 207 deletions(-) diff --git a/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIOption.java b/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIOption.java index f53b56a9..b59f1dbf 100644 --- a/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIOption.java +++ b/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIOption.java @@ -22,6 +22,7 @@ import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.lang3.StringUtils; import org.apache.rat.ui.AbstractOption; +import org.apache.rat.ui.ArgumentTracker; /** * The CLI option definition. @@ -38,7 +39,7 @@ public class CLIOption extends AbstractOption<CLIOption> { } public CLIOption(final Option option) { - super(option, extractBaseName(option)); + super(option, ArgumentTracker.extractKey(option)); } @Override @@ -57,7 +58,7 @@ public class CLIOption extends AbstractOption<CLIOption> { @Override protected String cleanupName(final Option option) { - return extractBaseName(option); + return ArgumentTracker.extractKey(option); } @Override diff --git a/apache-rat-core-tests/pom.xml b/apache-rat-core-tests/pom.xml index 861db32d..c4b31557 100644 --- a/apache-rat-core-tests/pom.xml +++ b/apache-rat-core-tests/pom.xml @@ -52,31 +52,9 @@ </plugins> </pluginManagement> <plugins> -<!-- <plugin>--> -<!-- <artifactId>maven-clean-plugin</artifactId>--> -<!-- <configuration>--> -<!-- <filesets>--> -<!-- <fileset>--> -<!-- <directory>src/main/java</directory>--> -<!-- <includes>--> -<!-- <include>**</include>--> -<!-- </includes>--> -<!-- </fileset>--> -<!-- <fileset>--> -<!-- <directory>src/main/resources</directory>--> -<!-- <includes>--> -<!-- <include>**</include>--> -<!-- </includes>--> -<!-- </fileset>--> -<!-- </filesets>--> -<!-- </configuration>--> -<!-- </plugin>--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> - <configuration> -<!-- <finalName>apache-rat-core-${project.parent.version}-test</finalName>--> - </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> @@ -85,24 +63,6 @@ <skip>true</skip> </configuration> </plugin> -<!-- <plugin>--> -<!-- <groupId>org.apache.maven.plugins</groupId>--> -<!-- <artifactId>maven-source-plugin</artifactId>--> -<!-- <executions>--> -<!-- <execution>--> -<!-- <id>attach-sources</id>--> -<!-- <phase>compile</phase>--> -<!-- <goals>--> -<!-- <goal>jar</goal>--> -<!-- </goals>--> -<!-- <configuration>--> -<!-- <archive>--> -<!-- <addMavenDescriptor>false</addMavenDescriptor>--> -<!-- </archive>--> -<!-- </configuration>--> -<!-- </execution>--> -<!-- </executions>--> -<!-- </plugin>--> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>animal-sniffer-maven-plugin</artifactId> @@ -124,62 +84,6 @@ <skip>true</skip> </configuration> </plugin> -<!-- <plugin>--> -<!-- <artifactId>maven-resources-plugin</artifactId>--> -<!-- <executions>--> -<!-- <execution>--> -<!-- <id>copy core test code</id>--> -<!-- <phase>generate-resources</phase>--> -<!-- <goals>--> -<!-- <goal>copy-resources</goal>--> -<!-- </goals>--> -<!-- <configuration>--> -<!-- <outputDirectory>src/main</outputDirectory>--> -<!-- <addDefaultExcludes>false</addDefaultExcludes>--> -<!-- <overwrite>true</overwrite>--> -<!-- <resources>--> -<!-- <resource>--> -<!-- <directory>../apache-rat-core/src/test</directory>--> -<!-- </resource>--> -<!-- </resources>--> -<!-- </configuration>--> -<!-- </execution>--> -<!-- <execution>--> -<!-- <id>copy filtered test resources</id>--> -<!-- <phase>generate-resources</phase>--> -<!-- <goals>--> -<!-- <goal>copy-resources</goal>--> -<!-- </goals>--> -<!-- <configuration>--> -<!-- <outputDirectory>src/main/filtered-resources</outputDirectory>--> -<!-- <addDefaultExcludes>false</addDefaultExcludes>--> -<!-- <overwrite>true</overwrite>--> -<!-- <resources>--> -<!-- <resource>--> -<!-- <directory>../apache-rat-core/src/test/filtered-resources</directory>--> -<!-- </resource>--> -<!-- </resources>--> -<!-- </configuration>--> -<!-- </execution>--> -<!-- <execution>--> -<!-- <id>copy source code</id>--> -<!-- <phase>generate-sources</phase>--> -<!-- <goals>--> -<!-- <goal>copy-resources</goal>--> -<!-- </goals>--> -<!-- <configuration>--> -<!-- <outputDirectory>src/main/java</outputDirectory>--> -<!-- <addDefaultExcludes>false</addDefaultExcludes>--> -<!-- <overwrite>true</overwrite>--> -<!-- <resources>--> -<!-- <resource>--> -<!-- <directory>../apache-rat-core/src/test/java</directory>--> -<!-- </resource>--> -<!-- </resources>--> -<!-- </configuration>--> -<!-- </execution>--> -<!-- </executions>--> -<!-- </plugin>--> </plugins> </build> <dependencies> @@ -194,22 +98,6 @@ <version>${project.parent.version}</version> <scope>provided</scope> </dependency> -<!-- <dependency>--> -<!-- <groupId>org.apache.commons</groupId>--> -<!-- <artifactId>commons-collections4</artifactId>--> -<!-- </dependency>--> -<!-- <dependency>--> -<!-- <groupId>org.apache.commons</groupId>--> -<!-- <artifactId>commons-lang3</artifactId>--> -<!-- </dependency>--> -<!-- <dependency>--> -<!-- <groupId>commons-io</groupId>--> -<!-- <artifactId>commons-io</artifactId>--> -<!-- </dependency>--> -<!-- <dependency>--> -<!-- <groupId>org.apache.commons</groupId>--> -<!-- <artifactId>commons-text</artifactId>--> -<!-- </dependency>--> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> @@ -220,10 +108,6 @@ <artifactId>junit-jupiter-params</artifactId> <scope>compile</scope> </dependency> -<!-- <dependency>--> -<!-- <groupId>commons-cli</groupId>--> -<!-- <artifactId>commons-cli</artifactId>--> -<!-- </dependency>--> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> diff --git a/apache-rat-core/src/main/java/org/apache/rat/commandline/Arg.java b/apache-rat-core/src/main/java/org/apache/rat/commandline/Arg.java index 81b57dcc..2c536a18 100644 --- a/apache-rat-core/src/main/java/org/apache/rat/commandline/Arg.java +++ b/apache-rat-core/src/main/java/org/apache/rat/commandline/Arg.java @@ -558,15 +558,19 @@ public enum Arg { /** * Returns the first non-deprecated option from the group. * - * @return the first non-deprecated option or {@code null} if no non-deprecated option is available. + * @return the first non-deprecated option or, if no non-deprecated option is available, the first option. */ public Option option() { + Option first = null; for (Option result : group.getOptions()) { + if (first == null) { + first = result; + } if (!result.isDeprecated()) { return result; } } - return null; + return first; } /** diff --git a/apache-rat-core/src/main/java/org/apache/rat/commandline/StyleSheets.java b/apache-rat-core/src/main/java/org/apache/rat/commandline/StyleSheets.java index 8675f06e..0a2983f1 100644 --- a/apache-rat-core/src/main/java/org/apache/rat/commandline/StyleSheets.java +++ b/apache-rat-core/src/main/java/org/apache/rat/commandline/StyleSheets.java @@ -48,7 +48,11 @@ public enum StyleSheets { /** * The plain style sheet. The current default. */ - XML("xml", "Produces output in pretty-printed XML."); + XML("xml", "Produces output in pretty-printed XML."), + /** + * Official HTML5 stylesheet. + */ + XHTML5("xhtml5", "Produces a HTML5 report"); /** * The name of the style sheet. Must map to bundled resource xslt file */ diff --git a/apache-rat-core/src/main/java/org/apache/rat/documentation/velocity/RatTool.java b/apache-rat-core/src/main/java/org/apache/rat/documentation/velocity/RatTool.java index f743e8e3..a48f2a11 100644 --- a/apache-rat-core/src/main/java/org/apache/rat/documentation/velocity/RatTool.java +++ b/apache-rat-core/src/main/java/org/apache/rat/documentation/velocity/RatTool.java @@ -46,6 +46,7 @@ import org.apache.rat.help.AbstractHelp; import org.apache.rat.license.ILicense; import org.apache.rat.license.LicenseSetFactory; import org.apache.rat.ui.AbstractOption; +import org.apache.rat.ui.ArgumentTracker; import org.apache.rat.ui.OptionFactory; import org.apache.rat.ui.UI; import org.apache.rat.ui.spi.UIProvider; @@ -107,7 +108,7 @@ public class RatTool { */ public List<Option> options() { List<Option> lst = new ArrayList<>(OptionCollection.buildOptions(new Options()).getOptions()); - lst.sort(Comparator.comparing(AbstractOption::extractBaseName)); + lst.sort(Comparator.comparing(ArgumentTracker::extractKey)); return lst; } diff --git a/apache-rat-core/src/main/java/org/apache/rat/ui/AbstractOption.java b/apache-rat-core/src/main/java/org/apache/rat/ui/AbstractOption.java index f714f866..8a5bc9c2 100644 --- a/apache-rat-core/src/main/java/org/apache/rat/ui/AbstractOption.java +++ b/apache-rat-core/src/main/java/org/apache/rat/ui/AbstractOption.java @@ -48,16 +48,6 @@ public abstract class AbstractOption<T extends AbstractOption<T>> { /** The argument type for this option */ protected final OptionCollection.ArgumentType argumentType; - /** - * Extract the core name from the option. This is the {@link Option#getLongOpt()} if defined, otherwise - * the {@link Option#getOpt()}. - * @param option the commons cli option. - * @return the common cli based name. - */ - public static String extractBaseName(final Option option) { - return StringUtils.defaultIfBlank(option.getLongOpt(), option.getOpt()); - } - /** * Constructor. * @@ -266,7 +256,7 @@ public abstract class AbstractOption<T extends AbstractOption<T>> { * @param option The CLI option */ BaseOption(final org.apache.commons.cli.Option option) { - super(option, AbstractOption.extractBaseName(option)); + super(option, ArgumentTracker.extractKey(option)); } @Override @@ -276,7 +266,7 @@ public abstract class AbstractOption<T extends AbstractOption<T>> { @Override protected String cleanupName(final org.apache.commons.cli.Option option) { - return AbstractOption.extractBaseName(option); + return ArgumentTracker.extractKey(option); } @Override diff --git a/apache-rat-core/src/main/java/org/apache/rat/ui/SetArgs.java b/apache-rat-core/src/main/java/org/apache/rat/ui/ArgumentTracker.java similarity index 85% rename from apache-rat-core/src/main/java/org/apache/rat/ui/SetArgs.java rename to apache-rat-core/src/main/java/org/apache/rat/ui/ArgumentTracker.java index d4d09cab..97a193d2 100644 --- a/apache-rat-core/src/main/java/org/apache/rat/ui/SetArgs.java +++ b/apache-rat-core/src/main/java/org/apache/rat/ui/ArgumentTracker.java @@ -34,7 +34,11 @@ import org.apache.rat.commandline.Arg; import org.apache.rat.utils.DefaultLog; import org.apache.rat.utils.Log; -public final class SetArgs { +/** + * Tracks arguments that are set and their values for conversion from native UI to + * Apache commons command line values. Native values + */ +public final class ArgumentTracker { /** * List of deprecated arguments and their deprecation notice. @@ -48,18 +52,27 @@ public final class SetArgs { /** * The arguments set by the UI for the current report execution. - * @param renameMap the map of renamed options. * @param uiOptionList the list of AbstractOption implementations for this UI. */ - public SetArgs(final Map<String, String> renameMap, final List<? extends AbstractOption<?>> uiOptionList) { - for (AbstractOption<?> option : uiOptionList) { - if (option.isDeprecated()) { - deprecatedArgs.put(option.getName(), - String.format("Use of deprecated option '%s'. %s", option.getName(), option.getDeprecated())); + public ArgumentTracker(final List<? extends AbstractOption<?>> uiOptionList) { + for (AbstractOption<?> abstractOption : uiOptionList) { + if (abstractOption.isDeprecated()) { + deprecatedArgs.put(abstractOption.getName(), + String.format("Use of deprecated option '%s'. %s", abstractOption.getName(), abstractOption.getDeprecated())); } } } + /** + * Extract the core name from the option. This is the {@link Option#getLongOpt()} if defined, otherwise + * the {@link Option#getOpt()}. + * @param option the commons cli option. + * @return the common cli based name. + */ + public static String extractKey(final Option option) { + return StringUtils.defaultIfBlank(option.getLongOpt(), option.getOpt()); + } + public Set<Map.Entry<String, List<String>>> entrySet() { return args.entrySet(); } @@ -69,7 +82,7 @@ public final class SetArgs { */ private void setDeprecationReporter() { DeprecationReporter.setLogReporter(opt -> { - String msg = deprecatedArgs.get(AbstractOption.extractBaseName(opt)); + String msg = deprecatedArgs.get(extractKey(opt)); if (msg == null) { DeprecationReporter.getDefault().accept(opt); } else { @@ -97,14 +110,14 @@ public final class SetArgs { final Option opt = arg.find(key); final Option main = arg.option(); if (opt.isDeprecated()) { - args.remove(AbstractOption.extractBaseName(main)); + args.remove(extractKey(main)); // deprecated options must be explicitly set so let it go. return true; } // non-deprecated options may have default so ignore it if another option has already been set. for (Option o : arg.group().getOptions()) { if (!o.equals(main)) { - if (args.containsKey(AbstractOption.extractBaseName(o))) { + if (args.containsKey(extractKey(o))) { return false; } } diff --git a/apache-rat-core/src/main/java/org/apache/rat/ui/OptionFactory.java b/apache-rat-core/src/main/java/org/apache/rat/ui/OptionFactory.java index cc77680a..51479b19 100644 --- a/apache-rat-core/src/main/java/org/apache/rat/ui/OptionFactory.java +++ b/apache-rat-core/src/main/java/org/apache/rat/ui/OptionFactory.java @@ -60,7 +60,7 @@ public final class OptionFactory { if (config.filter != null) { lst.removeIf(config.filter); } - lst.sort(Comparator.comparing(AbstractOption::extractBaseName)); + lst.sort(Comparator.comparing(ArgumentTracker::extractKey)); return lst; } @@ -72,7 +72,7 @@ public final class OptionFactory { */ public static <T extends AbstractOption<T>> Map<String, T> getOptionMap(final Config<T> config) { Map<String, T> result = new TreeMap<>(); - getOptions(config).forEach(option -> result.put(AbstractOption.extractBaseName(option.getOption()), option)); + getOptions(config).forEach(option -> result.put(ArgumentTracker.extractKey(option.getOption()), option)); return result; } diff --git a/apache-rat-plugin-parent/impl/pom.xml b/apache-rat-plugin-parent/impl/pom.xml index 4a2bdf95..48cc1e69 100644 --- a/apache-rat-plugin-parent/impl/pom.xml +++ b/apache-rat-plugin-parent/impl/pom.xml @@ -187,6 +187,24 @@ </arguments> </configuration> </execution> + <execution> + <id>generate-rat-tests</id> + <goals> + <goal>java</goal> + </goals> + <phase>generate-test-sources</phase> + <configuration> + <mainClass>org.apache.rat.maven.TestGenerator</mainClass> + <arguments> + <argument>-t</argument> + <argument>${project.build.testSourceDirectory}</argument> + <argument>-r</argument> + <argument>${project.build.testSourceDirectory}/../resources</argument> + <argument>-p</argument> + <argument>org.apache.rat.maven</argument> + </arguments> + </configuration> + </execution> <execution> <id>Initial site generation</id> <phase>pre-site</phase> @@ -242,9 +260,9 @@ <followSymlinks>false</followSymlinks> </fileset> <fileset> - <directory>src/main/java/org/apache/rat/plugin/</directory> + <directory>src/main/java/org/apache/rat/maven/</directory> <includes> - <include>BaseRatMojo.java</include> + <include>AbstractMaven.java</include> </includes> <followSymlinks>false</followSymlinks> </fileset> diff --git a/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/AbstractRatMojo.java b/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/AbstractRatMojo.java similarity index 97% rename from apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/AbstractRatMojo.java rename to apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/AbstractRatMojo.java index 2e2ce3b2..81283928 100644 --- a/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/AbstractRatMojo.java +++ b/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/AbstractRatMojo.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.rat.mp; +package org.apache.rat.maven; import java.io.File; import java.io.IOException; @@ -38,7 +38,6 @@ import org.apache.rat.commandline.ArgumentContext; import org.apache.rat.document.DocumentName; import org.apache.rat.document.FileDocument; import org.apache.rat.license.ILicense; -import org.apache.rat.maven.AbstractMaven; import org.apache.rat.utils.DefaultLog; import org.apache.rat.utils.Log; import org.apache.rat.walker.DirectoryWalker; @@ -127,7 +126,7 @@ public abstract class AbstractRatMojo extends AbstractMaven { List<String> result = new ArrayList<>(); for (Option option : arg.group().getOptions()) { if (option.getLongOpt() != null) { - List<String> args = setArgs.getArg(option.getLongOpt()); + List<String> args = argumentTracker.getArg(option.getLongOpt()); if (args != null) { result.addAll(args); } @@ -143,7 +142,7 @@ public abstract class AbstractRatMojo extends AbstractMaven { protected void removeKey(final Arg arg) { for (Option option : arg.group().getOptions()) { if (option.getLongOpt() != null) { - setArgs.removeArg(option.getLongOpt()); + argumentTracker.removeArg(option.getLongOpt()); } } } @@ -245,7 +244,7 @@ public abstract class AbstractRatMojo extends AbstractMaven { try { if (getLog().isDebugEnabled()) { log.debug("Start BaseRatMojo Configuration options"); - for (Map.Entry<String, List<String>> entry : setArgs.entrySet()) { + for (Map.Entry<String, List<String>> entry : argumentTracker.entrySet()) { log.debug(format(" * %s %s", entry.getKey(), String.join(", ", entry.getValue()))); } log.debug("End BaseRatMojo Configuration options"); @@ -255,7 +254,7 @@ public abstract class AbstractRatMojo extends AbstractMaven { removeKey(Arg.HELP_LICENSES); setIncludeExclude(); - ArgumentContext ctxt = OptionCollection.parseCommands(basedir, setArgs.args().toArray(new String[0])); + ArgumentContext ctxt = OptionCollection.parseCommands(basedir, argumentTracker.args().toArray(new String[0])); DocumentName dirName = DocumentName.builder(basedir).build(); ctxt.getConfiguration().addSource(new DirectoryWalker(new FileDocument(dirName, basedir, ctxt.getConfiguration().getDocumentExcluder(dirName)))); diff --git a/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/RatCheckException.java b/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/RatCheckException.java similarity index 97% rename from apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/RatCheckException.java rename to apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/RatCheckException.java index 8faf78a9..9e670e2a 100644 --- a/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/RatCheckException.java +++ b/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/RatCheckException.java @@ -1,4 +1,4 @@ -package org.apache.rat.mp; +package org.apache.rat.maven; /* * Licensed to the Apache Software Foundation (ASF) under one diff --git a/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/RatCheckMojo.java b/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/RatCheckMojo.java similarity index 87% rename from apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/RatCheckMojo.java rename to apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/RatCheckMojo.java index e4686adf..b4112320 100644 --- a/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/RatCheckMojo.java +++ b/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/RatCheckMojo.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.rat.mp; +package org.apache.rat.maven; import java.io.ByteArrayOutputStream; import java.io.File; @@ -40,6 +40,7 @@ import org.apache.rat.commandline.StyleSheets; import org.apache.rat.config.exclusion.StandardCollection; import org.apache.rat.license.LicenseSetFactory.LicenseFilter; import org.apache.rat.report.claim.ClaimStatistic; +import org.apache.rat.ui.ArgumentTracker; import org.apache.rat.utils.DefaultLog; import org.apache.rat.utils.Log; @@ -52,7 +53,7 @@ import static java.lang.String.format; * </p> */ @Mojo(name = "check", defaultPhase = LifecyclePhase.VALIDATE, threadSafe = true) -public class RatCheckMojo extends AbstractRatMojo { +public final class RatCheckMojo extends AbstractRatMojo { public RatCheckMojo() { super(); @@ -80,27 +81,21 @@ public class RatCheckMojo extends AbstractRatMojo { @Parameter(property = "rat.consoleOutput", defaultValue = "true") private boolean consoleOutput; - /** The reporter that this mojo uses */ - private Reporter reporter; - - Reporter.Output output; - /** - * Invoked by Maven to execute the Mojo. - * - * @throws MojoFailureException if an error in the plugin configuration was - * detected. - * @throws MojoExecutionException if another error occurred while executing the - * plugin. - */ + /** + * Invoked by Maven to execute the Mojo. + * + * @throws MojoExecutionException if another error occurred while executing the + * plugin. + */ @Override - public void execute() throws MojoExecutionException, MojoFailureException { + public void execute() throws MojoExecutionException { if (skip) { getLog().info("RAT will not execute since it is configured to be skipped via system property 'rat.skip'."); return; } if (getValues(Arg.OUTPUT_FILE).isEmpty()) { - setArgs.setArg(Arg.OUTPUT_FILE.option().getLongOpt(), defaultReportFile.getAbsolutePath()); + argumentTracker.setArg(ArgumentTracker.extractKey(Arg.OUTPUT_FILE.option()), defaultReportFile.getAbsolutePath()); } try (Writer logWriter = DefaultLog.getInstance().asWriter()) { @@ -110,10 +105,9 @@ public class RatCheckMojo extends AbstractRatMojo { config.reportExclusions(logWriter); } try { - this.reporter = new Reporter(config); - output = reporter.execute(); - writeMojoRatReport(output); - if (verbose) { + final Reporter reporter = new Reporter(config); + final Reporter.Output output = reporter.execute(); + writeMojoRatReport(output);if (verbose) { output.writeSummary(DefaultLog.getInstance().asWriter()); } // produce the requested output. @@ -144,7 +138,7 @@ public class RatCheckMojo extends AbstractRatMojo { } } - protected void check(final ReportConfiguration config, final Reporter.Output output) throws MojoFailureException { + private void check(final ReportConfiguration config, final Reporter.Output output) throws MojoFailureException { ClaimStatistic statistics = output.getStatistic(); if (config.getClaimValidator().hasErrors()) { diff --git a/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/RatReportMojo.java b/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/RatReportMojo.java similarity index 99% rename from apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/RatReportMojo.java rename to apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/RatReportMojo.java index 717a53c1..2c29be6c 100644 --- a/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/RatReportMojo.java +++ b/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/RatReportMojo.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.rat.mp; +package org.apache.rat.maven; import java.io.ByteArrayOutputStream; import java.io.File; diff --git a/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/package-info.java b/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/package-info.java similarity index 97% rename from apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/package-info.java rename to apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/package-info.java index 8876b3f8..6f7f65fd 100644 --- a/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/mp/package-info.java +++ b/apache-rat-plugin-parent/impl/src/main/java/org/apache/rat/maven/package-info.java @@ -20,4 +20,4 @@ /** * The base package for the RAT Maven plugin. */ -package org.apache.rat.mp; +package org.apache.rat.maven; diff --git a/apache-rat-plugin-parent/impl/src/test/java/org/apache/rat/mp/OptionMojoTest.java b/apache-rat-plugin-parent/impl/src/test/java/org/apache/rat/mp/OptionMojoTest.java index 03a49fc5..bc77a78f 100644 --- a/apache-rat-plugin-parent/impl/src/test/java/org/apache/rat/mp/OptionMojoTest.java +++ b/apache-rat-plugin-parent/impl/src/test/java/org/apache/rat/mp/OptionMojoTest.java @@ -25,6 +25,7 @@ import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.project.MavenProject; import org.apache.maven.project.ProjectBuilder; import org.apache.maven.project.ProjectBuildingRequest; +import org.apache.rat.maven.RatCheckMojo; import org.apache.rat.test.AbstractConfigurationOptionsProvider; import org.apache.rat.OptionCollectionTest; import org.apache.rat.ReportConfiguration; diff --git a/apache-rat-plugin-parent/impl/src/test/java/org/apache/rat/mp/RatCheckMojoTest.java b/apache-rat-plugin-parent/impl/src/test/java/org/apache/rat/mp/RatCheckMojoTest.java index 0d10e37f..7c8dfd9a 100644 --- a/apache-rat-plugin-parent/impl/src/test/java/org/apache/rat/mp/RatCheckMojoTest.java +++ b/apache-rat-plugin-parent/impl/src/test/java/org/apache/rat/mp/RatCheckMojoTest.java @@ -43,6 +43,10 @@ import org.apache.rat.commandline.Arg; import org.apache.rat.license.ILicenseFamily; import org.apache.rat.license.LicenseSetFactory; import org.apache.rat.license.LicenseSetFactory.LicenseFilter; +import org.apache.rat.maven.AbstractRatMojo; +import org.apache.rat.maven.RatCheckException; +import org.apache.rat.maven.RatCheckMojo; +import org.apache.rat.maven.RatReportMojo; import org.apache.rat.report.claim.ClaimStatistic; import org.apache.rat.test.AbstractConfigurationOptionsProvider; import org.apache.rat.test.utils.Resources; diff --git a/apache-rat-plugin-parent/tools/src/main/java/org/apache/rat/maven/TestGenerator.java b/apache-rat-plugin-parent/tools/src/main/java/org/apache/rat/maven/TestGenerator.java index a44a915a..92387149 100644 --- a/apache-rat-plugin-parent/tools/src/main/java/org/apache/rat/maven/TestGenerator.java +++ b/apache-rat-plugin-parent/tools/src/main/java/org/apache/rat/maven/TestGenerator.java @@ -50,8 +50,6 @@ import org.apache.velocity.runtime.RuntimeConstants; public final class TestGenerator { /** They syntax for this command */ private static final String SYNTAX = String.format("java -cp ... %s [options]", TestGenerator.class.getName()); - /** The velocity engine to generated files */ - private final VelocityEngine velocityEngine; /** The package name as a cased string */ private final CasedString packageName; /** The resource directory where the test resources will be written */ @@ -70,7 +68,7 @@ public final class TestGenerator { this.resourceDirectory = resourceDirectory; this.testDirectory = testDirectory; - velocityEngine = new VelocityEngine(); + VelocityEngine velocityEngine = new VelocityEngine(); velocityEngine.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath"); velocityEngine.setProperty("classpath.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); velocityEngine.init(); @@ -157,6 +155,7 @@ public final class TestGenerator { private void writeTestFile(final VelocityContext context) throws IOException { File javaFile = Paths.get(testDirectory).resolve(packageName.toCase(CasedString.StringCase.SLASH)) .resolve("MavenTest.java").toFile(); + FileUtils.mkDir(javaFile.getParentFile()); try (FileWriter fileWriter = new FileWriter(javaFile)) { javaTemplate.merge(context, fileWriter); } diff --git a/apache-rat-plugin-parent/tools/src/main/resources/org/apache/rat/maven/AbstractMaven.vm b/apache-rat-plugin-parent/tools/src/main/resources/org/apache/rat/maven/AbstractMaven.vm index cdc14c26..0976e13e 100644 --- a/apache-rat-plugin-parent/tools/src/main/resources/org/apache/rat/maven/AbstractMaven.vm +++ b/apache-rat-plugin-parent/tools/src/main/resources/org/apache/rat/maven/AbstractMaven.vm @@ -19,39 +19,27 @@ package org.apache.rat.maven; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugins.annotations.Parameter; -import org.apache.rat.ui.OptionFactory; -import org.apache.rat.ui.SetArgs; -import org.apache.rat.utils.CasedString; - import java.util.List; import java.util.stream.Collectors; -/* DO NOT EDIT - GENERATED FILE */ +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugins.annotations.Parameter; +import org.apache.rat.ui.ArgumentTracker; +import org.apache.rat.ui.OptionFactory; /** * Generated class to provide Maven support for standard RAT command line options + * DO NOT EDIT - GENERATED FILE */ +@SuppressWarnings("checkstyle:LineLength") public abstract class AbstractMaven extends AbstractMojo { + /** The arguments that have been set */ + protected final ArgumentTracker argumentTracker; - protected final SetArgs setArgs; - protected AbstractMaven() { List<MavenOption> mavenList = OptionFactory.getOptions(MavenOption.FACTORY_CONFIG).collect(Collectors.toList()); - setArgs = new SetArgs(MavenOption.RENAME_MAP, mavenList); + argumentTracker = new ArgumentTracker(mavenList); } - - - /** - * Creates a kebab case name from a camel case name. - * @param camelCase the camel case name to convert. - * @return the kebab format. - */ - public static String toKebabForm(String camelCase) { - return new CasedString(CasedString.StringCase.CAMEL, camelCase).toCase(CasedString.StringCase.KEBAB); - } - /* GENERATED METHODS */ diff --git a/apache-rat-plugin-parent/tools/src/main/resources/org/apache/rat/maven/AbstractMavenFunc.vm b/apache-rat-plugin-parent/tools/src/main/resources/org/apache/rat/maven/AbstractMavenFunc.vm index e7a940d2..0ff12218 100644 --- a/apache-rat-plugin-parent/tools/src/main/resources/org/apache/rat/maven/AbstractMavenFunc.vm +++ b/apache-rat-plugin-parent/tools/src/main/resources/org/apache/rat/maven/AbstractMavenFunc.vm @@ -27,18 +27,18 @@ @Deprecated #end ${parameterAnnotation} - public void set${fname}(${args} ${option.getName}) { + public void set${fname}(final ${args} ${option.getName}) { #if (${option.hasArg}) #if (${option.hasArgs}) - setArgs.addArg("${option.keyValue}", ${option.getName}); + argumentTracker.addArg("${option.keyValue}", ${option.getName}); #else - setArgs.setArg("${option.keyValue}", ${option.getName}); + argumentTracker.setArg("${option.keyValue}", ${option.getName}); #end #else if (${option.getName}) { - setArgs.setArg("${option.keyValue}", null); + argumentTracker.setArg("${option.keyValue}", null); } else { - setArgs.removeArg("${option.keyValue}"); + argumentTracker.removeArg("${option.keyValue}"); } #end } diff --git a/apache-rat-plugin-parent/tools/src/main/resources/org/apache/rat/maven/TestJava.vm b/apache-rat-plugin-parent/tools/src/main/resources/org/apache/rat/maven/TestJava.vm index edcaa77c..10a64614 100644 --- a/apache-rat-plugin-parent/tools/src/main/resources/org/apache/rat/maven/TestJava.vm +++ b/apache-rat-plugin-parent/tools/src/main/resources/org/apache/rat/maven/TestJava.vm @@ -34,6 +34,10 @@ import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; import org.junit.jupiter.api.io.TempDir; +/** + * Tests extracted from {@link ReportTestDataProvider}. + * DO NOT EDIT - GENERATED FILE + */ @MojoTest public class MavenTest {
