diff --git a/src/main/java/org/springframework/data/release/projectservice/DefaultProjectClient.java b/src/main/java/org/springframework/data/release/projectservice/DefaultProjectClient.java index 4b801c9..ceeb869 100644 --- a/src/main/java/org/springframework/data/release/projectservice/DefaultProjectClient.java +++ b/src/main/java/org/springframework/data/release/projectservice/DefaultProjectClient.java @@ -78,12 +78,8 @@ class DefaultProjectClient implements ProjectService { return operations.getForObject(resource, String.class); } - /* - * (non-Javadoc) - * @see org.springframework.data.release.sagan.SaganClient#updateProjectMetadata(org.springframework.data.release.model.Project, java.util.List) - */ @Override - public void updateProjectMetadata(Project project, MaintainedVersions versions) { + public void updateProjectMetadata(Project project, MaintainedVersions versions, boolean delete, boolean update) { URI resource = configuration.getProjectReleasesResource(project); @@ -100,17 +96,17 @@ class DefaultProjectClient implements ProjectService { boolean requiresDelete = requiresDeleteVersions(project, versionsToRetain, versionsInSagan); boolean requiresWrite = requiresWriteVersions(versions, versionsInSagan); - if (requiresDelete || requiresWrite) { + if ((requiresDelete) && delete || (requiresWrite && update)) { logger.log(project, "Updating project versions at %s…", resource); } - if (requiresDelete) { + if (requiresDelete && delete) { logger.log(project, "Deleting outdated project versions…", versionsString); deleteExistingVersions(project, versionsToRetain); } - if (requiresWrite) { + if (requiresWrite && update) { logger.log(project, "Writing project versions %s.", versionsString); createVersions(project, versions, resource, versionsInSagan); diff --git a/src/main/java/org/springframework/data/release/projectservice/DummyProjectClient.java b/src/main/java/org/springframework/data/release/projectservice/DummyProjectClient.java index 5a9a061..7e4c6bb 100644 --- a/src/main/java/org/springframework/data/release/projectservice/DummyProjectClient.java +++ b/src/main/java/org/springframework/data/release/projectservice/DummyProjectClient.java @@ -43,12 +43,8 @@ class DummyProjectClient implements ProjectService { Logger logger; ObjectWriter mapper; - /* - * (non-Javadoc) - * @see org.springframework.data.release.sagan.SaganClient#updateProjectMetadata(org.springframework.data.release.model.Project, org.springframework.data.release.sagan.MaintainedVersions) - */ @Override - public void updateProjectMetadata(Project project, MaintainedVersions versions) { + public void updateProjectMetadata(Project project, MaintainedVersions versions, boolean delete, boolean update) { logger.log(project, "Updating released version on Sagan to %s!", versions); diff --git a/src/main/java/org/springframework/data/release/projectservice/ProjectService.java b/src/main/java/org/springframework/data/release/projectservice/ProjectService.java index aef3c2e..8f7a3f6 100644 --- a/src/main/java/org/springframework/data/release/projectservice/ProjectService.java +++ b/src/main/java/org/springframework/data/release/projectservice/ProjectService.java @@ -47,7 +47,19 @@ public interface ProjectService { * @param project must not be {@literal null}. * @param versions must not be {@literal null}. */ - void updateProjectMetadata(Project project, MaintainedVersions versions); + default void updateProjectMetadata(Project project, MaintainedVersions versions) { + updateProjectMetadata(project, versions, true, true); + } + + /** + * Updates the project metadata for the given {@link Project} to the given {@link MaintainedVersions}. + * + * @param project must not be {@literal null}. + * @param versions must not be {@literal null}. + * @param delete + * @param update + */ + void updateProjectMetadata(Project project, MaintainedVersions versions, boolean delete, boolean update); /** * Verify correct authentication setup. diff --git a/src/main/java/org/springframework/data/release/projectservice/ProjectServiceOperations.java b/src/main/java/org/springframework/data/release/projectservice/ProjectServiceOperations.java index 79c44fc..b09c3f5 100644 --- a/src/main/java/org/springframework/data/release/projectservice/ProjectServiceOperations.java +++ b/src/main/java/org/springframework/data/release/projectservice/ProjectServiceOperations.java @@ -27,6 +27,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.Executor; import java.util.stream.Collectors; @@ -77,20 +78,25 @@ class ProjectServiceOperations { Map versions = findVersions(trains); - Streamable.of(versions.entrySet()).forEach(entry -> { + Streamable> stream = Streamable.of(versions.entrySet()) // + .filter(entry -> { + return entry.getKey() != Projects.BOM && entry.getKey() != Projects.JDBC; + }); - if (entry.getKey() == Projects.BOM) { - return; - } - - if(entry.getKey() == Projects.JDBC){ - return; - } + ExecutionUtils.run(executor, stream, entry -> { // Sometimes we see 404 Not Found: [no body], sometimes // 400 Bad Request: "Release '2.2.13-SNAPSHOT' already present // still we should fail here and report those failures to the website team - client.updateProjectMetadata(entry.getKey(), entry.getValue()); + client.updateProjectMetadata(entry.getKey(), entry.getValue(), true, false); + }); + + ExecutionUtils.run(executor, stream, entry -> { + + // Sometimes we see 404 Not Found: [no body], sometimes + // 400 Bad Request: "Release '2.2.13-SNAPSHOT' already present + // still we should fail here and report those failures to the website team + client.updateProjectMetadata(entry.getKey(), entry.getValue(), false, true); }); }