Updated the way fixed versions are analyzed

This commit is contained in:
Marcin Grzejszczak
2018-06-25 17:13:58 +02:00
parent 2241e2474a
commit fe00a36f5b
5 changed files with 83 additions and 8 deletions

View File

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

View File

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

View File

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

View File

@@ -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<String, String> 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");
}
}

View File

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