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 .type .TypeReference ;
27
26
import com .fasterxml .jackson .databind .DeserializationContext ;
28
- import com .fasterxml .jackson .databind .JsonDeserializer ;
29
27
import com .fasterxml .jackson .databind .JsonNode ;
30
- import com .fasterxml .jackson .databind .ObjectMapper ;
31
- import com .fasterxml .jackson .databind .node .ArrayNode ;
32
28
import org .cyclonedx .model .AttachmentText ;
33
29
import org .cyclonedx .model .Property ;
34
- import org .cyclonedx .model .formulation .common .EnvVariableChoice ;
35
30
import org .cyclonedx .model .formulation .common .InputType ;
36
31
import org .cyclonedx .model .formulation .common .InputType .Parameter ;
37
32
import org .cyclonedx .model .formulation .common .ResourceReferenceChoice ;
38
33
39
- public class InputTypeDeserializer extends JsonDeserializer <InputType > {
40
- private final ObjectMapper objectMapper = new ObjectMapper ();
41
-
42
- private final EnvVariableChoiceDeserializer envVariableDeserializer = new EnvVariableChoiceDeserializer ();
34
+ public class InputTypeDeserializer extends AbstractDataTypeDeserializer <InputType > {
43
35
44
36
@ Override
45
37
public InputType deserialize (JsonParser jsonParser , DeserializationContext deserializationContext )
@@ -48,19 +40,10 @@ public InputType deserialize(JsonParser jsonParser, DeserializationContext deser
48
40
JsonNode node = jsonParser .getCodec ().readTree (jsonParser );
49
41
InputType inputType = new InputType ();
50
42
51
- if (node .has ("source" )) {
52
- JsonNode sourceNode = node .get ("source" );
53
- ResourceReferenceChoice source = objectMapper .treeToValue (sourceNode , ResourceReferenceChoice .class );
54
- inputType .setSource (source );
55
- }
56
-
57
- if (node .has ("target" )) {
58
- JsonNode targetNode = node .get ("target" );
59
- ResourceReferenceChoice target = objectMapper .treeToValue (targetNode , ResourceReferenceChoice .class );
60
- inputType .setTarget (target );
61
- }
43
+ setReference (node , "source" , inputType );
44
+ setReference (node , "target" , inputType );
62
45
63
- createInputDataInfo (node , inputType , deserializationContext , jsonParser );
46
+ createInputDataInfo (node , inputType );
64
47
65
48
if (node .has ("properties" )) {
66
49
JsonNode propertiesNode = node .get ("properties" );
@@ -71,7 +54,7 @@ public InputType deserialize(JsonParser jsonParser, DeserializationContext deser
71
54
return inputType ;
72
55
}
73
56
74
- private void createInputDataInfo (JsonNode node , InputType inputType , DeserializationContext ctxt , JsonParser jsonParser )
57
+ private void createInputDataInfo (JsonNode node , InputType inputType )
75
58
throws IOException
76
59
{
77
60
if (node .has ("resource" )) {
@@ -83,17 +66,7 @@ private void createInputDataInfo(JsonNode node, InputType inputType, Deserializa
83
66
List <Parameter > parameters = objectMapper .convertValue (parametersNode , new TypeReference <List <Parameter >>() {});
84
67
inputType .setParameters (parameters );
85
68
} 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
- JsonParser nodeParser = envVarNode .traverse (jsonParser .getCodec ());
93
- EnvVariableChoice envVar = envVariableDeserializer .deserialize (nodeParser , ctxt );
94
- environmentVars .add (envVar );
95
- }
96
- inputType .setEnvironmentVars (environmentVars );
69
+ setEnvironmentVars (node , inputType );
97
70
} else if (node .has ("data" )) {
98
71
JsonNode dataNode = node .get ("data" );
99
72
AttachmentText data = objectMapper .treeToValue (dataNode , AttachmentText .class );
0 commit comments