Skip to content

Commit 35befa4

Browse files
Merge remote-tracking branch 'origin/master' into release/current
2 parents 9872351 + 3dab8a4 commit 35befa4

File tree

21 files changed

+845
-394
lines changed

21 files changed

+845
-394
lines changed

openaev-api/src/main/java/io/openaev/rest/inject/service/InjectService.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ public InjectResultOverviewOutput relaunch(String id) {
405405
Inject duplicatedInject = findAndDuplicateInject(id);
406406
this.throwIfInjectNotLaunchable(duplicatedInject);
407407
Inject savedInject = saveInjectAndStatusAsQueuing(duplicatedInject);
408-
deleteForRelaunch(id);
408+
deleteForRelaunch(id, savedInject.getId());
409409
return injectMapper.toInjectResultOverviewOutput(savedInject);
410410
}
411411

@@ -416,9 +416,9 @@ public void delete(String id) {
416416
}
417417

418418
@Transactional
419-
public void deleteForRelaunch(String id) {
420-
injectDocumentRepository.deleteDocumentsFromInject(id);
421-
injectRepository.deleteByIdNative(id);
419+
public void deleteForRelaunch(String oldId, String newId) {
420+
injectDocumentRepository.updateInjectId(newId, oldId);
421+
injectRepository.deleteByIdNative(oldId);
422422
}
423423

424424
/**

openaev-api/src/main/java/io/openaev/service/AtomicTestingService.java

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public class AtomicTestingService {
6060
private final InjectSearchService injectSearchService;
6161
private final InjectService injectService;
6262
private final GrantService grantService;
63+
private final InjectDocumentRepository injectDocumentRepository;
6364

6465
// -- CRUD --
6566

@@ -119,35 +120,38 @@ public InjectResultOverviewOutput createOrUpdate(AtomicTestingInput input, Strin
119120
injectToSave.setAssetGroups(
120121
fromIterable(this.assetGroupRepository.findAllById(input.getAssetGroups())));
121122

122-
List<String> previousDocumentIds =
123-
injectToSave.getDocuments().stream()
124-
.map(InjectDocument::getDocument)
125-
.map(Document::getId)
126-
.toList();
123+
injectToSave.getDocuments().clear();
127124

128125
Inject finalInjectToSave = injectToSave;
129-
List<InjectDocument> injectDocuments =
130-
input.getDocuments().stream()
131-
.map(
132-
i -> {
133-
if (!previousDocumentIds.contains(i.getDocumentId())) {
134-
InjectDocument injectDocument = new InjectDocument();
135-
injectDocument.setInject(finalInjectToSave);
136-
injectDocument.setDocument(
137-
documentRepository.findById(i.getDocumentId()).orElseThrow());
138-
injectDocument.setAttached(i.isAttached());
139-
return injectDocument;
140-
}
141-
return null;
142-
})
143-
.filter(Objects::nonNull)
144-
.toList();
145-
injectToSave.getDocuments().addAll(injectDocuments);
126+
input
127+
.getDocuments()
128+
.forEach(
129+
i -> {
130+
InjectDocumentId injectDocumentId = new InjectDocumentId();
131+
injectDocumentId.setInjectId(finalInjectToSave.getId());
132+
injectDocumentId.setDocumentId(i.getDocumentId());
133+
InjectDocument injectDocument =
134+
injectDocumentRepository.findById(injectDocumentId).orElse(new InjectDocument());
135+
if (injectDocument.getInject() == null) {
136+
injectDocument.setCompositeId(injectDocumentId);
137+
injectDocument.setInject(finalInjectToSave);
138+
injectDocument.setDocument(
139+
documentRepository.findById(i.getDocumentId()).orElseThrow());
140+
}
141+
injectDocument.setAttached(i.isAttached());
142+
finalInjectToSave
143+
.getDocuments()
144+
.add(
145+
injectId == null
146+
? injectDocument
147+
: injectDocumentRepository.save(injectDocument));
148+
});
149+
146150
if (injectId == null) {
147151
actionMetricCollector.addAtomicTestingCreatedCount();
148152
}
149-
Inject inject = injectRepository.save(injectToSave);
150-
return injectMapper.toInjectResultOverviewOutput(inject);
153+
injectToSave = injectRepository.save(injectToSave);
154+
return injectMapper.toInjectResultOverviewOutput(injectToSave);
151155
}
152156

153157
private ObjectNode setExpectations(

openaev-api/src/main/java/io/openaev/service/stix/SecurityCoverageService.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,19 @@ public SecurityCoverage buildSecurityCoverageFromStix(String stixJson)
110110

111111
// Optional fields
112112
stixCoverageObj.setIfPresent(STIX_DESCRIPTION, securityCoverage::setDescription);
113-
stixCoverageObj.setIfSetPresent(
114-
CommonProperties.LABELS.toString(),
115-
labels -> {
116-
labels.add(OPENCTI_TAG_NAME);
117-
securityCoverage.setLabels(labels);
118-
});
113+
114+
// labels
115+
Set<String> labels = new HashSet<>();
116+
if (stixCoverageObj.hasProperty(CommonProperties.LABELS)
117+
&& stixCoverageObj.getProperty(CommonProperties.LABELS).getValue() != null) {
118+
for (StixString stixString :
119+
(List<StixString>) stixCoverageObj.getProperty(CommonProperties.LABELS).getValue()) {
120+
labels.add(stixString.getValue());
121+
}
122+
}
123+
// force opencti
124+
labels.add(OPENCTI_TAG_NAME);
125+
securityCoverage.setLabels(labels);
119126

120127
// Extract Attack Patterns
121128
securityCoverage.setAttackPatternRefs(

openaev-api/src/main/java/io/openaev/utils/SecurityCoverageUtils.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,13 @@ public static Set<StixRefToExternalRef> extractObjectReferences(List<ObjectBase>
5757
refId = (String) extensionObj.get(CommonProperties.ID.toString()).getValue();
5858
}
5959
}
60-
} else if (obj.hasProperty(STIX_NAME)) {
60+
}
61+
62+
if (obj.hasProperty(STIX_NAME) && StringUtils.isBlank(refId)) {
6163
refId = (String) obj.getProperty(STIX_NAME).getValue();
6264
}
6365

64-
if (refId != null) {
66+
if (!StringUtils.isBlank(refId)) {
6567
String stixId = (String) obj.getProperty(CommonProperties.ID).getValue();
6668
if (stixId != null) {
6769
stixToRef.add(new StixRefToExternalRef(stixId, refId));

0 commit comments

Comments
 (0)