Polish "Format default platform version when serving metadata v2.1"

See gh-1113
This commit is contained in:
Stephane Nicoll
2020-08-11 14:11:00 +02:00
parent a202ce00ac
commit e41faacb77
3 changed files with 24 additions and 12 deletions

View File

@@ -84,7 +84,7 @@ public class InitializrMetadataV2JsonMapper implements InitializrMetadataJsonMap
singleSelect(delegate, metadata.getPackagings()); singleSelect(delegate, metadata.getPackagings());
singleSelect(delegate, metadata.getJavaVersions()); singleSelect(delegate, metadata.getJavaVersions());
singleSelect(delegate, metadata.getLanguages()); 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.getGroupId());
text(delegate, metadata.getArtifactId()); text(delegate, metadata.getArtifactId());
text(delegate, metadata.getVersion()); text(delegate, metadata.getVersion());
@@ -138,19 +138,30 @@ public class InitializrMetadataV2JsonMapper implements InitializrMetadataJsonMap
} }
protected void singleSelect(ObjectNode parent, SingleSelectCapability capability) { 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<MetadataElement, ObjectNode> valueMapper) {
singleSelect(parent, capability, valueMapper, (id) -> id);
} }
protected void singleSelect(ObjectNode parent, SingleSelectCapability capability, protected void singleSelect(ObjectNode parent, SingleSelectCapability capability,
Function<MetadataElement, ObjectNode> valueMapper) { Function<MetadataElement, ObjectNode> valueMapper, Function<String, String> defaultMapper) {
ObjectNode single = nodeFactory.objectNode(); ObjectNode single = nodeFactory.objectNode();
single.put("type", capability.getType().getName()); single.put("type", capability.getType().getName());
DefaultMetadataElement defaultType = capability.getDefault(); DefaultMetadataElement defaultType = capability.getDefault();
if (defaultType != null) { if (defaultType != null) {
ObjectNode defaultNode = valueMapper.apply(defaultType); single.put("default", defaultMapper.apply(defaultType.getId()));
String defaultValue = (defaultNode.get("id") != null) ? defaultNode.get("id").textValue()
: defaultType.getId();
single.put("default", defaultValue);
} }
ArrayNode values = nodeFactory.arrayNode(); ArrayNode values = nodeFactory.arrayNode();
values.addAll(capability.getContent().stream().map(valueMapper).collect(Collectors.toList())); values.addAll(capability.getContent().stream().map(valueMapper).collect(Collectors.toList()));

View File

@@ -102,10 +102,9 @@ class InitializrMetadataV21JsonMapperTests {
.addBootVersion("2.5.0-M2", false).addBootVersion("2.4.2", true).build(); .addBootVersion("2.5.0-M2", false).addBootVersion("2.4.2", true).build();
String json = this.jsonMapper.write(metadata, null); String json = this.jsonMapper.write(metadata, null);
JsonNode result = objectMapper.readTree(json); JsonNode result = objectMapper.readTree(json);
JsonNode bootVersion = result.get("bootVersion"); JsonNode platformVersions = result.get("bootVersion");
JsonNode defaultNode = bootVersion.get("default"); assertThat(platformVersions.get("default").textValue()).isEqualTo("2.4.2.RELEASE");
assertThat(defaultNode.textValue()).isEqualTo("2.4.2.RELEASE"); JsonNode versions = platformVersions.get("values");
JsonNode versions = bootVersion.get("values");
assertThat(versions).hasSize(3); assertThat(versions).hasSize(3);
assertVersionMetadata(versions.get(0), "2.5.0.BUILD-SNAPSHOT", "2.5.0-SNAPSHOT"); 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"); assertVersionMetadata(versions.get(1), "2.5.0.M2", "2.5.0-M2");

View File

@@ -62,7 +62,9 @@ class InitializrMetadataV22JsonMapperTests {
.addBootVersion("2.5.0-M2", false).addBootVersion("2.4.2", true).build(); .addBootVersion("2.5.0-M2", false).addBootVersion("2.4.2", true).build();
String json = this.jsonMapper.write(metadata, null); String json = this.jsonMapper.write(metadata, null);
JsonNode result = objectMapper.readTree(json); 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); assertThat(versions).hasSize(3);
assertVersionMetadata(versions.get(0), "2.5.0-SNAPSHOT", "2.5.0-SNAPSHOT"); assertVersionMetadata(versions.get(0), "2.5.0-SNAPSHOT", "2.5.0-SNAPSHOT");
assertVersionMetadata(versions.get(1), "2.5.0-M2", "2.5.0-M2"); assertVersionMetadata(versions.get(1), "2.5.0-M2", "2.5.0-M2");