19
19
package org .cyclonedx .util .deserializer ;
20
20
21
21
import java .io .IOException ;
22
- import java .util .ArrayList ;
23
22
import java .util .List ;
24
23
25
24
import com .fasterxml .jackson .core .JsonParser ;
26
25
import com .fasterxml .jackson .core .JsonProcessingException ;
27
26
import com .fasterxml .jackson .core .type .TypeReference ;
28
27
import com .fasterxml .jackson .databind .DeserializationContext ;
29
- import com .fasterxml .jackson .databind .JsonDeserializer ;
30
28
import com .fasterxml .jackson .databind .JsonNode ;
31
- import com .fasterxml .jackson .databind .ObjectMapper ;
32
- import com .fasterxml .jackson .databind .node .ArrayNode ;
33
29
import org .cyclonedx .model .AttachmentText ;
34
30
import org .cyclonedx .model .Property ;
35
- import org .cyclonedx .model .formulation .common .EnvVariableChoice ;
36
31
import org .cyclonedx .model .formulation .common .OutputType ;
37
32
import org .cyclonedx .model .formulation .common .OutputType .OutputTypeEnum ;
38
33
import org .cyclonedx .model .formulation .common .ResourceReferenceChoice ;
39
34
40
35
public class OutputTypeDeserializer
41
- extends JsonDeserializer <OutputType > {
42
- private final ObjectMapper objectMapper = new ObjectMapper ();
36
+ extends AbstractDataTypeDeserializer <OutputType > {
43
37
44
38
@ Override
45
39
public OutputType deserialize (JsonParser jsonParser , DeserializationContext deserializationContext )
@@ -48,17 +42,8 @@ public OutputType deserialize(JsonParser jsonParser, DeserializationContext dese
48
42
JsonNode node = jsonParser .getCodec ().readTree (jsonParser );
49
43
OutputType outputType = new OutputType ();
50
44
51
- if (node .has ("source" )) {
52
- JsonNode sourceNode = node .get ("source" );
53
- ResourceReferenceChoice source = objectMapper .treeToValue (sourceNode , ResourceReferenceChoice .class );
54
- outputType .setSource (source );
55
- }
56
-
57
- if (node .has ("target" )) {
58
- JsonNode targetNode = node .get ("target" );
59
- ResourceReferenceChoice target = objectMapper .treeToValue (targetNode , ResourceReferenceChoice .class );
60
- outputType .setTarget (target );
61
- }
45
+ setReference (node , "source" , outputType );
46
+ setReference (node , "target" , outputType );
62
47
63
48
createOutputDataInfo (node , outputType );
64
49
@@ -82,18 +67,11 @@ private void createOutputDataInfo(JsonNode node, OutputType outputType) throws J
82
67
JsonNode resourceNode = node .get ("resource" );
83
68
ResourceReferenceChoice resource = objectMapper .treeToValue (resourceNode , ResourceReferenceChoice .class );
84
69
outputType .setResource (resource );
85
- } else if (node .has ("environmentVars" )) {
86
- JsonNode nodes = node .get ("environmentVars" );
87
- List <EnvVariableChoice > environmentVars = new ArrayList <>();
88
-
89
- ArrayNode environmentVarsNode = (nodes .isArray () ? (ArrayNode ) nodes : new ArrayNode (null ).add (nodes ));
90
-
91
- for (JsonNode envVarNode : environmentVarsNode ) {
92
- EnvVariableChoice envVar = objectMapper .treeToValue (envVarNode , EnvVariableChoice .class );
93
- environmentVars .add (envVar );
94
- }
95
- outputType .setEnvironmentVars (environmentVars );
96
- } else if (node .has ("data" )) {
70
+ }
71
+ else if (node .has ("environmentVars" )) {
72
+ setEnvironmentVars (node , outputType );
73
+ }
74
+ else if (node .has ("data" )) {
97
75
JsonNode dataNode = node .get ("data" );
98
76
AttachmentText data = objectMapper .treeToValue (dataNode , AttachmentText .class );
99
77
outputType .setData (data );
0 commit comments