/** * Return the element with the specified id or {@code null} if no such element exists. * @param id the ID of the element to find * @return the element or {@code null} */ public DefaultMetadataElement get(String id) { return this.content.stream().filter((it) -> id.equals(it.getId())).findFirst() .orElse(null); }
/** * Return the boot versions parsed by this instance. * @return the versions */ public List<DefaultMetadataElement> getBootVersions() { ArrayNode releases = (ArrayNode) this.content.get("projectReleases"); List<DefaultMetadataElement> list = new ArrayList<>(); for (JsonNode node : releases) { DefaultMetadataElement version = new DefaultMetadataElement(); version.setId(node.get("version").textValue()); String name = node.get("versionDisplayName").textValue(); version.setName( node.get("snapshot").booleanValue() ? name + " (SNAPSHOT)" : name); version.setDefault(node.get("current").booleanValue()); list.add(version); } return list; }
@Test void readAvailableVersions() throws IOException { this.server.expect(requestTo("https://spring.io/project_metadata/spring-boot")) .andRespond(withSuccess( new ClassPathResource("metadata/sagan/spring-boot.json"), MediaType.APPLICATION_JSON)); List<DefaultMetadataElement> versions = new SpringBootMetadataReader( this.objectMapper, this.restTemplate, this.metadata.getConfiguration().getEnv().getSpringBootMetadataUrl()) .getBootVersions(); assertThat(versions).as("spring boot versions should not be null").isNotNull(); AtomicBoolean defaultFound = new AtomicBoolean(false); versions.forEach((it) -> { assertThat(it.getId()).as("Id must be set").isNotNull(); assertThat(it.getName()).as("Name must be set").isNotNull(); if (it.isDefault()) { if (defaultFound.get()) { fail("One default version was already found " + it.getId()); } defaultFound.set(true); } }); this.server.verify(); }
public static DefaultMetadataElement create(String id, String name, boolean defaultValue) { return new DefaultMetadataElement(id, name, defaultValue); }
protected void updateInitializrMetadata(InitializrMetadata metadata) { List<DefaultMetadataElement> bootVersions = fetchBootVersions(); if (bootVersions != null && !bootVersions.isEmpty()) { if (bootVersions.stream().noneMatch(DefaultMetadataElement::isDefault)) { // No default specified bootVersions.get(0).setDefault(true); } metadata.updateSpringBootVersions(bootVersions); } }
@Test void defaultType() { SingleSelectCapability capability = new SingleSelectCapability("test"); capability.getContent().add(DefaultMetadataElement.create("foo", false)); DefaultMetadataElement second = DefaultMetadataElement.create("bar", true); capability.getContent().add(second); assertThat(capability.getDefault()).isEqualTo(second); }
public static DefaultMetadataElement create(String id, boolean defaultValue) { return new DefaultMetadataElement(id, defaultValue); }
public InitializrMetadataTestBuilder addPackaging(String id, boolean defaultValue) { this.builder.withCustomizer((it) -> { DefaultMetadataElement packaging = new DefaultMetadataElement(); packaging.setId(id); packaging.setName(id); packaging.setDefault(defaultValue); it.getPackagings().getContent().add(packaging); }); return this; }
private static String defaultId( Defaultable<? extends DefaultMetadataElement> element) { DefaultMetadataElement defaultValue = element.getDefault(); return (defaultValue != null) ? defaultValue.getId() : null; }
@Test void mergeAddEntry() { SingleSelectCapability capability = new SingleSelectCapability("test"); DefaultMetadataElement foo = DefaultMetadataElement.create("foo", false); capability.getContent().add(foo); SingleSelectCapability anotherCapability = new SingleSelectCapability("test"); DefaultMetadataElement bar = DefaultMetadataElement.create("bar", false); anotherCapability.getContent().add(bar); capability.merge(anotherCapability); assertThat(capability.getContent()).hasSize(2); assertThat(capability.get("foo")).isEqualTo(foo); assertThat(capability.get("bar")).isEqualTo(bar); }
public InitializrMetadataTestBuilder addJavaVersion(String version, boolean defaultValue) { this.builder.withCustomizer((it) -> { DefaultMetadataElement element = new DefaultMetadataElement(); element.setId(version); element.setName(version); element.setDefault(defaultValue); it.getJavaVersions().getContent().add(element); }); return this; }
@Override public void merge(List<DefaultMetadataElement> otherContent) { otherContent.forEach((it) -> { if (get(it.getId()) == null) { this.content.add(it); } }); }
public InitializrMetadataTestBuilder addLanguage(String id, boolean defaultValue) { this.builder.withCustomizer((it) -> { DefaultMetadataElement element = new DefaultMetadataElement(); element.setId(id); element.setName(id); element.setDefault(defaultValue); it.getLanguages().getContent().add(element); }); return this; }
protected void singleSelect(ObjectNode parent, SingleSelectCapability capability) { ObjectNode single = nodeFactory.objectNode(); single.put("type", capability.getType().getName()); DefaultMetadataElement defaultType = capability.getDefault(); if (defaultType != null) { single.put("default", defaultType.getId()); } ArrayNode values = nodeFactory.arrayNode(); values.addAll(capability.getContent().stream().map(this::mapValue) .collect(Collectors.toList())); single.set("values", values); parent.set(capability.getId(), single); }
public InitializrMetadataTestBuilder addBootVersion(String id, boolean defaultValue) { this.builder.withCustomizer((it) -> { DefaultMetadataElement element = new DefaultMetadataElement(); element.setId(id); element.setName(id); element.setDefault(defaultValue); it.getBootVersions().getContent().add(element); }); return this; }
/** * Update the available Spring Boot versions with the specified capabilities. * @param versionsMetadata the Spring Boot boot versions metadata to use */ public void updateSpringBootVersions(List<DefaultMetadataElement> versionsMetadata) { this.bootVersions.getContent().clear(); this.bootVersions.getContent().addAll(versionsMetadata); List<Version> bootVersions = this.bootVersions.getContent().stream() .map((it) -> Version.parse(it.getId())).collect(Collectors.toList()); VersionParser parser = new VersionParser(bootVersions); this.dependencies.updateVersionRange(parser); this.configuration.getEnv().getBoms().values() .forEach((it) -> it.updateVersionRange(parser)); this.configuration.getEnv().getKotlin().updateVersionRange(parser); }
private ResponseEntity<String> dependenciesFor(InitializrMetadataVersion version, String bootVersion) { InitializrMetadata metadata = this.metadataProvider.get(); Version v = (bootVersion != null) ? Version.parse(bootVersion) : Version.parse(metadata.getBootVersions().getDefault().getId()); DependencyMetadata dependencyMetadata = this.dependencyMetadataProvider .get(metadata, v); String content = new DependencyMetadataV21JsonMapper().write(dependencyMetadata); return ResponseEntity.ok().contentType(version.getMediaType()) .eTag(createUniqueId(content)) .cacheControl(CacheControl.maxAge(7, TimeUnit.DAYS)).body(content); }