Split projects deletion/update.

This commit is contained in:
Mark Paluch
2023-09-15 09:46:47 +02:00
parent 1f7abbc38f
commit 24daeffa49
4 changed files with 33 additions and 23 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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.

View File

@@ -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<Project, MaintainedVersions> versions = findVersions(trains);
Streamable.of(versions.entrySet()).forEach(entry -> {
Streamable<Entry<Project, MaintainedVersions>> 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);
});
}