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+