Skip to content

Commit c8f3e29

Browse files
committed
Merge pull request #1628 from luccnunes
* pr/1628: Polish "Refactor DependencyMetadataV21JsonMapper" Refactor DependencyMetadataV21JsonMapper Closes gh-1628
2 parents 8f1c68b + 89c803b commit c8f3e29

File tree

1 file changed

+46
-35
lines changed

1 file changed

+46
-35
lines changed

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

Lines changed: 46 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
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;
2122

@@ -28,6 +29,8 @@
2829
import io.spring.initializr.metadata.DependencyMetadata;
2930
import io.spring.initializr.metadata.Repository;
3031

32+
import org.springframework.util.CollectionUtils;
33+
3134
/**
3235
* A {@link DependencyMetadataJsonMapper} handling the metadata format for v2.1.
3336
*
@@ -41,21 +44,9 @@ public class DependencyMetadataV21JsonMapper implements DependencyMetadataJsonMa
4144
public String write(DependencyMetadata metadata) {
4245
ObjectNode parent = nodeFactory.objectNode();
4346
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())))));
47+
parent.set("dependencies", mapDependencies(metadata.getDependencies()));
48+
parent.set("repositories", mapRepositories(metadata.getRepositories()));
49+
parent.set("boms", mapBoms(metadata.getBoms()));
5950
customizeParent(parent, metadata);
6051
return parent.toString();
6152
}
@@ -68,23 +59,23 @@ public String write(DependencyMetadata metadata) {
6859
protected void customizeParent(ObjectNode parent, DependencyMetadata metadata) {
6960
}
7061

71-
private static JsonNode mapDependency(Dependency dep) {
62+
private static ObjectNode mapDependency(Dependency dep) {
7263
ObjectNode node = nodeFactory.objectNode();
7364
node.put("groupId", dep.getGroupId());
7465
node.put("artifactId", dep.getArtifactId());
75-
if (dep.getVersion() != null) {
76-
node.put("version", dep.getVersion());
77-
}
7866
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-
}
67+
addIfNotNull(node, "version", dep.getVersion());
68+
addIfNotNull(node, "bom", dep.getBom());
69+
addIfNotNull(node, "repository", dep.getRepository());
8570
return node;
8671
}
8772

73+
private static void addIfNotNull(ObjectNode node, String key, String value) {
74+
if (value != null) {
75+
node.put(key, value);
76+
}
77+
}
78+
8879
private static JsonNode mapRepository(Repository repo) {
8980
ObjectNode node = nodeFactory.objectNode();
9081
node.put("name", repo.getName())
@@ -93,25 +84,45 @@ private static JsonNode mapRepository(Repository repo) {
9384
return node;
9485
}
9586

96-
private static JsonNode mapBom(BillOfMaterials bom) {
87+
private static ObjectNode mapBom(BillOfMaterials bom) {
9788
ObjectNode node = nodeFactory.objectNode();
9889
node.put("groupId", bom.getGroupId());
9990
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-
}
91+
addIfNotNull(node, "version", bom.getVersion());
92+
addArrayIfNotNull(node, bom.getRepositories());
10893
return node;
10994
}
11095

111-
private static JsonNode mapNode(Map<String, JsonNode> content) {
96+
private static void addArrayIfNotNull(ObjectNode node, List<String> values) {
97+
if (!CollectionUtils.isEmpty(values)) {
98+
ArrayNode arrayNode = nodeFactory.arrayNode();
99+
values.forEach(arrayNode::add);
100+
node.set("repositories", arrayNode);
101+
}
102+
}
103+
104+
private static ObjectNode mapNode(Map<String, JsonNode> content) {
112105
ObjectNode node = nodeFactory.objectNode();
113106
content.forEach(node::set);
114107
return node;
115108
}
116109

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

0 commit comments

Comments
 (0)