@Override public String write(DependencyMetadata metadata) { ObjectNode json = nodeFactory.objectNode(); json.put("bootVersion", metadata.getBootVersion().toString()); json.set("dependencies", mapNode(metadata.getDependencies().entrySet().stream() .collect(Collectors.toMap(Map.Entry::getKey, (entry) -> mapDependency(entry.getValue()))))); json.set("repositories", mapNode(metadata.getRepositories().entrySet().stream() .collect(Collectors.toMap(Map.Entry::getKey, (entry) -> mapRepository(entry.getValue()))))); json.set("boms", mapNode(metadata.getBoms().entrySet().stream().collect(Collectors .toMap(Map.Entry::getKey, (entry) -> mapBom(entry.getValue()))))); return json.toString(); }
@Test void filterDependencies() { Dependency first = Dependency.withId("first", "org.foo", "first"); first.setVersionRange("2.1.4.RELEASE"); Dependency second = Dependency.withId("second", "org.foo", "second"); Dependency third = Dependency.withId("third", "org.foo", "third"); third.setVersionRange("2.1.8.RELEASE"); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("test", first, second, third).build(); DependencyMetadata dependencyMetadata = this.provider.get(metadata, Version.parse("2.1.5.RELEASE")); assertThat(dependencyMetadata.getDependencies()).hasSize(2); assertThat(dependencyMetadata.getRepositories()).isEmpty(); assertThat(dependencyMetadata.getBoms()).isEmpty(); assertThat(dependencyMetadata.getDependencies().get("first")).isSameAs(first); assertThat(dependencyMetadata.getDependencies().get("second")).isSameAs(second); }
return new DependencyMetadata(bootVersion, dependencies, repositories, boms);
@Test void resolveDependencies() { Dependency first = Dependency.withId("first", "org.foo", "first"); first.getMappings().add(Dependency.Mapping.create( "[1.0.0.RELEASE, 1.1.0.RELEASE)", "org.bar", "second", "0.1.0.RELEASE")); first.getMappings().add(Dependency.Mapping.create("1.1.0.RELEASE", "org.biz", "third", "0.2.0.RELEASE")); Dependency second = Dependency.withId("second", "org.foo", "second"); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("test", first, second).build(); DependencyMetadata dependencyMetadata = this.provider.get(metadata, Version.parse("1.0.5.RELEASE")); assertThat(dependencyMetadata.getDependencies()).hasSize(2); assertThat(dependencyMetadata.getDependencies().get("first").getGroupId()) .isEqualTo("org.bar"); assertThat(dependencyMetadata.getDependencies().get("first").getArtifactId()) .isEqualTo("second"); assertThat(dependencyMetadata.getDependencies().get("first").getVersion()) .isEqualTo("0.1.0.RELEASE"); DependencyMetadata anotherDependencyMetadata = this.provider.get(metadata, Version.parse("1.1.0.RELEASE")); assertThat(anotherDependencyMetadata.getDependencies()).hasSize(2); assertThat(anotherDependencyMetadata.getDependencies().get("first").getGroupId()) .isEqualTo("org.biz"); assertThat( anotherDependencyMetadata.getDependencies().get("first").getArtifactId()) .isEqualTo("third"); assertThat(anotherDependencyMetadata.getDependencies().get("first").getVersion()) .isEqualTo("0.2.0.RELEASE"); }
@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"); }
@Test void mapDependency() throws Exception { Dependency d = Dependency.withId("foo", "org.foo", "foo"); d.setRepository("my-repo"); d.setBom("my-bom"); Repository repository = new Repository(); repository.setName("foo-repo"); repository.setUrl(new URL("http://example.com/foo")); BillOfMaterials bom = BillOfMaterials.create("org.foo", "foo-bom", "1.0.0.RELEASE"); DependencyMetadata metadata = new DependencyMetadata( Version.parse("1.2.0.RELEASE"), Collections.singletonMap(d.getId(), d), Collections.singletonMap("repo-id", repository), Collections.singletonMap("bom-id", bom)); JSONObject content = new JSONObject(this.mapper.write(metadata)); assertThat(content.getJSONObject("dependencies").getJSONObject("foo") .getString("bom")).isEqualTo("my-bom"); assertThat(content.getJSONObject("dependencies").getJSONObject("foo") .getString("repository")).isEqualTo("my-repo"); assertThat(content.getJSONObject("repositories").getJSONObject("repo-id") .getString("name")).isEqualTo("foo-repo"); assertThat(content.getJSONObject("boms").getJSONObject("bom-id") .getString("artifactId")).isEqualTo("foo-bom"); assertThat(content.getJSONObject("boms").getJSONObject("bom-id") .getString("version")).isEqualTo("1.0.0.RELEASE"); }
@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 addRepoAndRemoveDuplicates() { Dependency first = Dependency.withId("first", "org.foo", "first"); first.setRepository("repo-foo"); Dependency second = Dependency.withId("second", "org.foo", "second"); Dependency third = Dependency.withId("third", "org.foo", "third"); third.setRepository("repo-foo"); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addRepository("repo-foo", "my-repo", "http://localhost", false) .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()).hasSize(1); assertThat(dependencyMetadata.getBoms()).isEmpty(); assertThat(dependencyMetadata.getRepositories().get("repo-foo")).isSameAs( metadata.getConfiguration().getEnv().getRepositories().get("repo-foo")); }
@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"); }