Skip to content

Commit 271e31c

Browse files
Merge pull request #376 from CycloneDX/code_improvements
Code Improvements
2 parents d11b16e + 110a892 commit 271e31c

32 files changed

+197
-229
lines changed

src/main/java/org/cyclonedx/CycloneDxMediaType.java

-2
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@ private CycloneDxMediaType() { }
2424

2525
/**
2626
* Official CycloneDX XML media type assigned by IANA.
27-
*
2827
* https://www.iana.org/assignments/media-types/application/vnd.cyclonedx+xml
2928
*/
3029
public static final String APPLICATION_CYCLONEDX_XML = "application/vnd.cyclonedx+xml";
3130

3231
/**
3332
* Official CycloneDX JSON media type assigned by IANA.
34-
*
3533
* https://www.iana.org/assignments/media-types/application/vnd.cyclonedx+json
3634
*/
3735
public static final String APPLICATION_CYCLONEDX_JSON = "application/vnd.cyclonedx+json";

src/main/java/org/cyclonedx/model/ExtensibleElement.java

-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
3030
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
3131
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
32-
import org.apache.commons.lang3.StringUtils;
3332
import org.cyclonedx.util.serializer.ExtensibleTypesSerializer;
3433
import org.cyclonedx.util.deserializer.ExtensionDeserializer;
3534

src/main/java/org/cyclonedx/model/ExtensibleType.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public List<Attribute> getAttributes() {
6868
}
6969

