Skip to content

Commit

Permalink
[Fix #106] Fix exception thrown when fetching fault tree
Browse files Browse the repository at this point in the history
- specifically fix removing parts of components associated with fault tree events from response.
  • Loading branch information
kostobog committed Jun 9, 2024
1 parent f6182f9 commit 2d136a8
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public List<FaultTree> summaries() {
public FaultTree find(@PathVariable(name = "faultTreeFragment") String faultTreeFragment) {
log.info("> find - {}", faultTreeFragment);
URI faultTreeUri = identifierService.composeIdentifier(Vocabulary.s_c_fault_tree, faultTreeFragment);
return repositoryService.findRequired(faultTreeUri);
return repositoryService.findWithDetails(faultTreeUri);
}

@ResponseStatus(HttpStatus.CREATED)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import java.net.URISyntaxException;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

@Service
@Slf4j
Expand Down Expand Up @@ -82,17 +83,31 @@ public void createTree(FaultTree faultTree){
@Transactional(readOnly = true)
@Override
public FaultTree findRequired(URI id) {
FaultTree ft = super.findRequired(id);
// remove component children
Set<Item> items = ft.getAllEvents().stream().map(e -> e.getSupertypes())
.filter(ts -> ts!= null)
.flatMap(ts -> ts.stream())
.map(Event::getBehavior)
.filter(ts -> ts!= null)
.map(Behavior::getItem)
.filter(c -> c != null).collect(Collectors.toSet());
for(Item i : items){
i.setComponents(null);
return super.findRequired(id);
}

public FaultTree findWithDetails(URI id) {
FaultTree ft = findRequired(id);
// remove component children from response
for(FaultEvent faultEvent : ft.getAllEvents()){
if(faultEvent.getSupertypes() == null)
continue;
Set<Event> supertypes = faultEvent.getSupertypes().stream()
.flatMap(t -> Stream.concat(
Stream.of(t),
t.getSupertypes() != null ? t.getSupertypes().stream() : Stream.of()))
.collect(Collectors.toSet());
for(Event event : supertypes){
Behavior behavior = event.getBehavior();
if(behavior == null)
continue;
Item item = behavior.getItem();

if(item == null)
continue;
item.setComponents(null);
Optional.ofNullable(item.getSupertypes()).ifPresent( s -> s.forEach(st -> st.setComponents(null)));
}
}

setReferences(ft);
Expand Down

0 comments on commit 2d136a8

Please sign in to comment.