You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2023/01/10 22:32:30 UTC

[maven-enforcer] branch master updated: [MENFORCER-458] Move RequireFiles* to new API

This is an automated email from the ASF dual-hosted git repository.

sjaranowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git


The following commit(s) were added to refs/heads/master by this push:
     new 48ca986  [MENFORCER-458] Move RequireFiles* to new API
48ca986 is described below

commit 48ca986b14ab3d4e7a69bbf41155e1e93a76d3f9
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Mon Jan 9 23:28:40 2023 +0100

    [MENFORCER-458] Move RequireFiles* to new API
---
 .../rules/AbstractStandardEnforcerRule.java        |  2 +-
 .../rules/files}/AbstractRequireFiles.java         | 74 ++++++-----------
 .../rules/files}/RequireFilesDontExist.java        |  7 +-
 .../rules/files}/RequireFilesExist.java            |  7 +-
 .../rules/files}/RequireFilesSize.java             | 60 ++++++--------
 .../src/site/apt/requireFilesDontExist.apt.vm      |  8 +-
 .../src/site/apt/requireFilesExist.apt.vm          |  8 +-
 .../src/site/apt/requireFilesSize.apt.vm           | 12 +--
 .../rules/files}/TestRequireFilesDontExist.java    | 61 +++++++-------
 .../rules/files}/TestRequireFilesExist.java        | 66 ++++++++-------
 .../rules/files}/TestRequireFilesSize.java         | 95 ++++++++++++++--------
 .../require-files-dont-exist/verify.groovy         | 24 +-----
 .../it/projects/require-files-exist/verify.groovy  | 24 +-----
 .../it/projects/require-files-size/verify.groovy   | 24 +-----
 14 files changed, 207 insertions(+), 265 deletions(-)

diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java
index 8a2ae95..b426f6e 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java
@@ -26,7 +26,7 @@ import org.apache.maven.enforcer.rule.api.AbstractEnforcerRule;
  * @author Slawomir Jaranowski
  * @since 3.2.0
  */