7070
public String getValue() {
71-
if (super.getExtensibleTypes() != null && super.getExtensibleTypes().size() > 0) {
71+
if (super.getExtensibleTypes() != null && !super.getExtensibleTypes().isEmpty()) {
7272
return null;
7373
} else {
7474
return value;

src/main/java/org/cyclonedx/model/LicenseChoice.java

-4
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,11 @@
2323
import java.util.Objects;
2424
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
2525
import com.fasterxml.jackson.annotation.JsonInclude;
26-
import com.fasterxml.jackson.annotation.JsonRootName;
2726
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
28-
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
2927
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
3028
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
31-
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
3229
import org.cyclonedx.model.license.Expression;
3330
import org.cyclonedx.util.deserializer.LicenseDeserializer;
34-
import org.cyclonedx.util.serializer.LicenseChoiceSerializer;
3531

3632
@JsonIgnoreProperties(ignoreUnknown = true)
3733
@JsonInclude(JsonInclude.Include.NON_EMPTY)

src/main/java/org/cyclonedx/model/attestation/affirmation/Signatory.java

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
44
import com.fasterxml.jackson.annotation.JsonInclude;
55
import com.fasterxml.jackson.annotation.JsonTypeName;
6-
import com.fasterxml.jackson.annotation.JsonSubTypes;
76
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
87
import org.cyclonedx.model.ExternalReference;
98
import org.cyclonedx.model.OrganizationalEntity;

src/main/java/org/cyclonedx/model/attestation/evidence/Contents.java

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
44
import com.fasterxml.jackson.annotation.JsonInclude;
55
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
6-
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
76
import org.cyclonedx.model.AttachmentText;
87

98
@JsonIgnoreProperties(ignoreUnknown = true)

src/main/java/org/cyclonedx/model/attestation/evidence/Data.java

-2
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@
55
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
66
import com.fasterxml.jackson.annotation.JsonInclude;
77
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
8-
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
98
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
109
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
1110
import org.cyclonedx.model.component.modelCard.data.Governance;
12-
import org.cyclonedx.util.deserializer.StringListDeserializer;
1311

1412
@JsonIgnoreProperties(ignoreUnknown = true)
1513
@JsonInclude(JsonInclude.Include.NON_EMPTY)

src/main/java/org/cyclonedx/model/component/crypto/enums/CertificationLevel.java

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.fasterxml.jackson.annotation.JsonCreator;
44
import com.fasterxml.jackson.annotation.JsonProperty;
5-
import org.cyclonedx.model.LifecycleChoice.Phase;
65

76
public enum CertificationLevel
87
{

src/main/java/org/cyclonedx/model/definition/Definition.java

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
88
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
99
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
10-
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
1110

1211
@JsonIgnoreProperties(ignoreUnknown = true)
1312
@JsonInclude(JsonInclude.Include.NON_EMPTY)

src/main/java/org/cyclonedx/model/definition/Requirement.java

-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@
66
import com.fasterxml.jackson.annotation.JsonInclude;
77
import com.fasterxml.jackson.annotation.JsonProperty;
88
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
9-
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
109
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
1110
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
1211
import org.cyclonedx.model.ExternalReference;
1312
import org.cyclonedx.model.Property;
14-
import org.cyclonedx.util.deserializer.StringListDeserializer;
1513

1614
@JsonIgnoreProperties(ignoreUnknown = true)
1715
@JsonInclude(JsonInclude.Include.NON_EMPTY)

src/main/java/org/cyclonedx/model/formulation/workspace/Workspace.java

-54
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@
88
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
99
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
1010
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
11-
import org.cyclonedx.model.Property;
1211
import org.cyclonedx.model.formulation.common.BasicDataAbstract;
13-
import org.cyclonedx.model.formulation.common.ResourceReferenceChoice;
1412

1513
@JsonIgnoreProperties(ignoreUnknown = true)
1614
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@@ -56,30 +54,6 @@ public String getAccessMode() {
5654
}
5755
}
5856

59-
public String getBomRef() {
60-
return bomRef;
61-
}
62-
63-
public void setBomRef(final String bomRef) {
64-
this.bomRef = bomRef;
65-
}
66-
67-
public String getUid() {
68-
return uid;
69-
}
70-
71-
public void setUid(final String uid) {
72-
this.uid = uid;
73-
}
74-
75-
public String getName() {
76-
return name;
77-
}
78-
79-
public void setName(final String name) {
80-
this.name = name;
81-
}
82-
8357
@JacksonXmlElementWrapper(localName = "aliases")
8458
@JacksonXmlProperty(localName = "alias")
8559
public List<String> getAliases() {
@@ -90,24 +64,6 @@ public void setAliases(final List<String> aliases) {
9064
this.aliases = aliases;
9165
}
9266

93-
public String getDescription() {
94-
return description;
95-
}
96-
97-
public void setDescription(final String description) {
98-
this.description = description;
99-
}
100-
101-
@JacksonXmlElementWrapper(localName = "resourceReferences")
102-
@JacksonXmlProperty(localName = "resourceReference")
103-
public List<ResourceReferenceChoice> getResourceReferences() {
104-
return resourceReferences;
105-
}
106-
107-
public void setResourceReferences(final List<ResourceReferenceChoice> resourceReferences) {
108-
this.resourceReferences = resourceReferences;
109-
}
110-
11167
public AccessMode getAccessMode() {
11268
return accessMode;
11369
}
@@ -147,14 +103,4 @@ public Volume getVolume() {
147103
public void setVolume(final Volume volume) {
148104
this.volume = volume;
149105
}
150-
151-
@JacksonXmlElementWrapper(localName = "properties")
152-
@JacksonXmlProperty(localName = "property")
153-
public List<Property> getProperties() {
154-
return properties;
155-
}
156-
157-
public void setProperties(final List<Property> properties) {
158-
this.properties = properties;
159-
}
160106
}

src/main/java/org/cyclonedx/model/vulnerability/Vulnerability.java

-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.cyclonedx.model.Tool;
3636
import org.cyclonedx.model.VersionFilter;
3737
import org.cyclonedx.util.serializer.CustomDateSerializer;
38-
import org.cyclonedx.Version;
3938

4039
/**
4140
* @since 6.0.0

src/main/java/org/cyclonedx/parsers/JsonParser.java

-2
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,6 @@ public List<ParseException> validate(final InputStream inputStream, final Versio
155155
* Verifies a CycloneDX BOM conforms to the specification through JSON validation.
156156
* @param bomString the CycloneDX BOM to validate
157157
* @param schemaVersion the schema version to validate against
158-
* @return true is the file is a valid BOM, false if not
159158
* @throws IOException when errors are encountered
160159
* @since 3.0.0
161160
*/
@@ -167,7 +166,6 @@ public List<ParseException> validate(final String bomString, final Version schem
167166
* Verifies a CycloneDX BOM conforms to the specification through JSON validation.
168167
* @param bomJson the CycloneDX BOM to validate
169168
* @param schemaVersion the schema version to validate against
170-
* @return true is the file is a valid BOM, false if not
171169
* @throws IOException when errors are encountered
172170
* @since 3.0.0
173171
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
* This file is part of CycloneDX Core (Java).
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
* SPDX-License-Identifier: Apache-2.0
17+
* Copyright (c) OWASP Foundation. All Rights Reserved.
18+
*/
19+
package org.cyclonedx.util.deserializer;
20+
21+
import java.util.ArrayList;
22+
import java.util.List;
23+
24+
import com.fasterxml.jackson.core.JsonProcessingException;
25+
import com.fasterxml.jackson.databind.JsonDeserializer;
26+
import com.fasterxml.jackson.databind.JsonNode;
27+
import com.fasterxml.jackson.databind.ObjectMapper;
28+
import com.fasterxml.jackson.databind.node.ArrayNode;
29+
import org.cyclonedx.model.formulation.common.AbstractType;
30+
import org.cyclonedx.model.formulation.common.EnvVariableChoice;
31+
import org.cyclonedx.model.formulation.common.ResourceReferenceChoice;
32+
33+
public abstract class AbstractDataTypeDeserializer<T extends AbstractType>
34+
extends JsonDeserializer<T> {
35+
36+
protected final ObjectMapper objectMapper = new ObjectMapper();
37+
38+
protected void setEnvironmentVars(final JsonNode node, AbstractType data) throws JsonProcessingException {
39+
JsonNode nodes = node.get("environmentVars");
40+
List<EnvVariableChoice> environmentVars = new ArrayList<>();
41+
42+
ArrayNode environmentVarsNode = (nodes.isArray() ? (ArrayNode) nodes : new ArrayNode(null).add(nodes));
43+
44+
for (JsonNode envVarNode : environmentVarsNode) {
45+
EnvVariableChoice envVar = objectMapper.treeToValue(envVarNode, EnvVariableChoice.class);
46+
environmentVars.add(envVar);
47+
}
48+
data.setEnvironmentVars(environmentVars);
49+
}
50+
51+
protected void setReference(JsonNode node, String fieldName, AbstractType type)
52+
throws JsonProcessingException
53+
{
54+
if (node.has(fieldName)) {
55+
JsonNode fieldNode = node.get(fieldName);
56+
ResourceReferenceChoice reference = objectMapper.treeToValue(fieldNode, ResourceReferenceChoice.class);
57+
58+
if ("source".equals(fieldName)) {
59+
type.setSource(reference);
60+
} else if ("target".equals(fieldName)) {
61+
type.setTarget(reference);
62+
}
63+
}
64+
}
65+
}

src/main/java/org/cyclonedx/util/deserializer/ComponentWrapperDeserializer.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,13 @@ public ComponentWrapper deserialize(
8686
ObjectNode node = parser.readValueAs(ObjectNode.class);
8787
if (node.has("component")) {
8888
JsonNode component = node.get("component");
89-
JsonParser componentsParser = component.traverse(parser.getCodec());
90-
if (component.isArray()) {
91-
components = Arrays.asList(componentsParser.readValueAs(Component[].class));
92-
} else {
93-
components = Collections.singletonList(componentsParser.readValueAs(Component.class));
89+
try (JsonParser componentsParser = component.traverse(parser.getCodec())) {
90+
if (component.isArray()) {
91+
components = Arrays.asList(componentsParser.readValueAs(Component[].class));
92+
}
93+
else {
94+
components = Collections.singletonList(componentsParser.readValueAs(Component.class));
95+
}
9496
}
9597
}
9698
}

src/main/java/org/cyclonedx/util/deserializer/InputTypeDeserializer.java

+6-33
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,19 @@
1919
package org.cyclonedx.util.deserializer;
2020

2121
import java.io.IOException;
22-
import java.util.ArrayList;
2322
import java.util.List;
2423

2524
import com.fasterxml.jackson.core.JsonParser;
2625
import com.fasterxml.jackson.core.type.TypeReference;
2726
import com.fasterxml.jackson.databind.DeserializationContext;
28-
import com.fasterxml.jackson.databind.JsonDeserializer;
2927
import com.fasterxml.jackson.databind.JsonNode;
30-
import com.fasterxml.jackson.databind.ObjectMapper;
31-
import com.fasterxml.jackson.databind.node.ArrayNode;
3228
import org.cyclonedx.model.AttachmentText;
3329
import org.cyclonedx.model.Property;
34-
import org.cyclonedx.model.formulation.common.EnvVariableChoice;
3530
import org.cyclonedx.model.formulation.common.InputType;
3631
import org.cyclonedx.model.formulation.common.InputType.Parameter;
3732
import org.cyclonedx.model.formulation.common.ResourceReferenceChoice;
3833

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> {
4335

4436
@Override
4537
public InputType deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
@@ -48,19 +40,10 @@ public InputType deserialize(JsonParser jsonParser, DeserializationContext deser
4840
JsonNode node = jsonParser.getCodec().readTree(jsonParser);
4941
InputType inputType = new InputType();
5042

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);
6245

63-
createInputDataInfo(node, inputType, deserializationContext, jsonParser);
46+
createInputDataInfo(node, inputType);
6447

6548
if(node.has("properties")) {
6649
JsonNode propertiesNode = node.get("properties");
@@ -71,7 +54,7 @@ public InputType deserialize(JsonParser jsonParser, DeserializationContext deser
7154
return inputType;
7255
}
7356

74-
private void createInputDataInfo(JsonNode node, InputType inputType, DeserializationContext ctxt, JsonParser jsonParser)
57+
private void createInputDataInfo(JsonNode node, InputType inputType)
7558
throws IOException
7659
{
7760
if (node.has("resource")) {
@@ -83,17 +66,7 @@ private void createInputDataInfo(JsonNode node, InputType inputType, Deserializa
8366
List<Parameter> parameters = objectMapper.convertValue(parametersNode, new TypeReference<List<Parameter>>() {});
8467
inputType.setParameters(parameters);
8568
} 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);
9770
} else if (node.has("data")) {
9871
JsonNode dataNode = node.get("data");
9972
AttachmentText data = objectMapper.treeToValue(dataNode, AttachmentText.class);

src/main/java/org/cyclonedx/util/deserializer/LicenseDeserializer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
public class LicenseDeserializer extends JsonDeserializer<LicenseChoice>
3535
{
3636

37-
ExpressionDeserializer expressionDeserializer = new ExpressionDeserializer();
37+
final ExpressionDeserializer expressionDeserializer = new ExpressionDeserializer();
3838

3939
@Override
4040
public LicenseChoice deserialize(

0 commit comments

Comments
 (0)