use of eu.bcvsolutions.idm.core.rest.LongPollingSubscriber in project CzechIdMng by bcvsolutions.
the class IdmMonitoringResultController method checkLastMonitoringResults.
/**
* Long polling for check unresolved identity role-requests
*
* @param backendId - applicant ID
*
* @return DeferredResult<OperationResultDto>, where:
*
* - EXECUTED = All requests for this identity are resolved,
* - RUNNING = Requests are not resolved, but some request was changed (since previous check).
* - NOT_EXECUTED = Deferred-result expired
*/
@ResponseBody
@RequestMapping(value = "{backendId}/check-last-monitoring-results", method = RequestMethod.GET)
@PreAuthorize("hasAuthority('" + MonitoringGroupPermission.MONITORINGRESULT_READ + "')")
@ApiOperation(value = "Check changes of last monitoring results (Long-polling request).", nickname = "checkLastMonitoringResults", tags = { IdmMonitoringResultController.TAG }, authorizations = { @Authorization(value = SwaggerConfig.AUTHENTICATION_BASIC, scopes = { @AuthorizationScope(scope = CoreGroupPermission.ROLE_REQUEST_READ, description = ""), @AuthorizationScope(scope = CoreGroupPermission.IDENTITY_READ, description = "") }), @Authorization(value = SwaggerConfig.AUTHENTICATION_CIDMST, scopes = { @AuthorizationScope(scope = CoreGroupPermission.ROLE_REQUEST_READ, description = ""), @AuthorizationScope(scope = CoreGroupPermission.IDENTITY_READ, description = "") }) })
public DeferredResult<OperationResultDto> checkLastMonitoringResults() {
DeferredResultWrapper result = new DeferredResultWrapper(LONG_POOLING_IDENTIFIER, IdmMonitoringResultDto.class, new DeferredResult<OperationResultDto>(10000l, new OperationResultDto(OperationState.NOT_EXECUTED)));
result.onCheckResultCallback(new CheckLongPollingResult() {
@Override
public void checkDeferredResult(DeferredResult<OperationResultDto> result, LongPollingSubscriber subscriber) {
checkDeferredRequest(result, subscriber);
}
});
// If isn't long polling enabled, then Blocked response will be sent.
if (!longPollingManager.isLongPollingEnabled()) {
result.getResult().setResult(new OperationResultDto(OperationState.BLOCKED));
//
return result.getResult();
}
longPollingManager.addSuspendedResult(result);
return result.getResult();
}
Aggregations