private Map<String, String> toBomModel(ProjectRequest request, BillOfMaterials bom) { Map<String, String> model = new HashMap<>(); model.put("groupId", bom.getGroupId()); model.put("artifactId", bom.getArtifactId()); model.put("versionToken", (bom.getVersionProperty() != null) ? "${" + computeVersionProperty(request, bom.getVersionProperty()) + "}" : bom.getVersion()); return model; }
private static JsonNode mapBom(BillOfMaterials bom) { ObjectNode node = nodeFactory.objectNode(); node.put("groupId", bom.getGroupId()); node.put("artifactId", bom.getArtifactId()); if (bom.getVersion() != null) { node.put("version", bom.getVersion()); } if (bom.getRepositories() != null) { ArrayNode array = nodeFactory.arrayNode(); bom.getRepositories().forEach(array::add); node.set("repositories", array); } return node; }
@Test void resolveRangeOverrideAndMapping() { BillOfMaterials bom = BillOfMaterials.create("com.example", "bom", "1.0.0"); bom.setVersionProperty("example.version"); bom.getMappings().add(Mapping.create("[1.2.0.RELEASE,1.3.0.M1)", "1.1.0")); bom.validate(); BillOfMaterials resolved = bom.resolve(Version.parse("1.2.3.RELEASE")); assertThat(resolved.getGroupId()).isEqualTo("com.example"); assertThat(resolved.getArtifactId()).isEqualTo("bom"); assertThat(resolved.getVersion()).isEqualTo("1.1.0"); assertThat(resolved.getVersionProperty().toStandardFormat()) .isEqualTo("example.version"); }
public PomAssert hasBom(String groupId, String artifactId, String version) { String id = generateBomId(groupId, artifactId); assertThat(this.boms).containsKey(id); BillOfMaterials bom = this.boms.get(id); assertThat(bom.getVersion()).isEqualTo(version); return this; }
@Test void resolveSimpleRange() { BillOfMaterials bom = BillOfMaterials.create("com.example", "bom", "1.0.0"); bom.setVersionProperty("bom.version"); bom.getRepositories().add("repo-main"); bom.getAdditionalBoms().add("bom-main"); bom.getMappings().add(Mapping.create("[1.2.0.RELEASE,1.3.0.M1)", "1.1.0")); bom.validate(); BillOfMaterials resolved = bom.resolve(Version.parse("1.2.3.RELEASE")); assertThat(resolved.getGroupId()).isEqualTo("com.example"); assertThat(resolved.getArtifactId()).isEqualTo("bom"); assertThat(resolved.getVersion()).isEqualTo("1.1.0"); assertThat(resolved.getVersionProperty().toStandardFormat()) .isEqualTo("bom.version"); assertThat(resolved.getRepositories()).hasSize(1); assertThat(resolved.getRepositories().get(0)).isEqualTo("repo-main"); assertThat(resolved.getAdditionalBoms()).hasSize(1); assertThat(resolved.getAdditionalBoms().get(0)).isEqualTo("bom-main"); }
@Test void mergeMetadataWithBom() { InitializrMetadata metadata = InitializrMetadataBuilder.create() .withInitializrMetadata( new ClassPathResource("metadata/config/test-bom.json")) .build(); Map<String, BillOfMaterials> boms = metadata.getConfiguration().getEnv() .getBoms(); assertThat(boms).hasSize(2); BillOfMaterials myBom = boms.get("my-bom"); assertThat(myBom).isNotNull(); assertThat(myBom.getGroupId()).isEqualTo("org.acme"); assertThat(myBom.getArtifactId()).isEqualTo("my-bom"); assertThat(myBom.getVersion()).isEqualTo("2.1.1.RELEASE"); BillOfMaterials anotherBom = boms.get("another-bom"); assertThat(anotherBom).isNotNull(); assertThat(anotherBom.getGroupId()).isEqualTo("org.acme"); assertThat(anotherBom.getArtifactId()).isEqualTo("another-bom"); assertThat(anotherBom.getVersion()).isEqualTo("4.5.6.RELEASE"); }
@Test void resolveRangeOverride() { BillOfMaterials bom = BillOfMaterials.create("com.example", "bom", "1.0.0"); bom.getRepositories().add("repo-main"); bom.getAdditionalBoms().add("bom-main"); Mapping mapping = Mapping.create("[1.2.0.RELEASE,1.3.0.M1)", "1.1.0", "repo-foo"); mapping.getAdditionalBoms().add("bom-foo"); bom.getMappings().add(mapping); bom.validate(); BillOfMaterials resolved = bom.resolve(Version.parse("1.2.3.RELEASE")); assertThat(resolved.getGroupId()).isEqualTo("com.example"); assertThat(resolved.getArtifactId()).isEqualTo("bom"); assertThat(resolved.getVersion()).isEqualTo("1.1.0"); assertThat(resolved.getVersionProperty()).isNull(); assertThat(resolved.getRepositories()).hasSize(1); assertThat(resolved.getRepositories().get(0)).isEqualTo("repo-foo"); assertThat(resolved.getAdditionalBoms()).hasSize(1); assertThat(resolved.getAdditionalBoms().get(0)).isEqualTo("bom-foo"); }
@Test void repoFromBomAccordingToVersion() { DependencyMetadata dependencyMetadata = testRepoFromBomAccordingToVersion( "1.0.9.RELEASE"); assertThat(dependencyMetadata.getBootVersion()) .isEqualTo(Version.parse("1.0.9.RELEASE")); assertThat(dependencyMetadata.getDependencies()).hasSize(3); assertThat(dependencyMetadata.getRepositories()).hasSize(2); assertThat(dependencyMetadata.getBoms()).hasSize(1); assertThat(dependencyMetadata.getRepositories().get("repo-foo").getName()) .isEqualTo("foo"); assertThat(dependencyMetadata.getRepositories().get("repo-bar").getName()) .isEqualTo("bar"); assertThat(dependencyMetadata.getBoms().get("bom-foo").getGroupId()) .isEqualTo("org.foo"); assertThat(dependencyMetadata.getBoms().get("bom-foo").getArtifactId()) .isEqualTo("bom"); assertThat(dependencyMetadata.getBoms().get("bom-foo").getVersion()) .isEqualTo("2.0.0.RELEASE"); }
@Test void resolveSimpleRangeWithGroupIdArtifactId() { BillOfMaterials bom = BillOfMaterials.create("com.example", "bom", "1.0.0"); bom.setVersionProperty("bom.version"); bom.getRepositories().add("repo-main"); bom.getAdditionalBoms().add("bom-main"); Mapping mapping = Mapping.create("[1.2.0.RELEASE,1.3.0.M1)", "1.1.0"); mapping.setGroupId("com.example.override"); mapping.setArtifactId("bom-override"); bom.getMappings().add(mapping); bom.validate(); BillOfMaterials resolved = bom.resolve(Version.parse("1.2.3.RELEASE")); assertThat(resolved.getGroupId()).isEqualTo("com.example.override"); assertThat(resolved.getArtifactId()).isEqualTo("bom-override"); assertThat(resolved.getVersion()).isEqualTo("1.1.0"); assertThat(resolved.getVersionProperty().toStandardFormat()) .isEqualTo("bom.version"); assertThat(resolved.getRepositories()).hasSize(1); assertThat(resolved.getRepositories().get(0)).isEqualTo("repo-main"); assertThat(resolved.getAdditionalBoms()).hasSize(1); assertThat(resolved.getAdditionalBoms().get(0)).isEqualTo("bom-main"); }
@Test void repoFromBomAccordingToAnotherVersion() { DependencyMetadata dependencyMetadata = testRepoFromBomAccordingToVersion( "1.1.5.RELEASE"); assertThat(dependencyMetadata.getBootVersion()) .isEqualTo(Version.parse("1.1.5.RELEASE")); assertThat(dependencyMetadata.getDependencies()).hasSize(3); assertThat(dependencyMetadata.getRepositories()).hasSize(2); assertThat(dependencyMetadata.getBoms()).hasSize(1); assertThat(dependencyMetadata.getRepositories().get("repo-foo").getName()) .isEqualTo("foo"); assertThat(dependencyMetadata.getRepositories().get("repo-biz").getName()) .isEqualTo("biz"); assertThat(dependencyMetadata.getBoms().get("bom-foo").getGroupId()) .isEqualTo("org.foo"); assertThat(dependencyMetadata.getBoms().get("bom-foo").getArtifactId()) .isEqualTo("bom"); assertThat(dependencyMetadata.getBoms().get("bom-foo").getVersion()) .isEqualTo("3.0.0.RELEASE"); }
@Test void resolveRangeWithVariablePatch() { BillOfMaterials bom = BillOfMaterials.create("com.example", "bom", "1.0.0"); bom.getMappings().add(Mapping.create("[1.3.0.RELEASE,1.3.x.RELEASE]", "1.1.0")); bom.getMappings().add(BillOfMaterials.Mapping .create("[1.3.x.BUILD-SNAPSHOT,1.4.0.RELEASE)", "1.1.1-SNAPSHOT")); bom.validate(); bom.updateVersionRange(new VersionParser(Arrays.asList( Version.parse("1.3.8.RELEASE"), Version.parse("1.3.9.BUILD-SNAPSHOT")))); assertThat(bom.resolve(Version.parse("1.3.8.RELEASE")).getVersion()) .isEqualTo("1.1.0"); assertThat(bom.resolve(Version.parse("1.3.9.RELEASE")).getVersion()) .isEqualTo("1.1.1-SNAPSHOT"); bom.updateVersionRange(new VersionParser(Arrays.asList( Version.parse("1.3.9.RELEASE"), Version.parse("1.3.10.BUILD-SNAPSHOT")))); assertThat(bom.resolve(Version.parse("1.3.8.RELEASE")).getVersion()) .isEqualTo("1.1.0"); assertThat(bom.resolve(Version.parse("1.3.9.RELEASE")).getVersion()) .isEqualTo("1.1.0"); }
@Test void addBomAndRemoveDuplicates() { Dependency first = Dependency.withId("first", "org.foo", "first"); first.setBom("bom-foo"); Dependency second = Dependency.withId("second", "org.foo", "second"); Dependency third = Dependency.withId("third", "org.foo", "third"); third.setBom("bom-foo"); BillOfMaterials bom = BillOfMaterials.create("org.foo", "bom"); bom.getMappings().add(BillOfMaterials.Mapping .create("[1.0.0.RELEASE, 1.1.8.RELEASE)", "1.0.0.RELEASE")); bom.getMappings() .add(BillOfMaterials.Mapping.create("1.1.8.RELEASE", "2.0.0.RELEASE")); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addBom("bom-foo", bom).addDependencyGroup("test", first, second, third) .build(); DependencyMetadata dependencyMetadata = this.provider.get(metadata, Version.parse("1.1.5.RELEASE")); assertThat(dependencyMetadata.getDependencies()).hasSize(3); assertThat(dependencyMetadata.getRepositories()).isEmpty(); assertThat(dependencyMetadata.getBoms()).hasSize(1); assertThat(dependencyMetadata.getBoms().get("bom-foo").getGroupId()) .isEqualTo("org.foo"); assertThat(dependencyMetadata.getBoms().get("bom-foo").getArtifactId()) .isEqualTo("bom"); assertThat(dependencyMetadata.getBoms().get("bom-foo").getVersion()) .isEqualTo("1.0.0.RELEASE"); }
metadata.updateSpringBootVersions(bootVersions); assertThat(metadata.getConfiguration().getEnv().getBoms().get("foo-bom") .resolve(Version.parse("1.3.6.RELEASE")).getVersion()).isEqualTo("1.0.0"); assertThat(metadata.getConfiguration().getEnv().getBoms().get("foo-bom") .resolve(Version.parse("1.3.7.BUILD-SNAPSHOT")).getVersion()) .isEqualTo("1.1.0-BUILD-SNAPSHOT"); assertThat(metadata.getDependencies().get("bar")