Skip to content

Commit 141df6e

Browse files
committed
added 5 sec timeout.
1 parent e805055 commit 141df6e

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

src/main/java/edu/stanford/protege/webprotege/authorization/GetAuthorizedActionsForEntityHandler.java

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010

1111
import javax.annotation.Nonnull;
1212
import java.util.*;
13+
import java.util.concurrent.ExecutionException;
14+
import java.util.concurrent.TimeUnit;
15+
import java.util.concurrent.TimeoutException;
1316
import java.util.stream.Collectors;
1417

1518
/**
@@ -69,24 +72,27 @@ public Mono<GetAuthorizedCapabilitiesForEntityResponse> handleRequest(GetAuthori
6972

7073
Map<String, List<CompositeRootCriteria>> criteriaMap = extractUserPermisionCriteria(capabilities);
7174

72-
return Mono.fromFuture(getMatchingCriteriaExecutor.execute(
73-
new GetMatchingCriteriaRequest(criteriaMap,
74-
resource.getProjectId().get(),
75-
request.entityIri()),
76-
executionContext))
77-
.map(matchResp -> {
78-
var filteredCapabilities = capabilities.stream()
79-
.filter(capability -> {
80-
if (capability instanceof ContextAwareCapability cap) {
81-
return matchResp.matchingKeys().contains(cap.id());
82-
}
83-
return true;
84-
})
85-
.collect(Collectors.toSet());
86-
return new GetAuthorizedCapabilitiesForEntityResponse(
87-
ImmutableSet.copyOf(filteredCapabilities)
88-
);
89-
});
75+
try {
76+
GetMatchingCriteriaResponse matchResp = getMatchingCriteriaExecutor.execute(
77+
new GetMatchingCriteriaRequest(criteriaMap,
78+
resource.getProjectId().get(),
79+
request.entityIri()),
80+
executionContext).get(5, TimeUnit.SECONDS);
81+
var filteredCapabilities = capabilities.stream()
82+
.filter(capability -> {
83+
if (capability instanceof ContextAwareCapability cap) {
84+
return matchResp.matchingKeys().contains(cap.id());
85+
}
86+
return true;
87+
})
88+
.collect(Collectors.toSet());
89+
return Mono.just(new GetAuthorizedCapabilitiesForEntityResponse(
90+
ImmutableSet.copyOf(filteredCapabilities))
91+
);
92+
} catch (InterruptedException | ExecutionException | TimeoutException e) {
93+
logger.error("Error on fetching data", e);
94+
throw new RuntimeException(e);
95+
}
9096
}
9197

9298
private Map<String, List<CompositeRootCriteria>> extractUserPermisionCriteria(Set<Capability> capabilities) {

0 commit comments

Comments
 (0)