From fe00a36f5bdf7f0315a616e0c538ec40c7f22f10 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 25 Jun 2018 17:13:58 +0200 Subject: [PATCH] Updated the way fixed versions are analyzed --- .../cloud/release/internal/Releaser.java | 4 ++ .../internal/pom/ProjectPomUpdater.java | 16 ++++++ .../cloud/release/internal/pom/Versions.java | 10 ++-- .../internal/pom/ProjectPomUpdaterTests.java | 57 +++++++++++++++++++ .../internal/spring/SpringReleaser.java | 4 +- 5 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/pom/ProjectPomUpdaterTests.java diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java index 5f45afe9..df2c27bf 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java @@ -54,6 +54,10 @@ public class Releaser { return this.projectPomUpdater.retrieveVersionsFromSCRelease(); } + public Projects fixedVersions() { + return this.projectPomUpdater.fixedVersions(); + } + public void updateProjectFromScRelease(File project, Projects versions, ProjectVersion versionFromScRelease) { updateProjectFromScRelease(project, versions, versionFromScRelease, ASSERT_SNAPSHOTS); diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/ProjectPomUpdater.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/ProjectPomUpdater.java index a4cbf82b..758d5a32 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/ProjectPomUpdater.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/ProjectPomUpdater.java @@ -24,7 +24,11 @@ import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.Scanner; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -69,6 +73,18 @@ public class ProjectPomUpdater implements ReleaserPropertiesAware { return versions.toProjectVersions(); } + /** + * @return map of fixed versions + */ + public Projects fixedVersions() { + Set projectVersions = this.properties.getFixedVersions() + .entrySet() + .stream() + .map(entry -> new ProjectVersion(entry.getKey(), entry.getValue())) + .collect(Collectors.toSet()); + return new Versions(projectVersions).toProjectVersions(); + } + /** * For the given root folder (typically the working directory) performs the whole * flow of updating {@code pom.xml} with values from Spring Cloud Release project. diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/Versions.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/Versions.java index 0f3aa54c..84d5bd2c 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/Versions.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/Versions.java @@ -16,6 +16,7 @@ package org.springframework.cloud.release.internal.pom; import java.util.HashSet; +import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.stream.Collectors; @@ -74,9 +75,7 @@ class Versions { .findFirst().orElse(new ProjectVersion(SPRING_BOOT_PROJECT_NAME, "")).version; this.scBuildVersion = versions.stream().filter(projectVersion -> BUILD_ARTIFACT_ID.equals(projectVersion.projectName)) .findFirst().orElse(new ProjectVersion(BUILD_ARTIFACT_ID, "")).version; - this.projects = versions.stream() - .map(projectVersion -> new Project(projectVersion.projectName, projectVersion.version)) - .collect(Collectors.toSet()); + versions.forEach(projectVersion -> setVersion(projectVersion.projectName, projectVersion.version)); } String versionForProject(String projectName) { @@ -98,8 +97,9 @@ class Versions { } Projects toProjectVersions() { - return new Projects(this.projects.stream().map(project -> new ProjectVersion(project.name, project.version)) - .collect(Collectors.toSet())); + return this.projects.stream() + .map(project -> new ProjectVersion(project.name, project.version)) + .distinct().collect(Collectors.toCollection(Projects::new)); } private boolean nameMatches(String projectName, Project project) { diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/pom/ProjectPomUpdaterTests.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/pom/ProjectPomUpdaterTests.java new file mode 100644 index 00000000..60ecd827 --- /dev/null +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/pom/ProjectPomUpdaterTests.java @@ -0,0 +1,57 @@ +package org.springframework.cloud.release.internal.pom; + +import java.util.Map; +import java.util.stream.Collectors; + +import org.assertj.core.api.BDDAssertions; +import org.junit.Test; +import org.springframework.cloud.release.internal.ReleaserProperties; + +import static org.junit.Assert.*; + +/** + * @author Marcin Grzejszczak + */ +public class ProjectPomUpdaterTests { + + @Test public void should_convert_fixed_versions_to_updated_fixed_versions() { + ReleaserProperties properties = new ReleaserProperties(); + properties.getFixedVersions().put("spring-cloud-task", "2.0.0.RELEASE"); + properties.getFixedVersions().put("spring-cloud-openfeign", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-consul", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-zookeeper", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-stream", "Elmhurst.RELEASE"); + properties.getFixedVersions().put("spring-cloud-config", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-cloudfoundry", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-netflix", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-vault", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-security", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-commons", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-sleuth", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-aws", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-contract", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-release", "Finchley.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-build", "2.0.3.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-bus", "2.0.1.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-function", "1.0.0.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-cloud-starter-build", "Finchley.BUILD-SNAPSHOT"); + properties.getFixedVersions().put("spring-boot", "2.0.3.RELEASE"); + properties.getFixedVersions().put("spring-cloud-gateway", "2.0.1.BUILD-SNAPSHOT"); + ProjectPomUpdater updater = new ProjectPomUpdater(properties); + + Map fixedVersions = updater.fixedVersions() + .stream() + .collect(Collectors.toMap( + projectVersion -> projectVersion.projectName, + projectVersion -> projectVersion.version)); + + BDDAssertions.then(fixedVersions) + .containsEntry("spring-boot", "2.0.3.RELEASE") + .containsEntry("spring-boot-dependencies", "2.0.3.RELEASE") + .containsEntry("spring-boot-starter", "2.0.3.RELEASE") + .containsEntry("spring-cloud-build", "2.0.3.BUILD-SNAPSHOT") + .containsEntry("spring-cloud-dependencies", "2.0.3.BUILD-SNAPSHOT") + .containsEntry("spring-cloud-release", "Finchley.BUILD-SNAPSHOT") + .containsEntry("spring-cloud", "Finchley.BUILD-SNAPSHOT"); + } +} \ No newline at end of file diff --git a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/SpringReleaser.java b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/SpringReleaser.java index 8d74d973..a349873f 100644 --- a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/SpringReleaser.java +++ b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/SpringReleaser.java @@ -195,9 +195,7 @@ public class SpringReleaser { } private Projects projectsToUpdateForFixedVersions() { - Projects projectsToUpdate = this.properties.getFixedVersions().entrySet().stream() - .map(entry -> new ProjectVersion(entry.getKey(), entry.getValue())) - .distinct().collect(Collectors.toCollection(Projects::new)); + Projects projectsToUpdate = this.releaser.fixedVersions(); printSettingVersionFromFixedVersions(projectsToUpdate); return projectsToUpdate; }