private static ObjectNode mapDependency(DependencyItem item) { ObjectNode node = JsonNodeFactory.instance.objectNode(); Dependency dependency = item.dependency; node.put("id", dependency.getId()); node.put("name", dependency.getName()); node.put("group", item.group); if (dependency.getDescription() != null) { node.put("description", dependency.getDescription()); } if (dependency.getWeight() > 0) { node.put("weight", dependency.getWeight()); } if (!CollectionUtils.isEmpty(dependency.getKeywords()) || !CollectionUtils.isEmpty(dependency.getAliases())) { List<String> all = new ArrayList<>(dependency.getKeywords()); all.addAll(dependency.getAliases()); node.put("keywords", StringUtils.collectionToCommaDelimitedString(all)); } return node; }
private static void validateResolvedWebDependency(Dependency dependency, String expectedGroupId, String expectedArtifactId, String expectedVersion) { validateResolvedDependency(dependency, "web", expectedGroupId, expectedArtifactId, expectedVersion); assertThat(dependency.getKeywords()).hasSize(2); assertThat(dependency.getAliases()).hasSize(1); assertThat(dependency.getFacets()).hasSize(1); }
@Test void addDependencyWithAliases() { Dependency dependency = Dependency.withId("first"); dependency.getAliases().add("alias1"); dependency.getAliases().add("alias2"); DependenciesCapability capability = createDependenciesCapability("foo", dependency); capability.validate(); assertThat(capability.get("first")).isSameAs(dependency); assertThat(capability.get("alias1")).isSameAs(dependency); assertThat(capability.get("alias2")).isSameAs(dependency); }
@Test void aliasClashWithAnotherDependency() { Dependency dependency = Dependency.withId("first"); dependency.getAliases().add("alias1"); dependency.getAliases().add("alias2"); Dependency dependency2 = Dependency.withId("alias2"); DependenciesCapability capability = new DependenciesCapability(); capability.getContent().add(createDependencyGroup("foo", dependency)); capability.getContent().add(createDependencyGroup("bar", dependency2)); assertThatIllegalArgumentException().isThrownBy(capability::validate) .withMessageContaining("alias2"); }
private void index() { this.indexedDependencies.clear(); this.content.forEach((group) -> group.content.forEach((dependency) -> { // Apply defaults if (dependency.getVersionRange() == null && group.getVersionRange() != null) { dependency.setVersionRange(group.getVersionRange()); } if (dependency.getBom() == null && group.getBom() != null) { dependency.setBom(group.getBom()); } if (dependency.getRepository() == null && group.getRepository() != null) { dependency.setRepository(group.getRepository()); } dependency.resolve(); indexDependency(dependency.getId(), dependency); for (String alias : dependency.getAliases()) { indexDependency(alias, dependency); } })); }
@Test void resolveMatchingVersionMapping() { Dependency dependency = Dependency.withId("web", null, null, "0.3.0.RELEASE"); dependency.setDescription("A web dependency"); dependency.getKeywords().addAll(Arrays.asList("foo", "bar")); dependency.getAliases().add("the-web"); dependency.getFacets().add("web"); dependency.getMappings().add(Dependency.Mapping .create("[1.1.0.RELEASE, 1.2.0.RELEASE)", null, null, "0.1.0.RELEASE")); dependency.getMappings().add(Dependency.Mapping .create("[1.2.0.RELEASE, 1.3.0.RELEASE)", null, null, "0.2.0.RELEASE")); dependency.resolve(); validateResolvedWebDependency(dependency.resolve(Version.parse("1.1.5.RELEASE")), "org.springframework.boot", "spring-boot-starter-web", "0.1.0.RELEASE"); validateResolvedWebDependency(dependency.resolve(Version.parse("1.2.0.RELEASE")), "org.springframework.boot", "spring-boot-starter-web", "0.2.0.RELEASE"); validateResolvedWebDependency(dependency.resolve(Version.parse("2.1.3.M1")), "org.springframework.boot", "spring-boot-starter-web", "0.3.0.RELEASE"); // default }
@Test void resolveMatchArtifactMapping() { Dependency dependency = Dependency.withId("web", null, null, "0.3.0.RELEASE"); dependency.setDescription("A web dependency"); dependency.getKeywords().addAll(Arrays.asList("foo", "bar")); dependency.getAliases().add("the-web"); dependency.getFacets().add("web"); dependency.getMappings().add(Dependency.Mapping .create("[1.1.0.RELEASE, 1.2.0.RELEASE)", "org.spring.boot", null, null)); dependency.getMappings().add(Dependency.Mapping .create("[1.2.0.RELEASE, 1.3.0.RELEASE)", null, "starter-web", null)); dependency.resolve(); validateResolvedWebDependency(dependency.resolve(Version.parse("1.1.5.RELEASE")), "org.spring.boot", "spring-boot-starter-web", "0.3.0.RELEASE"); validateResolvedWebDependency(dependency.resolve(Version.parse("1.2.0.RELEASE")), "org.springframework.boot", "starter-web", "0.3.0.RELEASE"); validateResolvedWebDependency(dependency.resolve(Version.parse("2.1.3.M1")), "org.springframework.boot", "spring-boot-starter-web", "0.3.0.RELEASE"); // default }
dependency.setDescription("A web dependency"); dependency.getKeywords().addAll(Arrays.asList("foo", "bar")); dependency.getAliases().add("the-web"); dependency.getFacets().add("web"); dependency.getMappings().add(Dependency.Mapping