[java-mvn-enforcer] 01/02: JMVN-4 Need to have configurable extension garnish

Rod Widdowson rdw at steadingsoftware.com
Sun Dec 5 16:19:30 UTC 2021


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch main
in repository java-mvn-enforcer.

View the commit online:
http://git.shibboleth.net/view/?p=java-mvn-enforcer.git;a=commit;h=439ad7267b0336c309af852b40bcca0ecd19a4cf

commit 439ad7267b0336c309af852b40bcca0ecd19a4cf
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sat Nov 20 13:55:42 2021 +0000

    JMVN-4 Need to have configurable extension garnish
    
    https://shibboleth.atlassian.net/browse/JMVN-4
    
    Also clean up logging around errors in this space.
---
 .../mvn/enforcer/impl/BaseSigChecker.java          |  2 +-
 .../mvn/enforcer/impl/DependencyChecker.java       |  6 +++---
 .../shibboleth/mvn/enforcer/impl/JarEnforcer.java  | 15 ++++++++++++---
 .../mvn/enforcer/impl/ProjectPomContext.java       | 22 ++++++++++++++--------
 .../shibboleth/mvn/enforcer/impl/SigChecker.java   |  2 +-
 5 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/BaseSigChecker.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/BaseSigChecker.java
index d8a02b5..4b3682b 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/BaseSigChecker.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/BaseSigChecker.java
@@ -111,7 +111,7 @@ public class BaseSigChecker {
         final GPGKeyRing keyRing = getKeyRing(group);
         if (keyRing == null) {
             report.format("%-30s: %-14s No keyring for group %s\n", id, version, group);
-            log.error("{} {} no keyring for group",  id, version, group);
+            log.error("Artifact: {} Version: {} Group: {} No keyring ",  id, version, group);
             return false;
         }
         final Signature sig = getSignature(artifact);
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/DependencyChecker.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/DependencyChecker.java
index 12a281a..06c2d02 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/DependencyChecker.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/DependencyChecker.java
@@ -97,7 +97,7 @@ public class DependencyChecker {
      */
     public DependencyChecker( @Nonnull final ProjectPomContext project, @Nonnull final PrintWriter writer) {
 
-        projectContext = Constraint.isNotNull(project, "project must not be null");
+        projectContext = Constraint.isNotNull(project, "Project context must not be null");
         report = Constraint.isNotNull(writer, "Writer must not be null");
         if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) {
             Security.addProvider(new BouncyCastleProvider());
@@ -282,7 +282,7 @@ public class DependencyChecker {
         if (!jarPath.endsWith(".jar")) {
             return;
         }
-        final Pair<String, String> nm = ProjectPomContext.splitFileName(jarPath);
+        final Pair<String, String> nm = projectContext.splitFileName(jarPath);
         final String oldName = nameToVersion.put(nm.getFirst(), nm.getSecond());
         if (oldName == null) {
             return;
@@ -379,7 +379,7 @@ public class DependencyChecker {
     private void addDep(final Map<String, Map<String, Set<String>>> dependencySources,
                         final String dep,
                         final PomArtifact artifact) {
-        final Pair<String,String> depId = ProjectPomContext.splitFileName(dep);
+        final Pair<String,String> depId = projectContext.splitFileName(dep);
         
         if (artifact.getArtifactId().equals(depId.getFirst()) && artifact.getVersion().equals(depId.getSecond())) {
             // it's us.  Not interesting
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/JarEnforcer.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/JarEnforcer.java
index a1b332b..2bebc3a 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/JarEnforcer.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/JarEnforcer.java
@@ -87,7 +87,10 @@ public class JarEnforcer implements EnforcerRule, MavenLoader{
     private boolean listJarSources;
     /** Will we check that all jars in ~/.m2/... jars have valid signatures? */
     private boolean checkM2;
-    
+
+    /** The list of things which get added to real versions. */
+    private String versionExtensions = "-SNAPSHOT -GA -jre -empty-to-avoid-conflict-with-guava";
+
     /** Our artifact resolver. */
     private ArtifactResolver artifactResolver;
 
@@ -143,8 +146,14 @@ public class JarEnforcer implements EnforcerRule, MavenLoader{
             final BasicParserPool pool = new BasicParserPool();
             pool.initialize();
 
-            try (final ProjectPomContext pomContext = new ProjectPomContext(this,
-                EnforcerLogger.getLogger(ProjectPomContext.class), pool, getGPGDataClassLoader(), tmp, map)) {
+            try (final ProjectPomContext pomContext = 
+                    new ProjectPomContext(this, 
+                                          EnforcerLogger.getLogger(ProjectPomContext.class),
+                                          pool,
+                                          getGPGDataClassLoader(),
+                                          tmp,
+                                          map, 
+                                          StringSupport.stringToList(versionExtensions, XMLConstants.LIST_DELIMITERS))) {
 
                 pomContext.initialize(pom);
 
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/ProjectPomContext.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/ProjectPomContext.java
index 90714e3..bc8871a 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/ProjectPomContext.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/ProjectPomContext.java
@@ -50,10 +50,6 @@ public final class ProjectPomContext implements AutoCloseable {
     /** Where the keyrings live when on the classpath. */
     public final static String CLASSPATH_ROOT = "net/shibboleth/mvn/enforcer/";
 
-    /** A list of things which get added to real versions. */
-    private static final List<String> EXTENSION_GARNISH = 
-        List.of("-SNAPSHOT", "-GA", "-jre", "-empty-to-avoid-conflict-with-guava");
-
     /** Our log. */
     private final Logger log;
 
@@ -84,6 +80,9 @@ public final class ProjectPomContext implements AutoCloseable {
     /** If non-null the path to a  {@link Properties} file which maps artifacts to groups */
     private Path artifactMap;
 
+    /** The string which can be appended to a version.*/
+    @Nonnull private final List<String> extensionGarnish;
+
     /** Constructor.
      * @param loader how to get artifacts
      * @param logger where to log or null if we are using out own.
@@ -91,13 +90,15 @@ public final class ProjectPomContext implements AutoCloseable {
      * @param classLoader source for extra info (like keyrings)
      * @param tmpDir where to put stuff.
      * @param mapFile artifact to group mapping {@link Properties} file
+     * @param extensions the known additions to the project extensions
      */
     public ProjectPomContext(final MavenLoader loader,
             @Nonnull final Logger logger,
             @Nonnull final ParserPool pool,
             @Nonnull final ClassLoader classLoader,
             @Nonnull final Path tmpDir,
-            @Nonnull final Path mapFile) {
+            @Nonnull final Path mapFile,
+            @Nonnull final List<String> extensions) {
         mavenLoader = Constraint.isNotNull(loader, "Loader must not be null");
         log = Constraint.isNotNull(logger, "Logger must not be null");
         workingDir = Constraint.isNotNull(tmpDir, "Working dir must not be null");
@@ -106,6 +107,7 @@ public final class ProjectPomContext implements AutoCloseable {
         Constraint.isTrue(Files.exists(tmpDir), "Enforcer dir must exist");
         parserPool = Constraint.isNotNull(pool, "Parse Pool must not be null");
         artifactMap = mapFile;
+        extensionGarnish = Constraint.isNotNull(extensions, "Extensions must not be null");
     }
     
     /** Returns the parserPool.
@@ -134,7 +136,11 @@ public final class ProjectPomContext implements AutoCloseable {
      * @return the group
      */
     @Nonnull public String getGroup(final String id) {
-        return artifactToGroup.get(id);
+        final String group = artifactToGroup.get(id);
+        if (group == null) {
+            log.error("Could not resolve group for {}", id);
+        }
+        return group;
     }
 
     /** Return the {@link MavenLoader}
@@ -290,7 +296,7 @@ public final class ProjectPomContext implements AutoCloseable {
      * @param inName the file name
      * @return a pair.
      */
-     protected static Pair<String, String> splitFileName(final String inName) {
+     protected Pair<String, String> splitFileName(final String inName) {
         final String name;
         if (inName.endsWith(".jar")) {
             name = inName.substring(0, inName.length()-4);
@@ -298,7 +304,7 @@ public final class ProjectPomContext implements AutoCloseable {
             name = inName;
         }
         int last = name.lastIndexOf("-");
-        for (final String otherGarnish : EXTENSION_GARNISH) {
+        for (final String otherGarnish : extensionGarnish) {
             if (name.endsWith(otherGarnish)) {
                 last = name.substring(0, name.length()-otherGarnish.length()).lastIndexOf("-");
                 break;
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/SigChecker.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/SigChecker.java
index 6456670..9ddb297 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/SigChecker.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/SigChecker.java
@@ -79,7 +79,7 @@ public class SigChecker extends BaseSigChecker {
         if (!fileName.endsWith(".jar")) {
             return 0;
         }
-        final Pair<String,String> name = ProjectPomContext.splitFileName(fileName);
+        final Pair<String,String> name = getProjectContext().splitFileName(fileName);
         final String group = getProjectContext().getGroup(name.getFirst());
         final PomArtifact jarAsArtifact = 
                 getProjectContext().getParentPom().new PomArtifact(group, name.getFirst(), name.getSecond());

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list