You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2026/09/30 19:31:36 UTC

(maven-doxia-sitetools) branch master updated: Resolve each site descriptor locale through one helper

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 494d486  Resolve each site descriptor locale through one helper
494d486 is described below

commit 494d4864e5dfc11232a556705996c52cb6e45edd
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Wed Sep 30 18:30:17 2026 +0200

    Resolve each site descriptor locale through one helper
---
 .../apache/maven/doxia/tools/DefaultSiteTool.java  | 141 +++++++++------------
 1 file changed, 62 insertions(+), 79 deletions(-)

diff --git a/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java b/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
index fe3ca01..3f0d6a5 100644
--- a/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
+++ b/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
@@ -892,102 +892,85 @@ public class DefaultSiteTool implements SiteTool {
         String country = locale.getCountry();
         String language = locale.getLanguage();
 
-        String localeStr = null;
-        File siteDescriptor = null;
-        boolean found = false;
+        File siteDescriptor;
 
         if (!variant.isEmpty()) {
-            localeStr = language + "_" + country + "_" + variant;
-            ArtifactRequest request =
-                    createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
-
-            deletePseudoSiteDescriptorMarkerFile(repoSession, request);
-
-            try {
-                ArtifactResult result = repositorySystem.resolveArtifact(repoSession, request);
-
-                siteDescriptor = result.getArtifact().getFile();
-                found = true;
-            } catch (ArtifactResolutionException e) {
-                // This is a workaround for MNG-7758/MRESOLVER-335
-                if (e.getResult().getExceptions().stream().anyMatch(re -> re instanceof ArtifactNotFoundException)) {
-                    LOGGER.debug("No site descriptor found for '" + project.getId() + "' for locale '" + localeStr
-                            + "', trying without variant...");
-                } else {
-                    throw e;
-                }
+            String localeStr = language + "_" + country + "_" + variant;
+            siteDescriptor = resolveSiteDescriptor(project, repoSession, remoteProjectRepositories, localeStr);
+            if (siteDescriptor != null) {
+                return siteDescriptor;
             }
+            LOGGER.debug("No site descriptor found for '" + project.getId() + "' for locale '" + localeStr
+                    + "', trying without variant...");
         }
 
-        if (!found && !country.isEmpty()) {
-            localeStr = language + "_" + country;
-            ArtifactRequest request =
-                    createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
-
-            deletePseudoSiteDescriptorMarkerFile(repoSession, request);
-
-            try {
-                ArtifactResult result = repositorySystem.resolveArtifact(repoSession, request);
-
-                siteDescriptor = result.getArtifact().getFile();
-                found = true;
-            } catch (ArtifactResolutionException e) {
-                // This is a workaround for MNG-7758/MRESOLVER-335
-                if (e.getResult().getExceptions().stream().anyMatch(re -> re instanceof ArtifactNotFoundException)) {
-                    LOGGER.debug("No site descriptor found for '" + project.getId() + "' for locale '" + localeStr
-                            + "', trying without country...");
-                } else {
-                    throw e;
-                }
+        if (!country.isEmpty()) {
+            String localeStr = language + "_" + country;
+            siteDescriptor = resolveSiteDescriptor(project, repoSession, remoteProjectRepositories, localeStr);
+            if (siteDescriptor != null) {
+                return siteDescriptor;
             }
+            LOGGER.debug("No site descriptor found for '" + project.getId() + "' for locale '" + localeStr
+                    + "', trying without country...");
         }
 
-        if (!found && !language.isEmpty()) {
-            localeStr = language;
-            ArtifactRequest request =
-                    createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
-
-            deletePseudoSiteDescriptorMarkerFile(repoSession, request);
-
-            try {
-                ArtifactResult result = repositorySystem.resolveArtifact(repoSession, request);
-
-                siteDescriptor = result.getArtifact().getFile();
-                found = true;
-            } catch (ArtifactResolutionException e) {
-                // This is a workaround for MNG-7758/MRESOLVER-335
-                if (e.getResult().getExceptions().stream().anyMatch(re -> re instanceof ArtifactNotFoundException)) {
-                    LOGGER.debug("No site descriptor found for '" + project.getId() + "' for locale '" + localeStr
-                            + "', trying without language (default locale)...");
-                } else {
-                    throw e;
-                }
+        if (!language.isEmpty()) {
+            siteDescriptor = resolveSiteDescriptor(project, repoSession, remoteProjectRepositories, language);
+            if (siteDescriptor != null) {
+                return siteDescriptor;
             }
+            LOGGER.debug("No site descriptor found for '" + project.getId() + "' for locale '" + language
+                    + "', trying without language (default locale)...");
         }
 
-        if (!found) {
-            localeStr = SiteTool.DEFAULT_LOCALE.toString();
-            ArtifactRequest request =
-                    createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
+        siteDescriptor = resolveSiteDescriptor(
+                project, repoSession, remoteProjectRepositories, SiteTool.DEFAULT_LOCALE.toString());
+        if (siteDescriptor == null) {
+            LOGGER.debug("No site descriptor found for '" + project.getId() + "' with default locale");
+        }
+        return siteDescriptor;
+    }
 
-            deletePseudoSiteDescriptorMarkerFile(repoSession, request);
+    /**
+     * Resolves the site descriptor of one locale.
+     *
+     * @param project not null
+     * @param repoSession the repository system session not null
+     * @param remoteProjectRepositories not null
+     * @param localeStr the locale suffix of the site descriptor classifier, not null
+     * @return the resolved site descriptor or null if it is not found in the repositories.
+     * @throws ArtifactResolutionException if the resolution fails for another reason
+     */
+    private File resolveSiteDescriptor(
+            MavenProject project,
+            RepositorySystemSession repoSession,
+            List<RemoteRepository> remoteProjectRepositories,
+            String localeStr)
+            throws ArtifactResolutionException {
+        ArtifactRequest request = createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
 
-            try {
-                ArtifactResult result = repositorySystem.resolveArtifact(repoSession, request);
-
-                siteDescriptor = result.getArtifact().getFile();
-            } catch (ArtifactResolutionException e) {
-                // This is a workaround for MNG-7758/MRESOLVER-335
-                if (e.getResult().getExceptions().stream().anyMatch(re -> re instanceof ArtifactNotFoundException)) {
-                    LOGGER.debug("No site descriptor found for '" + project.getId() + "' with default locale");
-                    return null;
-                }
+        deletePseudoSiteDescriptorMarkerFile(repoSession, request);
 
-                throw e;
+        try {
+            return repositorySystem
+                    .resolveArtifact(repoSession, request)
+                    .getArtifact()
+                    .getFile();
+        } catch (ArtifactResolutionException e) {
+            if (isMissing(e)) {
+                return null;
             }
+            throw e;
         }
+    }
 
-        return siteDescriptor;
+    /**
+     * This is a workaround for MNG-7758/MRESOLVER-335.
+     *
+     * @return whether the resolution failed because the artifact is not in any repository
+     */
+    private static boolean isMissing(ArtifactResolutionException e) {
+        return e.getResult().getExceptions().stream().anyMatch(re -> re instanceof ArtifactNotFoundException);
     }
 
     // TODO Remove this transient method when everyone has migrated to Maven Site Plugin 4.0.0+