Skip to content

Commit 49d0fe1

Browse files
luccnunesmhalbritter
authored andcommitted
Refactor DependencyMetadataV21JsonMapper
See gh-1628 Signed-off-by: luccnunes <165665074+luccnunes@users.noreply.github.com>
1 parent 8f1c68b commit 49d0fe1

File tree

1 file changed

+43
-39
lines changed

1 file changed

+43
-39
lines changed

initializr-web/src/main/java/io/spring/initializr/web/mapper/DependencyMetadataV21JsonMapper.java

Lines changed: 43 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
package io.spring.initializr.web.mapper;
1818

19+
import java.util.List;
1920
import java.util.Map;
2021
import java.util.stream.Collectors;
21-
2222
import com.fasterxml.jackson.databind.JsonNode;
2323
import com.fasterxml.jackson.databind.node.ArrayNode;
2424
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
@@ -41,21 +41,9 @@ public class DependencyMetadataV21JsonMapper implements DependencyMetadataJsonMa
4141
public String write(DependencyMetadata metadata) {
4242
ObjectNode parent = nodeFactory.objectNode();
4343
parent.put("bootVersion", metadata.getBootVersion().toString());
44-
parent.set("dependencies",
45-
mapNode(metadata.getDependencies()
46-
.entrySet()
47-
.stream()
48-
.collect(Collectors.toMap(Map.Entry::getKey, (entry) -> mapDependency(entry.getValue())))));
49-
parent.set("repositories",
50-
mapNode(metadata.getRepositories()
51-
.entrySet()
52-
.stream()
53-
.collect(Collectors.toMap(Map.Entry::getKey, (entry) -> mapRepository(entry.getValue())))));
54-
parent.set("boms",
55-
mapNode(metadata.getBoms()
56-
.entrySet()
57-
.stream()
58-
.collect(Collectors.toMap(Map.Entry::getKey, (entry) -> mapBom(entry.getValue())))));
44+
parent.set("dependencies", mapDependencies(metadata.getDependencies()));
45+
parent.set("repositories", mapRepositories(metadata.getRepositories()));
46+
parent.set("boms", mapBoms(metadata.getBoms()));
5947
customizeParent(parent, metadata);
6048
return parent.toString();
6149
}
@@ -68,50 +56,66 @@ public String write(DependencyMetadata metadata) {
6856
protected void customizeParent(ObjectNode parent, DependencyMetadata metadata) {
6957
}
7058

71-
private static JsonNode mapDependency(Dependency dep) {
59+
private static ObjectNode mapDependency(Dependency dep) {
7260
ObjectNode node = nodeFactory.objectNode();
7361
node.put("groupId", dep.getGroupId());
7462
node.put("artifactId", dep.getArtifactId());
75-
if (dep.getVersion() != null) {
76-
node.put("version", dep.getVersion());
77-
}
7863
node.put("scope", dep.getScope());
79-
if (dep.getBom() != null) {
80-
node.put("bom", dep.getBom());
81-
}
82-
if (dep.getRepository() != null) {
83-
node.put("repository", dep.getRepository());
84-
}
64+
addIfNotNull(node, "version", dep.getVersion());
65+
addIfNotNull(node, "bom", dep.getBom());
66+
addIfNotNull(node, "repository", dep.getRepository());
8567
return node;
8668
}
8769

70+
private static void addIfNotNull(ObjectNode node, String key, String value) {
71+
if (value != null) {
72+
node.put(key, value);
73+
}
74+
}
75+
8876
private static JsonNode mapRepository(Repository repo) {
8977
ObjectNode node = nodeFactory.objectNode();
9078
node.put("name", repo.getName())
91-
.put("url", (repo.getUrl() != null) ? repo.getUrl().toString() : null)
92-
.put("snapshotEnabled", repo.isSnapshotsEnabled());
79+
.put("url", (repo.getUrl() != null) ? repo.getUrl().toString() : null)
80+
.put("snapshotEnabled", repo.isSnapshotsEnabled());
9381
return node;
9482
}
9583

96-
private static JsonNode mapBom(BillOfMaterials bom) {
84+
private static ObjectNode mapBom(BillOfMaterials bom) {
9785
ObjectNode node = nodeFactory.objectNode();
9886
node.put("groupId", bom.getGroupId());
9987
node.put("artifactId", bom.getArtifactId());
100-
if (bom.getVersion() != null) {
101-
node.put("version", bom.getVersion());
102-
}
103-
if (bom.getRepositories() != null) {
104-
ArrayNode array = nodeFactory.arrayNode();
105-
bom.getRepositories().forEach(array::add);
106-
node.set("repositories", array);
107-
}
88+
addIfNotNull(node, "version", bom.getVersion());
89+
addArrayIfNotNull(node, bom.getRepositories());
10890
return node;
10991
}
11092

111-
private static JsonNode mapNode(Map<String, JsonNode> content) {
93+
private static void addArrayIfNotNull(ObjectNode node, List<String> values) {
94+
if (values != null && !values.isEmpty()) {
95+
ArrayNode arrayNode = nodeFactory.arrayNode();
96+
values.forEach(arrayNode::add);
97+
node.set("repositories", arrayNode);
98+
}
99+
}
100+
101+
private static ObjectNode mapNode(Map<String, JsonNode> content) {
112102
ObjectNode node = nodeFactory.objectNode();
113103
content.forEach(node::set);
114104
return node;
115105
}
116106

117-
}
107+
private ObjectNode mapDependencies(Map<String, Dependency> dependencies) {
108+
return mapNode(dependencies.entrySet().stream()
109+
.collect(Collectors.toMap(Map.Entry::getKey, entry -> mapDependency(entry.getValue()))));
110+
}
111+
112+
private ObjectNode mapRepositories(Map<String, Repository> repositories) {
113+
return mapNode(repositories.entrySet().stream()
114+
.collect(Collectors.toMap(Map.Entry::getKey, entry -> mapRepository(entry.getValue()))));
115+
}
116+
117+
private ObjectNode mapBoms(Map<String, BillOfMaterials> boms) {
118+
return mapNode(boms.entrySet().stream()
119+
.collect(Collectors.toMap(Map.Entry::getKey, entry -> mapBom(entry.getValue()))));
120+
}
121+
}

0 commit comments

Comments
 (0)