You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2021/04/28 07:35:48 UTC

[sling-slingfeature-maven-plugin] branch master updated: SLING-10337 : Toggles not respected when checking generated api jars

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

cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-slingfeature-maven-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new 9069049  SLING-10337 : Toggles not respected when checking generated api jars
9069049 is described below

commit 9069049660b79620663c0f7a2cd6ef6e39546fa9
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Wed Apr 28 09:35:32 2021 +0200

    SLING-10337 : Toggles not respected when checking generated api jars
---
 .../sling/feature/maven/mojos/ApisJarMojo.java     | 11 ++++---
 .../feature/maven/mojos/apis/RegionSupport.java    | 36 ++++++++++++++++------
 2 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
index aca4921..c461f30 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
@@ -539,7 +539,7 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo {
                 final Collection<ArtifactInfo> infos = ctx.getArtifactInfos(regionName, ctx.getConfig().isUseApiDependencies());
                 this.runProcessor(ctx, apiRegion, ArtifactType.APIS, this.apiResources, infos);
                 final File apiJar = createArchive(ctx, apiRegion, ArtifactType.APIS, this.apiResources, infos, report);
-                report(ctx, apiJar, ArtifactType.APIS, apiRegion, ctx.getConfig().isUseApiDependencies(), report, null);
+                report(ctx, apiJar, ArtifactType.APIS, regionSupport, apiRegion, ctx.getConfig().isUseApiDependencies(), report, null);
             }
 
             // run processor on sources
@@ -554,7 +554,7 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo {
             if (generateSourceJar) {
                 final Collection<ArtifactInfo> infos = ctx.getArtifactInfos(regionName, ctx.getConfig().isUseApiDependencies());
                 final File sourceJar = createArchive(ctx, apiRegion, ArtifactType.SOURCES, this.apiSourceResources, infos, report);
-                report(ctx, sourceJar, ArtifactType.SOURCES, apiRegion, ctx.getConfig().isUseApiDependencies(), report, null);
+                report(ctx, sourceJar, ArtifactType.SOURCES, regionSupport, apiRegion, ctx.getConfig().isUseApiDependencies(), report, null);
             }
 
             if (ctx.getConfig().isUseApiDependencies() && (this.generateApiJar || this.generateSourceJar)) {
@@ -574,7 +574,7 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo {
                     ctx.setJavadocDir(javadocsDir);
                     final File javadocJar = createArchive(ctx, apiRegion, ArtifactType.JAVADOC,
                             this.apiJavadocResources, infos, report);
-                    report(ctx, javadocJar, ArtifactType.JAVADOC, apiRegion, ctx.getConfig().isUseApiDependenciesForJavadoc(), report, links);
+                    report(ctx, javadocJar, ArtifactType.JAVADOC, regionSupport, apiRegion, ctx.getConfig().isUseApiDependenciesForJavadoc(), report, links);
                 } else {
                     getLog().warn("Javadoc JAR will NOT be generated - sources directory " + ctx.getDeflatedSourcesDir()
                             + " was empty or contained no Java files!");
@@ -587,7 +587,7 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo {
                         ctx.setJavadocDir(javadocsAllDir);
                         final File javadocJar = createArchive(ctx, apiRegion, ArtifactType.JAVADOC_ALL,
                                 this.apiJavadocResources, infosForAll, report);
-                        report(ctx, javadocJar, ArtifactType.JAVADOC, apiRegion, false, report, links);
+                        report(ctx, javadocJar, ArtifactType.JAVADOC, regionSupport, apiRegion, false, report, links);
                     } else {
                         getLog().warn("Javadoc JAR will NOT be generated - sources directory " + ctx.getDeflatedSourcesDir()
                                 + " was empty or contained no Java files!");
@@ -653,6 +653,7 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo {
     private void report(final ApisJarContext ctx, 
             final File jarFile, 
             final ArtifactType artifactType,
+            final RegionSupport regionSupport,
             final ApiRegion apiRegion, 
             final boolean omitDependencyArtifacts, 
             final List<String> report,
@@ -682,7 +683,7 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo {
         }
         final List<ApiExport> missing = new ArrayList<>();
 
-        for (final ApiExport exp : apiRegion.listExports()) {
+        for (final ApiExport exp : regionSupport.getAllExports(apiRegion, ctx.getConfig().getEnabledToggles())) {
             final String packageName = exp.getName();
             if (!apiPackages.remove(packageName) && !otherPackages.remove(packageName)) {
                 missing.add(exp);
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/apis/RegionSupport.java b/src/main/java/org/apache/sling/feature/maven/mojos/apis/RegionSupport.java
index bffe86c..11e9213 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/apis/RegionSupport.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/apis/RegionSupport.java
@@ -19,8 +19,10 @@ package org.apache.sling.feature.maven.mojos.apis;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Set;
 import java.util.jar.JarInputStream;
 import java.util.jar.Manifest;
@@ -144,6 +146,29 @@ public class RegionSupport {
         return included;
     }
 
+    public List<ApiExport> getAllExports(final ApiRegion region, final Set<String> enabledToggles) {
+        final List<ApiExport> result = new ArrayList<>();
+        for (final ApiExport exp : region.listExports()) {
+            if ( this.include(exp, enabledToggles) ) {
+                result.add(exp);
+            }
+        }
+        return result;
+    }
+
+    private boolean include(final ApiExport exp, final Set<String> enabledToggles) {
+        boolean include = !toggleApiOnly;
+        if ( toggleApiOnly ) {
+            include = exp.getToggle() != null && enabledToggles.contains(exp.getToggle());
+        } else {
+            // if the package is behind a toggle,  only include if toggle is enabled or if previous artifact is set
+            if (exp.getToggle() != null && !enabledToggles.contains(exp.getToggle()) && exp.getPrevious() == null) {
+                include = false;
+            }
+        }
+        return include;
+    }
+
     /**
      * Compute exports based on all regions
      *
@@ -162,16 +187,7 @@ public class RegionSupport {
             for (ApiRegion apiRegion : apiRegions.listRegions()) {
                 final ApiExport exp = apiRegion.getExportByName(packageName);
                 if (exp != null) {
-                    boolean include = !toggleApiOnly;
-                    if ( toggleApiOnly ) {
-                        include = exp.getToggle() != null && enabledToggles.contains(exp.getToggle());
-                    } else {
-                        // if the package is behind a toggle,  only include if toggle is enabled or if previous artifact is set
-                        if (exp.getToggle() != null && !enabledToggles.contains(exp.getToggle()) && exp.getPrevious() == null) {
-                            include = false;
-                        }
-                    }
-                    if (include) {
+                    if ( this.include(exp, enabledToggles) ) {
                         result.add(exportedPackage.getName());
                     }
                 }