-abstract class AbstractStandardEnforcerRule extends AbstractEnforcerRule {
+public abstract class AbstractStandardEnforcerRule extends AbstractEnforcerRule {
 
     private String message;
 
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractRequireFiles.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/files/AbstractRequireFiles.java
similarity index 64%
rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractRequireFiles.java
rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/files/AbstractRequireFiles.java
index 2bf704d..34988b4 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractRequireFiles.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/files/AbstractRequireFiles.java
@@ -16,25 +16,26 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.files;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
-import org.apache.maven.enforcer.rule.api.EnforcerRule;
+import org.apache.maven.enforcer.rule.api.EnforcerRuleError;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule;
 
 /**
  * Contains the common code to compare an array of files against a requirement.
  *
  * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
  */
-public abstract class AbstractRequireFiles extends AbstractStandardEnforcerRule {
+abstract class AbstractRequireFiles extends AbstractStandardEnforcerRule {
 
-    /** Array of files to check. */
-    private File[] files;
+    /** List of files to check. */
+    private List<File> files = Collections.emptyList();
 
     /** if null file handles should be allowed. If they are allowed, it means treat it as a success. */
     private boolean allowNulls = false;
@@ -60,10 +61,10 @@ public abstract class AbstractRequireFiles extends AbstractStandardEnforcerRule
     abstract String getErrorMsg();
 
     @Override
-    public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
+    public void execute() throws EnforcerRuleException {
 
-        if (!allowNulls && files.length == 0) {
-            throw new EnforcerRuleException("The file list is empty and Null files are disabled.");
+        if (!allowNulls && files.isEmpty()) {
+            throw new EnforcerRuleError("The file list is empty and Null files are disabled.");
         }
 
         List<File> failures = new ArrayList<>();
@@ -76,7 +77,7 @@ public abstract class AbstractRequireFiles extends AbstractStandardEnforcerRule
         }
 
         if (satisfyAny) {
-            int passed = files.length - failures.size();
+            int passed = files.size() - failures.size();
             if (passed == 0) {
                 fail(failures);
             }
@@ -109,58 +110,31 @@ public abstract class AbstractRequireFiles extends AbstractStandardEnforcerRule
 
     @Override
     public String getCacheId() {
-        return Integer.toString(hashCode(files));
+        return Integer.toString(files.hashCode());
     }
 
-    /**
-     * Calculates a hash code for the specified array as <code>Arrays.hashCode()</code> would do. Unfortunately, the
-     * mentioned method is only available for Java 1.5 and later.
-     *
-     * @param items The array for which to compute the hash code, may be <code>null</code>.
-     * @return The hash code for the array.
-     */
-    private static int hashCode(Object[] items) {
-        int hash = 0;
-        if (items != null) {
-            hash = 1;
-            for (Object item : items) {
-                hash = 31 * hash + (item == null ? 0 : item.hashCode());
-            }
-        }
-        return hash;
+    void setFilesList(List<File> files) {
+        this.files = files;
     }
 
-    @Override
-    public boolean isCacheable() {
-        return true;
-    }
+    // method using for testing purpose ...
 
-    @Override
-    public boolean isResultValid(EnforcerRule cachedRule) {
-        return true;
-    }
-
-    public File[] getFiles() {
+    List<File> getFiles() {
         return files;
     }
 
-    public void setFiles(File[] files) {
-        this.files = files;
-    }
-
-    public boolean isAllowNulls() {
-        return allowNulls;
-    }
-
-    public void setAllowNulls(boolean allowNulls) {
+    void setAllowNulls(boolean allowNulls) {
         this.allowNulls = allowNulls;
     }
 
-    public boolean isSatisfyAny() {
-        return satisfyAny;
+    void setSatisfyAny(boolean satisfyAny) {
+        this.satisfyAny = satisfyAny;
     }
 
-    public void setSatisfyAny(boolean satisfyAny) {
-        this.satisfyAny = satisfyAny;
+    @Override
+    public String toString() {
+        return String.format(
+                "%s[message=%s, files=%s, allowNulls=%b, satisfyAny=%b, level=%s]",
+                getClass().getSimpleName(), getMessage(), files, allowNulls, satisfyAny, getLevel());
     }
 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesDontExist.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/files/RequireFilesDontExist.java
similarity index 86%
rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesDontExist.java
rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/files/RequireFilesDontExist.java
index 4868fd2..116dd04 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesDontExist.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/files/RequireFilesDontExist.java
@@ -16,14 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.files;
+
+import javax.inject.Named;
 
 import java.io.File;
 
 /**
  * The Class RequireFilesDontExist.
  */
-public class RequireFilesDontExist extends AbstractRequireFiles {
+@Named("requireFilesDontExist")
+public final class RequireFilesDontExist extends AbstractRequireFiles {
     @Override
     boolean checkFile(File file) {
         // if we get here and the handle is null, treat it as a success
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesExist.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/files/RequireFilesExist.java
similarity index 92%
rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesExist.java
rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/files/RequireFilesExist.java
index c794d9b..9318dbc 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesExist.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/files/RequireFilesExist.java
@@ -16,7 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.files;
+
+import javax.inject.Named;
 
 import java.io.File;
 import java.io.IOException;
@@ -24,7 +26,8 @@ import java.io.IOException;
 /**
  * The Class RequireFilesExist.
  */
-public class RequireFilesExist extends AbstractRequireFiles {
+@Named("requireFilesExist")
+public final class RequireFilesExist extends AbstractRequireFiles {
     @Override
     boolean checkFile(File file) {
         // if we get here and the handle is null, treat it as a success
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesSize.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/files/RequireFilesSize.java
similarity index 68%
rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesSize.java
rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/files/RequireFilesSize.java
index 72679c1..d032c0d 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesSize.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/files/RequireFilesSize.java
@@ -16,16 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.files;
+
+import javax.inject.Inject;
+import javax.inject.Named;
 
 import java.io.File;
+import java.util.Collections;
+import java.util.Objects;
 
-import org.apache.maven.enforcer.rule.api.EnforcerRule;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
-import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 
 /**
  * Rule to validate the main artifact is within certain size constraints.
@@ -33,7 +34,8 @@ import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluatio
  * @author brianf
  * @author Roman Stumm
  */
-public class RequireFilesSize extends AbstractRequireFiles {
+@Named("requireFilesSize")
+public final class RequireFilesSize extends AbstractRequireFiles {
 
     private static final long MAXSIZE = 10000;
 
@@ -46,37 +48,29 @@ public class RequireFilesSize extends AbstractRequireFiles {
     /** The error msg. */
     private String errorMsg;
 
-    /** The log. */
-    private Log log;
+    private final MavenProject project;
+
+    @Inject
+    public RequireFilesSize(MavenProject project) {
+        this.project = Objects.requireNonNull(project);
+    }
 
     @Override
-    public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
-        this.log = helper.getLog();
+    public void execute() throws EnforcerRuleException {
 
         // if the file is already defined, use that. Otherwise get the main artifact.
-        if (getFiles().length == 0) {
-            try {
-                MavenProject project = (MavenProject) helper.evaluate("${project}");
-                setFiles(new File[1]);
-                getFiles()[0] = project.getArtifact().getFile();
-
-                super.execute(helper);
-            } catch (ExpressionEvaluationException e) {
-                throw new EnforcerRuleException("Unable to retrieve the project.", e);
-            }
+        if (getFiles().isEmpty()) {
+            setFilesList(Collections.singletonList(project.getArtifact().getFile()));
+            super.execute();
         } else {
-            super.execute(helper);
+            super.execute();
         }
     }
 
     @Override
-    public boolean isCacheable() {
-        return false;
-    }
-
-    @Override
-    public boolean isResultValid(EnforcerRule cachedRule) {
-        return false;
+    public String getCacheId() {
+        // non cached rule - return null
+        return null;
     }
 
     @Override
@@ -97,7 +91,7 @@ public class RequireFilesSize extends AbstractRequireFiles {
                 return false;
             } else {
 
-                this.log.debug(file
+                getLog().debug(() -> file
                         + " size ("
                         + length
                         + ") is OK ("
@@ -119,18 +113,10 @@ public class RequireFilesSize extends AbstractRequireFiles {
         return this.errorMsg;
     }
 
-    public long getMaxsize() {
-        return maxsize;
-    }
-
     public void setMaxsize(long maxsize) {
         this.maxsize = maxsize;
     }
 
-    public long getMinsize() {
-        return minsize;
-    }
-
     public void setMinsize(long minsize) {
         this.minsize = minsize;
     }
diff --git a/enforcer-rules/src/site/apt/requireFilesDontExist.apt.vm b/enforcer-rules/src/site/apt/requireFilesDontExist.apt.vm
index 89a197a..6d8b21d 100644
--- a/enforcer-rules/src/site/apt/requireFilesDontExist.apt.vm
+++ b/enforcer-rules/src/site/apt/requireFilesDontExist.apt.vm
@@ -30,13 +30,13 @@ Require Files Don't Exist
 
    The following parameters are supported by this rule:
    
-   * message - an optional message to the user if the rule fails.
+   * <<message>> - an optional message to the user if the rule fails.
    
-   * files - A list of files to check.
+   * <<files>> - A list of files to check.
    
-   * allowNulls - If null files should be allowed. If allowed, they will be treated as if they do not exist. Default is false.
+   * <<allowNulls>> - If null files should be allowed. If allowed, they will be treated as if they do not exist. Default is false.
 
-   * satisfyAny - Allows that one of files can make the rule pass, instead of all the files. Default is false.
+   * <<satisfyAny>> - Allows that one of files can make the rule pass, instead of all the files. Default is false.
    
    []
 
diff --git a/enforcer-rules/src/site/apt/requireFilesExist.apt.vm b/enforcer-rules/src/site/apt/requireFilesExist.apt.vm
index c7b7132..e314b07 100644
--- a/enforcer-rules/src/site/apt/requireFilesExist.apt.vm
+++ b/enforcer-rules/src/site/apt/requireFilesExist.apt.vm
@@ -30,13 +30,13 @@ Require Files Exist
 
    The following parameters are supported by this rule:
    
-   * message - an optional message to the user if the rule fails.
+   * <<message>> - an optional message to the user if the rule fails.
    
-   * files - A list of files to check.
+   * <<files>> - A list of files to check.
    
-   * allowNulls - If null files should be allowed. If allowed, they will be treated as if they do exist. Default is false.
+   * <<allowNulls>> - If null files should be allowed. If allowed, they will be treated as if they do exist. Default is false.
 
-   * satisfyAny - Allows that one of files can make the rule pass, instead of all the files. Default is false.
+   * <<satisfyAny>> - Allows that one of files can make the rule pass, instead of all the files. Default is false.
    
    []
 
diff --git a/enforcer-rules/src/site/apt/requireFilesSize.apt.vm b/enforcer-rules/src/site/apt/requireFilesSize.apt.vm
index 301765e..7e7d7f0 100644
--- a/enforcer-rules/src/site/apt/requireFilesSize.apt.vm
+++ b/enforcer-rules/src/site/apt/requireFilesSize.apt.vm
@@ -30,17 +30,17 @@ Require File Size
 
    The following parameters are supported by this rule:
    
-   * message - an optional message to the user if the rule fails.
+   * <<message>> - an optional message to the user if the rule fails.
    
-   * files - A list of files to check. If this list is empty, the main project artifact will be checked.
+   * <<files>> - A list of files to check. If this list is empty, the main project artifact will be checked.
    
-   * maxsize - maximum size in bytes for this file.
+   * <<maxsize>> - maximum size in bytes for this file.
    
-   * minsize - minimum size in bytes for this file.
+   * <<minsize>> - minimum size in bytes for this file.
    
-   * allowNulls - If null files should be allowed. If allowed, they will be treated as if they do exist. Default is false.
+   * <<allowNulls>> - If null files should be allowed. If allowed, they will be treated as if they do exist. Default is false.
 
-   * satisfyAny - Allows that one of files can make the rule pass, instead of all the files. Default is false.
+   * <<satisfyAny>> - Allows that one of files can make the rule pass, instead of all the files. Default is false.
    
    []
 
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesDontExist.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/files/TestRequireFilesDontExist.java
similarity index 64%
rename from enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesDontExist.java
rename to enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/files/TestRequireFilesDontExist.java
index 33839ed..93a1a0e 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesDontExist.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/files/TestRequireFilesDontExist.java
@@ -16,36 +16,41 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.files;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 /**
  * Test the "require files don't exist" rule.
  *
  * @author <a href="brianf@apache.org">Brian Fox</a>
  */
-public class TestRequireFilesDontExist {
+class TestRequireFilesDontExist {
     @TempDir
     public File temporaryFolder;
 
     private final RequireFilesDontExist rule = new RequireFilesDontExist();
 
     @Test
-    public void testFileExists() throws IOException {
+    void testFileExists() throws IOException {
         File f = File.createTempFile("junit", null, temporaryFolder);
 
-        rule.setFiles(new File[] {f});
+        rule.setFilesList(Collections.singletonList(f));
 
         try {
-            rule.execute(EnforcerTestUtils.getHelper());
+            rule.execute();
             fail("Expected an Exception.");
         } catch (EnforcerRuleException e) {
             assertNotNull(e.getMessage());
@@ -54,10 +59,10 @@ public class TestRequireFilesDontExist {
     }
 
     @Test
-    public void testEmptyFile() {
-        rule.setFiles(new File[] {null});
+    void testEmptyFile() {
+        rule.setFilesList(Collections.singletonList(null));
         try {
-            rule.execute(EnforcerTestUtils.getHelper());
+            rule.execute();
             fail("Should get exception");
         } catch (EnforcerRuleException e) {
             assertNotNull(e.getMessage());
@@ -65,22 +70,22 @@ public class TestRequireFilesDontExist {
     }
 
     @Test
-    public void testEmptyFileAllowNull() {
-        rule.setFiles(new File[] {null});
+    void testEmptyFileAllowNull() {
+        rule.setFilesList(Collections.singletonList(null));
         rule.setAllowNulls(true);
         try {
-            rule.execute(EnforcerTestUtils.getHelper());
+            rule.execute();
         } catch (EnforcerRuleException e) {
             fail("Unexpected Exception:" + e.getLocalizedMessage());
         }
     }
 
     @Test
-    public void testEmptyFileList() {
-        rule.setFiles(new File[] {});
-        assertEquals(0, rule.getFiles().length);
+    void testEmptyFileList() {
+        rule.setFilesList(Collections.emptyList());
+        assertTrue(rule.getFiles().isEmpty());
         try {
-            rule.execute(EnforcerTestUtils.getHelper());
+            rule.execute();
             fail("Should get exception");
         } catch (EnforcerRuleException e) {
             assertNotNull(e.getMessage());
@@ -88,31 +93,31 @@ public class TestRequireFilesDontExist {
     }
 
     @Test
-    public void testEmptyFileListAllowNull() {
-        rule.setFiles(new File[] {});
-        assertEquals(0, rule.getFiles().length);
+    void testEmptyFileListAllowNull() {
+        rule.setFilesList(Collections.emptyList());
+        assertTrue(rule.getFiles().isEmpty());
         rule.setAllowNulls(true);
         try {
-            rule.execute(EnforcerTestUtils.getHelper());
+            rule.execute();
         } catch (EnforcerRuleException e) {
             fail("Unexpected Exception:" + e.getLocalizedMessage());
         }
     }
 
     @Test
-    public void testFileDoesNotExist() throws EnforcerRuleException, IOException {
+    void testFileDoesNotExist() throws EnforcerRuleException, IOException {
         File f = File.createTempFile("junit", null, temporaryFolder);
         f.delete();
 
         assertFalse(f.exists());
 
-        rule.setFiles(new File[] {f});
+        rule.setFilesList(Collections.singletonList(f));
 
-        rule.execute(EnforcerTestUtils.getHelper());
+        rule.execute();
     }
 
     @Test
-    public void testFileDoesNotExistSatisfyAny() throws EnforcerRuleException, IOException {
+    void testFileDoesNotExistSatisfyAny() throws EnforcerRuleException, IOException {
         File f = File.createTempFile("junit", null, temporaryFolder);
         f.delete();
 
@@ -122,17 +127,17 @@ public class TestRequireFilesDontExist {
 
         assertTrue(g.exists());
 
-        rule.setFiles(new File[] {f, g.getCanonicalFile()});
+        rule.setFilesList(Arrays.asList(f, g.getCanonicalFile()));
         rule.setSatisfyAny(true);
 
-        rule.execute(EnforcerTestUtils.getHelper());
+        rule.execute();
     }
 
     /**
      * Test id.
      */
     @Test
-    public void testId() {
-        rule.getCacheId();
+    void testId() {
+        assertNotNull(rule.getCacheId());
     }
 }
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesExist.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/files/TestRequireFilesExist.java
similarity index 53%
rename from enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesExist.java
rename to enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/files/TestRequireFilesExist.java
index 34cc1bb..33c7261 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesExist.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/files/TestRequireFilesExist.java
@@ -16,10 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.files;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.junit.jupiter.api.Test;
@@ -32,83 +34,79 @@ import static org.junit.jupiter.api.Assertions.*;
  *
  * @author <a href="brett@apache.org">Brett Porter</a>
  */
-public class TestRequireFilesExist {
+class TestRequireFilesExist {
     @TempDir
     public File temporaryFolder;
 
     private final RequireFilesExist rule = new RequireFilesExist();
 
     @Test
-    public void testFileExists() throws Exception {
+    void testFileExists() throws Exception {
         File f = File.createTempFile("junit", null, temporaryFolder);
 
-        rule.setFiles(new File[] {f.getCanonicalFile()});
+        rule.setFilesList(Collections.singletonList(f.getCanonicalFile()));
 
-        rule.execute(EnforcerTestUtils.getHelper());
+        rule.execute();
     }
 
     @Test
-    public void testFileOsIndependentExists() {
-        rule.setFiles(new File[] {new File("POM.xml")});
+    void testFileOsIndependentExists() {
+        rule.setFilesList(Collections.singletonList(new File("POM.xml")));
 
-        EnforcerRuleException e =
-                assertThrows(EnforcerRuleException.class, () -> rule.execute(EnforcerTestUtils.getHelper()));
+        EnforcerRuleException e = assertThrows(EnforcerRuleException.class, () -> rule.execute());
 
         assertNotNull(e.getMessage());
     }
 
     @Test
-    public void testEmptyFile() {
-        rule.setFiles(new File[] {null});
+    void testEmptyFile() {
+        rule.setFilesList(Collections.singletonList(null));
 
-        EnforcerRuleException e =
-                assertThrows(EnforcerRuleException.class, () -> rule.execute(EnforcerTestUtils.getHelper()));
+        EnforcerRuleException e = assertThrows(EnforcerRuleException.class, () -> rule.execute());
 
         assertNotNull(e.getMessage());
     }
 
     @Test
-    public void testEmptyFileAllowNull() throws Exception {
-        rule.setFiles(new File[] {null});
+    void testEmptyFileAllowNull() throws Exception {
+        rule.setFilesList(Collections.singletonList(null));
         rule.setAllowNulls(true);
-        rule.execute(EnforcerTestUtils.getHelper());
+        rule.execute();
     }
 
     @Test
-    public void testEmptyFileList() {
-        rule.setFiles(new File[] {});
-        assertEquals(0, rule.getFiles().length);
+    void testEmptyFileList() {
+        rule.setFilesList(Collections.emptyList());
+        assertTrue(rule.getFiles().isEmpty());
 
-        EnforcerRuleException e =
-                assertThrows(EnforcerRuleException.class, () -> rule.execute(EnforcerTestUtils.getHelper()));
+        EnforcerRuleException e = assertThrows(EnforcerRuleException.class, () -> rule.execute());
 
         assertNotNull(e.getMessage());
     }
 
     @Test
-    public void testEmptyFileListAllowNull() throws Exception {
-        rule.setFiles(new File[] {});
-        assertEquals(0, rule.getFiles().length);
+    void testEmptyFileListAllowNull() throws Exception {
+        rule.setFilesList(Collections.emptyList());
+        assertTrue(rule.getFiles().isEmpty());
         rule.setAllowNulls(true);
-        rule.execute(EnforcerTestUtils.getHelper());
+        rule.execute();
     }
 
     @Test
-    public void testFileDoesNotExist() throws Exception {
+    void testFileDoesNotExist() throws Exception {
         File f = File.createTempFile("junit", null, temporaryFolder);
         f.delete();
 
         assertFalse(f.exists());
-        rule.setFiles(new File[] {f});
+        rule.setFilesList(Collections.singletonList(f));
 
-        EnforcerRuleException e =
-                assertThrows(EnforcerRuleException.class, () -> rule.execute(EnforcerTestUtils.getHelper()));
+        EnforcerRuleException e = assertThrows(EnforcerRuleException.class, () -> rule.execute());
 
         assertNotNull(e.getMessage());
     }
 
     @Test
-    public void testFileExistsSatisfyAny() throws EnforcerRuleException, IOException {
+    void testFileExistsSatisfyAny() throws EnforcerRuleException, IOException {
         File f = File.createTempFile("junit", null, temporaryFolder);
         f.delete();
 
@@ -118,17 +116,17 @@ public class TestRequireFilesExist {
 
         assertTrue(g.exists());
 
-        rule.setFiles(new File[] {f, g.getCanonicalFile()});
+        rule.setFilesList(Arrays.asList(f, g.getCanonicalFile()));
         rule.setSatisfyAny(true);
 
-        rule.execute(EnforcerTestUtils.getHelper());
+        rule.execute();
     }
 
     /**
      * Test id.
      */
     @Test
-    public void testId() {
-        rule.getCacheId();
+    void testId() {
+        assertNotNull(rule.getCacheId());
     }
 }
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesSize.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/files/TestRequireFilesSize.java
similarity index 59%
rename from enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesSize.java
rename to enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/files/TestRequireFilesSize.java
index 8dbbd3e..f0a7a04 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesSize.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/files/TestRequireFilesSize.java
@@ -16,46 +16,74 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.files;
 
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.enforcer.rule.api.EnforcerLogger;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.plugin.testing.ArtifactStubFactory;
+import org.apache.maven.project.MavenProject;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.io.TempDir;
-
-import static org.junit.jupiter.api.Assertions.*;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+import static org.mockito.Mockito.when;
 
 /**
  * Test the "require files exist" rule.
  *
  * @author <a href="brianf@apache.org">Brian Fox</a>
  */
-public class TestRequireFilesSize {
+@ExtendWith(MockitoExtension.class)
+class TestRequireFilesSize {
     @TempDir
     public File temporaryFolder;
 
-    private final RequireFilesSize rule = new RequireFilesSize();
+    @Mock
+    private MavenProject project;
+
+    @Mock
+    private EnforcerLogger log;
+
+    @InjectMocks
+    private RequireFilesSize rule;
+
+    @BeforeEach
+    void setup() {
+        rule.setLog(log);
+    }
 
     @Test
-    public void testFileExists() throws EnforcerRuleException, IOException {
+    void testFileExists() throws EnforcerRuleException, IOException {
         File f = File.createTempFile("junit", null, temporaryFolder);
 
-        rule.setFiles(new File[] {f});
+        rule.setFilesList(Collections.singletonList(f));
 
-        rule.execute(EnforcerTestUtils.getHelper());
+        rule.execute();
     }
 
     @Test
-    public void testEmptyFile() {
-        rule.setFiles(new File[] {null});
+    void testEmptyFile() {
+        rule.setFilesList(Collections.singletonList(null));
         try {
-            rule.execute(EnforcerTestUtils.getHelper());
+            rule.execute();
             fail("Should get exception");
         } catch (EnforcerRuleException e) {
             assertNotNull(e.getMessage());
@@ -63,42 +91,41 @@ public class TestRequireFilesSize {
     }
 
     @Test
-    public void testEmptyFileAllowNull() throws EnforcerRuleException {
-        rule.setFiles(new File[] {null});
+    void testEmptyFileAllowNull() throws EnforcerRuleException {
+        rule.setFilesList(Collections.singletonList(null));
         rule.setAllowNulls(true);
-        rule.execute(EnforcerTestUtils.getHelper());
+        rule.execute();
     }
 
     @Test
-    public void testEmptyFileList() throws EnforcerRuleException, IOException {
-        rule.setFiles(new File[] {});
+    void testEmptyFileList() throws EnforcerRuleException, IOException {
+        rule.setFilesList(Collections.emptyList());
 
-        assertEquals(0, rule.getFiles().length);
+        assertTrue(rule.getFiles().isEmpty());
 
-        MockProject project = new MockProject();
         File f = File.createTempFile("junit", null, temporaryFolder);
 
         ArtifactStubFactory factory = new ArtifactStubFactory();
         Artifact a = factory.getReleaseArtifact();
         a.setFile(f);
 
-        project.setArtifact(a);
+        when(project.getArtifact()).thenReturn(a);
 
         // sanity check the mockProject
         assertSame(f, project.getArtifact().getFile());
 
-        rule.execute(EnforcerTestUtils.getHelper(project));
+        rule.execute();
     }
 
     @Test
-    public void testFileDoesNotExist() throws IOException {
+    void testFileDoesNotExist() throws IOException {
         File f = File.createTempFile("junit", null, temporaryFolder);
         f.delete();
         assertFalse(f.exists());
-        rule.setFiles(new File[] {f});
+        rule.setFilesList(Collections.singletonList(f));
 
         try {
-            rule.execute(EnforcerTestUtils.getHelper());
+            rule.execute();
             fail("Should get exception");
         } catch (EnforcerRuleException e) {
             assertNotNull(e.getMessage());
@@ -106,12 +133,12 @@ public class TestRequireFilesSize {
     }
 
     @Test
-    public void testFileTooSmall() throws IOException {
+    void testFileTooSmall() throws IOException {
         File f = File.createTempFile("junit", null, temporaryFolder);
-        rule.setFiles(new File[] {f});
+        rule.setFilesList(Collections.singletonList(f));
         rule.setMinsize(10);
         try {
-            rule.execute(EnforcerTestUtils.getHelper());
+            rule.execute();
             fail("Should get exception");
         } catch (EnforcerRuleException e) {
             assertNotNull(e.getMessage());
@@ -119,17 +146,17 @@ public class TestRequireFilesSize {
     }
 
     @Test
-    public void testFileTooBig() throws IOException {
+    void testFileTooBig() throws IOException {
         File f = File.createTempFile("junit", null, temporaryFolder);
         try (BufferedWriter out = new BufferedWriter(new FileWriter(f))) {
             out.write("123456789101112131415");
         }
 
-        rule.setFiles(new File[] {f});
+        rule.setFilesList(Collections.singletonList(f));
         rule.setMaxsize(10);
         assertTrue(f.length() > 10);
         try {
-            rule.execute(EnforcerTestUtils.getHelper());
+            rule.execute();
             fail("Should get exception");
         } catch (EnforcerRuleException e) {
             assertNotNull(e.getMessage());
@@ -137,7 +164,7 @@ public class TestRequireFilesSize {
     }
 
     @Test
-    public void testRequireFilesSizeSatisfyAny() throws EnforcerRuleException, IOException {
+    void testRequireFilesSizeSatisfyAny() throws EnforcerRuleException, IOException {
         File f = File.createTempFile("junit", null, temporaryFolder);
         try (BufferedWriter out = new BufferedWriter(new FileWriter(f))) {
             out.write("123456789101112131415");
@@ -146,18 +173,18 @@ public class TestRequireFilesSize {
 
         File g = File.createTempFile("junit", null, temporaryFolder);
 
-        rule.setFiles(new File[] {f, g});
+        rule.setFilesList(Arrays.asList(f, g));
         rule.setMaxsize(10);
         rule.setSatisfyAny(true);
 
-        rule.execute(EnforcerTestUtils.getHelper());
+        rule.execute();
     }
 
     /**
      * Test id.
      */
     @Test
-    public void testId() {
-        rule.getCacheId();
+    void testId() {
+        assertNull(rule.getCacheId());
     }
 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java b/maven-enforcer-plugin/src/it/projects/require-files-dont-exist/verify.groovy
similarity index 64%
copy from enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java
copy to maven-enforcer-plugin/src/it/projects/require-files-dont-exist/verify.groovy
index 8a2ae95..0a22367 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java
+++ b/maven-enforcer-plugin/src/it/projects/require-files-dont-exist/verify.groovy
@@ -16,25 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.enforcer.rules;
+def buildLog = new File(basedir, 'build.log').text
 
-import org.apache.maven.enforcer.rule.api.AbstractEnforcerRule;
-
-/**
- * Abstract help rule.
- *
- * @author Slawomir Jaranowski
- * @since 3.2.0
- */
-abstract class AbstractStandardEnforcerRule extends AbstractEnforcerRule {
-
-    private String message;
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-}
+// rule executed
+assert buildLog.contains('[INFO] Rule 0: org.apache.maven.enforcer.rules.files.RequireFilesDontExist executed')
diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java b/maven-enforcer-plugin/src/it/projects/require-files-exist/verify.groovy
similarity index 64%
copy from enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java
copy to maven-enforcer-plugin/src/it/projects/require-files-exist/verify.groovy
index 8a2ae95..b0b02f1 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java
+++ b/maven-enforcer-plugin/src/it/projects/require-files-exist/verify.groovy
@@ -16,25 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.enforcer.rules;
+def buildLog = new File(basedir, 'build.log').text
 
-import org.apache.maven.enforcer.rule.api.AbstractEnforcerRule;
-
-/**
- * Abstract help rule.
- *
- * @author Slawomir Jaranowski
- * @since 3.2.0
- */
-abstract class AbstractStandardEnforcerRule extends AbstractEnforcerRule {
-
-    private String message;
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-}
+// rule executed
+assert buildLog.contains('[INFO] Rule 0: org.apache.maven.enforcer.rules.files.RequireFilesExist executed')
diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java b/maven-enforcer-plugin/src/it/projects/require-files-size/verify.groovy
similarity index 64%
copy from enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java
copy to maven-enforcer-plugin/src/it/projects/require-files-size/verify.groovy
index 8a2ae95..e710b4b 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/AbstractStandardEnforcerRule.java
+++ b/maven-enforcer-plugin/src/it/projects/require-files-size/verify.groovy
@@ -16,25 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.enforcer.rules;
+def buildLog = new File(basedir, 'build.log').text
 
-import org.apache.maven.enforcer.rule.api.AbstractEnforcerRule;
-
-/**
- * Abstract help rule.
- *
- * @author Slawomir Jaranowski
- * @since 3.2.0
- */
-abstract class AbstractStandardEnforcerRule extends AbstractEnforcerRule {
-
-    private String message;
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-}
+// rule executed
+assert buildLog.contains('[INFO] Rule 0: org.apache.maven.enforcer.rules.files.RequireFilesSize executed')