Skip to content

Commit 8762f94

Browse files
committed
chore: Refactor FoD attribute handling, remove static caches (re-implement on top of dev/v3.x changes)
1 parent 17eb69e commit 8762f94

22 files changed

Lines changed: 471 additions & 508 deletions

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/_common/scan/helper/FoDScanDescriptor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import com.fasterxml.jackson.annotation.JsonIgnore;
2323
import com.formkiq.graalvm.annotations.Reflectable;
2424
import com.fortify.cli.common.json.JsonNodeHolder;
25-
import com.fortify.cli.fod.attribute.helper.FoDAttributeDescriptor;
25+
import com.fortify.cli.fod.attribute.helper.FoDAttributeValueDescriptor;
2626

2727
import lombok.Data;
2828
import lombok.EqualsAndHashCode;
@@ -40,7 +40,7 @@ public class FoDScanDescriptor extends JsonNodeHolder {
4040
private String microserviceName;
4141
private String analysisStatusType;
4242
private String status;
43-
private ArrayList<FoDAttributeDescriptor> attributes;
43+
private ArrayList<FoDAttributeValueDescriptor> attributes;
4444

4545
@JsonIgnore
4646
public String getReleaseAndScanId() {
@@ -57,7 +57,7 @@ public Map<Integer, String> attributesAsMap() {
5757
return Collections.emptyMap();
5858
}
5959
Map<Integer, String> attrMap = new HashMap<>();
60-
for (FoDAttributeDescriptor attr : attributes) {
60+
for (FoDAttributeValueDescriptor attr : attributes) {
6161
attrMap.put(attr.getId(), attr.getValue());
6262
}
6363
return Collections.unmodifiableMap(attrMap);

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/app/cli/cmd/FoDAppUpdateCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import com.fortify.cli.fod.app.helper.FoDAppHelper;
3333
import com.fortify.cli.fod.app.helper.FoDAppUpdateRequest;
3434
import com.fortify.cli.fod.attribute.cli.mixin.FoDAttributeUpdateOptions;
35-
import com.fortify.cli.fod.attribute.helper.FoDAttributeHelper;
35+
import com.fortify.cli.fod.attribute.helper.FoDAttributeDefinitionHelper;
3636

3737
import kong.unirest.UnirestInstance;
3838
import lombok.Getter;
@@ -60,7 +60,7 @@ public class FoDAppUpdateCommand extends AbstractFoDJsonNodeOutputCommand implem
6060
public JsonNode getJsonNode(UnirestInstance unirest) {
6161
FoDAppDescriptor appDescriptor = FoDAppHelper.getAppDescriptor(unirest, appResolver.getAppNameOrId(), true);
6262
FoDCriticalityTypeOptions.FoDCriticalityType appCriticalityNew = criticalityTypeUpdate.getCriticalityType();
63-
JsonNode jsonAttrs = FoDAttributeHelper.getAttributesNodeForUpdate(unirest, FoDEnums.AttributeTypes.Application,
63+
JsonNode jsonAttrs = new FoDAttributeDefinitionHelper(unirest).buildAttributesNodeForUpdate(FoDEnums.AttributeTypes.Application,
6464
appDescriptor.getAttributes(), appAttrsUpdate.getAttributes(), autoRequiredAttrsOption.isAutoRequiredAttrs());
6565
String appEmailListNew = FoDAppHelper.getEmailList(notificationsUpdate);
6666

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/app/helper/FoDAppCreateRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import com.fortify.cli.fod.app.cli.mixin.FoDAppTypeOptions.FoDAppType;
3535
import com.fortify.cli.fod.app.cli.mixin.FoDCriticalityTypeOptions.FoDCriticalityType;
3636
import com.fortify.cli.fod.app.cli.mixin.FoDSdlcStatusTypeOptions.FoDSdlcStatusType;
37-
import com.fortify.cli.fod.attribute.helper.FoDAttributeHelper;
37+
import com.fortify.cli.fod.attribute.helper.FoDAttributeDefinitionHelper;
3838
import com.fortify.cli.fod.release.helper.FoDQualifiedReleaseNameDescriptor;
3939

4040
import kong.unirest.UnirestInstance;
@@ -111,7 +111,7 @@ public FoDAppCreateRequestBuilder appType(FoDAppType appType) {
111111
}
112112

113113
public FoDAppCreateRequestBuilder autoAttributes(UnirestInstance unirest, Map<String, String> attributes, boolean autoRequiredAttrs) {
114-
return attributes(FoDAttributeHelper.getAttributesNode(unirest, FoDEnums.AttributeTypes.All, attributes, autoRequiredAttrs));
114+
return attributes(new FoDAttributeDefinitionHelper(unirest).buildAttributesNode(FoDEnums.AttributeTypes.All, attributes, autoRequiredAttrs));
115115
}
116116

117117
public FoDAppCreateRequestBuilder businessCriticality(FoDCriticalityType businessCriticalityType) {

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/app/helper/FoDAppDescriptor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import com.formkiq.graalvm.annotations.Reflectable;
2020
import com.fortify.cli.common.json.JsonNodeHolder;
21-
import com.fortify.cli.fod.attribute.helper.FoDAttributeDescriptor;
21+
import com.fortify.cli.fod.attribute.helper.FoDAttributeValueDescriptor;
2222

2323
import lombok.Data;
2424
import lombok.EqualsAndHashCode;
@@ -31,13 +31,13 @@ public class FoDAppDescriptor extends JsonNodeHolder {
3131
private String applicationName;
3232
private String applicationDescription;
3333
private String businessCriticalityType;
34-
private ArrayList<FoDAttributeDescriptor> attributes;
34+
private ArrayList<FoDAttributeValueDescriptor> attributes;
3535
private String emailList;
3636
private boolean hasMicroservices;
3737

3838
public Map<Integer, String> attributesAsMap() {
3939
Map<Integer, String> attrMap = new HashMap<>();
40-
for (FoDAttributeDescriptor attr : attributes) {
40+
for (FoDAttributeValueDescriptor attr : attributes) {
4141
attrMap.put(attr.getId(), attr.getValue());
4242
}
4343
return attrMap;

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/attribute/cli/cmd/FoDAttributeCreateCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import com.fortify.cli.fod._common.output.cli.cmd.AbstractFoDJsonNodeOutputCommand;
2323
import com.fortify.cli.fod.attribute.cli.mixin.FoDAttributeOptionCandidates;
2424
import com.fortify.cli.fod.attribute.helper.FoDAttributeCreateRequest;
25-
import com.fortify.cli.fod.attribute.helper.FoDAttributeHelper;
25+
import com.fortify.cli.fod.attribute.helper.FoDAttributeDefinitionHelper;
2626
import com.fortify.cli.fod.attribute.helper.FoDPicklistSortedValue;
2727

2828
import kong.unirest.UnirestInstance;
@@ -70,7 +70,7 @@ public JsonNode getJsonNode(UnirestInstance unirest) {
7070
.isRestricted(isRestricted)
7171
.picklistValues(getPicklistValues())
7272
.build();
73-
return FoDAttributeHelper.createAttribute(unirest, attributeCreateRequest).asJsonNode();
73+
return new FoDAttributeDefinitionHelper(unirest).createDefinition(attributeCreateRequest).asJsonNode();
7474
}
7575

7676
@Override

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/attribute/cli/cmd/FoDAttributeDeleteCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
import com.fortify.cli.fod._common.output.cli.cmd.AbstractFoDJsonNodeOutputCommand;
1919
import com.fortify.cli.fod._common.rest.FoDUrls;
2020
import com.fortify.cli.fod.attribute.cli.mixin.FoDAttributeResolverMixin;
21-
import com.fortify.cli.fod.attribute.helper.FoDAttributeDescriptor;
22-
import com.fortify.cli.fod.attribute.helper.FoDAttributeHelper;
21+
import com.fortify.cli.fod.attribute.helper.FoDAttributeDefinitionDescriptor;
22+
import com.fortify.cli.fod.attribute.helper.FoDAttributeDefinitionHelper;
2323

2424
import kong.unirest.UnirestInstance;
2525
import lombok.Getter;
@@ -33,7 +33,7 @@ public class FoDAttributeDeleteCommand extends AbstractFoDJsonNodeOutputCommand
3333

3434
@Override
3535
public JsonNode getJsonNode (UnirestInstance unirest){
36-
FoDAttributeDescriptor attrDescriptor = FoDAttributeHelper.getAttributeDescriptor(unirest, attributeResolver.getAttributeId(), true);
36+
FoDAttributeDefinitionDescriptor attrDescriptor = new FoDAttributeDefinitionHelper(unirest).getDefinition(attributeResolver.getAttributeId(), true);
3737
unirest.delete(FoDUrls.ATTRIBUTE)
3838
.routeParam("attributeId", String.valueOf(attrDescriptor.getId()))
3939
.asObject(JsonNode.class).getBody();

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/attribute/cli/cmd/FoDAttributeUpdateCommand.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,12 @@
1515
import java.util.List;
1616

1717
import com.fasterxml.jackson.databind.JsonNode;
18-
import com.fasterxml.jackson.databind.ObjectMapper;
1918
import com.fortify.cli.common.output.cli.mixin.OutputHelperMixins;
2019
import com.fortify.cli.common.output.transform.IActionCommandResultSupplier;
2120
import com.fortify.cli.fod._common.output.cli.cmd.AbstractFoDJsonNodeOutputCommand;
2221
import com.fortify.cli.fod.attribute.cli.mixin.FoDAttributeResolverMixin;
23-
import com.fortify.cli.fod.attribute.helper.FoDAttributeDescriptor;
24-
import com.fortify.cli.fod.attribute.helper.FoDAttributeHelper;
22+
import com.fortify.cli.fod.attribute.helper.FoDAttributeDefinitionDescriptor;
23+
import com.fortify.cli.fod.attribute.helper.FoDAttributeDefinitionHelper;
2524
import com.fortify.cli.fod.attribute.helper.FoDAttributeUpdateRequest;
2625

2726
import kong.unirest.UnirestInstance;
@@ -35,7 +34,6 @@
3534
public class FoDAttributeUpdateCommand extends AbstractFoDJsonNodeOutputCommand implements IActionCommandResultSupplier {
3635
@Getter @Mixin private OutputHelperMixins.Update outputHelper;
3736
@Mixin private FoDAttributeResolverMixin.PositionalParameter attributeResolver;
38-
private final ObjectMapper objectMapper = new ObjectMapper();
3937

4038
@Option(names = {"--required"})
4139
private Boolean isRequired;
@@ -53,7 +51,7 @@ public class FoDAttributeUpdateCommand extends AbstractFoDJsonNodeOutputCommand
5351
public JsonNode getJsonNode(UnirestInstance unirest) {
5452

5553
// current values of attribute being updated
56-
FoDAttributeDescriptor attrDescriptor = FoDAttributeHelper.getAttributeDescriptor(unirest, attributeResolver.getAttributeId(), true);
54+
FoDAttributeDefinitionDescriptor attrDescriptor = new FoDAttributeDefinitionHelper(unirest).getDefinition(attributeResolver.getAttributeId(), true);
5755

5856
// build request object
5957
FoDAttributeUpdateRequest request = FoDAttributeUpdateRequest.builder()
@@ -63,7 +61,7 @@ public JsonNode getJsonNode(UnirestInstance unirest) {
6361
.picklistValues(picklistValues)
6462
.build();
6563

66-
return FoDAttributeHelper.updateAttribute(unirest, String.valueOf(attrDescriptor.getId()), request).asJsonNode();
64+
return new FoDAttributeDefinitionHelper(unirest).updateDefinition(String.valueOf(attrDescriptor.getId()), request).asJsonNode();
6765
}
6866

6967
@Override

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/attribute/cli/mixin/FoDAttributeResolverMixin.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
import java.util.stream.Stream;
1818

1919
import com.fasterxml.jackson.databind.JsonNode;
20-
import com.fortify.cli.fod.attribute.helper.FoDAttributeDescriptor;
21-
import com.fortify.cli.fod.attribute.helper.FoDAttributeHelper;
20+
import com.fortify.cli.fod.attribute.helper.FoDAttributeDefinitionDescriptor;
21+
import com.fortify.cli.fod.attribute.helper.FoDAttributeDefinitionHelper;
2222

2323
import kong.unirest.UnirestInstance;
2424
import lombok.Getter;
@@ -30,29 +30,30 @@ public class FoDAttributeResolverMixin {
3030
public static abstract class AbstractFoDAttributeResolverMixin {
3131
public abstract String getAttributeId();
3232

33-
public FoDAttributeDescriptor getAttributeDescriptor(UnirestInstance unirest) {
34-
return FoDAttributeHelper.getAttributeDescriptor(unirest, getAttributeId(), true);
33+
public FoDAttributeDefinitionDescriptor getAttributeDescriptor(UnirestInstance unirest) {
34+
return new FoDAttributeDefinitionHelper(unirest).getDefinition(getAttributeId(), true);
3535
}
3636
}
3737

3838
public static abstract class AbstractFoDMultiAttributeResolverMixin {
3939
public abstract String[] getAttributeIds();
4040

41-
public FoDAttributeDescriptor[] getAttributeDescriptors(UnirestInstance unirest) {
41+
public FoDAttributeDefinitionDescriptor[] getAttributeDescriptors(UnirestInstance unirest) {
42+
var helper = new FoDAttributeDefinitionHelper(unirest);
4243
return Stream.of(getAttributeIds())
43-
.map(id -> FoDAttributeHelper.getAttributeDescriptor(unirest, id, true))
44-
.toArray(FoDAttributeDescriptor[]::new);
44+
.map(id -> helper.getDefinition(id, true))
45+
.toArray(FoDAttributeDefinitionDescriptor[]::new);
4546
}
4647

4748
public Collection<JsonNode> getAttributeDescriptorJsonNodes(UnirestInstance unirest) {
4849
return Stream.of(getAttributeDescriptors(unirest))
49-
.map(FoDAttributeDescriptor::asJsonNode)
50+
.map(FoDAttributeDefinitionDescriptor::asJsonNode)
5051
.collect(Collectors.toList());
5152
}
5253

5354
public Integer[] getAttributeIds(UnirestInstance unirest) {
5455
return Stream.of(getAttributeDescriptors(unirest))
55-
.map(FoDAttributeDescriptor::getId)
56+
.map(FoDAttributeDefinitionDescriptor::getId)
5657
.toArray(Integer[]::new);
5758
}
5859
}

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/attribute/helper/FoDAttributeDescriptor.java renamed to fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/attribute/helper/FoDAttributeDefinitionDescriptor.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
import lombok.NoArgsConstructor;
2424

2525
@Data @EqualsAndHashCode(callSuper = true)
26-
@Reflectable @NoArgsConstructor
27-
@JsonIgnoreProperties(ignoreUnknown = true) // Fix for FoD 26.2+ where the API returns additional fields that are not mapped to this class (e.g. "isMultiSelect")
28-
public class FoDAttributeDescriptor extends JsonNodeHolder {
26+
@Reflectable @NoArgsConstructor
27+
@JsonIgnoreProperties(ignoreUnknown = true)
28+
public class FoDAttributeDefinitionDescriptor extends JsonNodeHolder {
2929
private Integer id;
3030
private String name;
3131
private Integer attributeTypeId;
@@ -35,6 +35,5 @@ public class FoDAttributeDescriptor extends JsonNodeHolder {
3535
private Boolean isRequired;
3636
private Boolean isRestricted;
3737
private ArrayList<FoDPickListDescriptor> picklistValues;
38-
private String value;
3938
private String defaultValue;
4039
}

0 commit comments

Comments
 (0)