16
16
17
17
package io .spring .initializr .web .mapper ;
18
18
19
+ import java .util .List ;
19
20
import java .util .Map ;
20
21
import java .util .stream .Collectors ;
21
22
28
29
import io .spring .initializr .metadata .DependencyMetadata ;
29
30
import io .spring .initializr .metadata .Repository ;
30
31
32
+ import org .springframework .util .CollectionUtils ;
33
+
31
34
/**
32
35
* A {@link DependencyMetadataJsonMapper} handling the metadata format for v2.1.
33
36
*
@@ -41,21 +44,9 @@ public class DependencyMetadataV21JsonMapper implements DependencyMetadataJsonMa
41
44
public String write (DependencyMetadata metadata ) {
42
45
ObjectNode parent = nodeFactory .objectNode ();
43
46
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 ()));
59
50
customizeParent (parent , metadata );
60
51
return parent .toString ();
61
52
}
@@ -68,23 +59,23 @@ public String write(DependencyMetadata metadata) {
68
59
protected void customizeParent (ObjectNode parent , DependencyMetadata metadata ) {
69
60
}
70
61
71
- private static JsonNode mapDependency (Dependency dep ) {
62
+ private static ObjectNode mapDependency (Dependency dep ) {
72
63
ObjectNode node = nodeFactory .objectNode ();
73
64
node .put ("groupId" , dep .getGroupId ());
74
65
node .put ("artifactId" , dep .getArtifactId ());
75
- if (dep .getVersion () != null ) {
76
- node .put ("version" , dep .getVersion ());
77
- }
78
66
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 ());
85
70
return node ;
86
71
}
87
72
73
+ private static void addIfNotNull (ObjectNode node , String key , String value ) {
74
+ if (value != null ) {
75
+ node .put (key , value );
76
+ }
77
+ }
78
+
88
79
private static JsonNode mapRepository (Repository repo ) {
89
80
ObjectNode node = nodeFactory .objectNode ();
90
81
node .put ("name" , repo .getName ())
@@ -93,25 +84,45 @@ private static JsonNode mapRepository(Repository repo) {
93
84
return node ;
94
85
}
95
86
96
- private static JsonNode mapBom (BillOfMaterials bom ) {
87
+ private static ObjectNode mapBom (BillOfMaterials bom ) {
97
88
ObjectNode node = nodeFactory .objectNode ();
98
89
node .put ("groupId" , bom .getGroupId ());
99
90
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 ());
108
93
return node ;
109
94
}
110
95
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 ) {
112
105
ObjectNode node = nodeFactory .objectNode ();
113
106
content .forEach (node ::set );
114
107
return node ;
115
108
}
116
109
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
+
117
128
}
0 commit comments