diff --git a/initializr-web/src/main/java/io/spring/initializr/web/mapper/InitializrMetadataV2JsonMapper.java b/initializr-web/src/main/java/io/spring/initializr/web/mapper/InitializrMetadataV2JsonMapper.java index 79744de1..4777274f 100644 --- a/initializr-web/src/main/java/io/spring/initializr/web/mapper/InitializrMetadataV2JsonMapper.java +++ b/initializr-web/src/main/java/io/spring/initializr/web/mapper/InitializrMetadataV2JsonMapper.java @@ -84,7 +84,7 @@ public class InitializrMetadataV2JsonMapper implements InitializrMetadataJsonMap singleSelect(delegate, metadata.getPackagings()); singleSelect(delegate, metadata.getJavaVersions()); singleSelect(delegate, metadata.getLanguages()); - singleSelect(delegate, metadata.getBootVersions(), this::mapVersionMetadata); + singleSelect(delegate, metadata.getBootVersions(), this::mapVersionMetadata, this::formatVersion); text(delegate, metadata.getGroupId()); text(delegate, metadata.getArtifactId()); text(delegate, metadata.getVersion()); @@ -138,19 +138,30 @@ public class InitializrMetadataV2JsonMapper implements InitializrMetadataJsonMap } protected void singleSelect(ObjectNode parent, SingleSelectCapability capability) { - singleSelect(parent, capability, this::mapValue); + singleSelect(parent, capability, this::mapValue, (id) -> id); + } + + /** + * Map a {@link SingleSelectCapability} invoking the specified {@code valueMapper}. + * @param parent the parent node + * @param capability the capability to map + * @param valueMapper the function to invoke to transform one value of the capability + * @deprecated in favor of + * {@link #singleSelect(ObjectNode, SingleSelectCapability, Function, Function)} + */ + @Deprecated + protected void singleSelect(ObjectNode parent, SingleSelectCapability capability, + Function valueMapper) { + singleSelect(parent, capability, valueMapper, (id) -> id); } protected void singleSelect(ObjectNode parent, SingleSelectCapability capability, - Function valueMapper) { + Function valueMapper, Function defaultMapper) { ObjectNode single = nodeFactory.objectNode(); single.put("type", capability.getType().getName()); DefaultMetadataElement defaultType = capability.getDefault(); if (defaultType != null) { - ObjectNode defaultNode = valueMapper.apply(defaultType); - String defaultValue = (defaultNode.get("id") != null) ? defaultNode.get("id").textValue() - : defaultType.getId(); - single.put("default", defaultValue); + single.put("default", defaultMapper.apply(defaultType.getId())); } ArrayNode values = nodeFactory.arrayNode(); values.addAll(capability.getContent().stream().map(valueMapper).collect(Collectors.toList())); diff --git a/initializr-web/src/test/java/io/spring/initializr/web/mapper/InitializrMetadataV21JsonMapperTests.java b/initializr-web/src/test/java/io/spring/initializr/web/mapper/InitializrMetadataV21JsonMapperTests.java index 5b4c303d..15c95d32 100755 --- a/initializr-web/src/test/java/io/spring/initializr/web/mapper/InitializrMetadataV21JsonMapperTests.java +++ b/initializr-web/src/test/java/io/spring/initializr/web/mapper/InitializrMetadataV21JsonMapperTests.java @@ -102,10 +102,9 @@ class InitializrMetadataV21JsonMapperTests { .addBootVersion("2.5.0-M2", false).addBootVersion("2.4.2", true).build(); String json = this.jsonMapper.write(metadata, null); JsonNode result = objectMapper.readTree(json); - JsonNode bootVersion = result.get("bootVersion"); - JsonNode defaultNode = bootVersion.get("default"); - assertThat(defaultNode.textValue()).isEqualTo("2.4.2.RELEASE"); - JsonNode versions = bootVersion.get("values"); + JsonNode platformVersions = result.get("bootVersion"); + assertThat(platformVersions.get("default").textValue()).isEqualTo("2.4.2.RELEASE"); + JsonNode versions = platformVersions.get("values"); assertThat(versions).hasSize(3); assertVersionMetadata(versions.get(0), "2.5.0.BUILD-SNAPSHOT", "2.5.0-SNAPSHOT"); assertVersionMetadata(versions.get(1), "2.5.0.M2", "2.5.0-M2"); diff --git a/initializr-web/src/test/java/io/spring/initializr/web/mapper/InitializrMetadataV22JsonMapperTests.java b/initializr-web/src/test/java/io/spring/initializr/web/mapper/InitializrMetadataV22JsonMapperTests.java index 0c5b64fb..df291a12 100755 --- a/initializr-web/src/test/java/io/spring/initializr/web/mapper/InitializrMetadataV22JsonMapperTests.java +++ b/initializr-web/src/test/java/io/spring/initializr/web/mapper/InitializrMetadataV22JsonMapperTests.java @@ -62,7 +62,9 @@ class InitializrMetadataV22JsonMapperTests { .addBootVersion("2.5.0-M2", false).addBootVersion("2.4.2", true).build(); String json = this.jsonMapper.write(metadata, null); JsonNode result = objectMapper.readTree(json); - JsonNode versions = result.get("bootVersion").get("values"); + JsonNode platformVersions = result.get("bootVersion"); + assertThat(platformVersions.get("default").textValue()).isEqualTo("2.4.2"); + JsonNode versions = platformVersions.get("values"); assertThat(versions).hasSize(3); assertVersionMetadata(versions.get(0), "2.5.0-SNAPSHOT", "2.5.0-SNAPSHOT"); assertVersionMetadata(versions.get(1), "2.5.0-M2", "2.5.0-M2");