use of org.forgerock.openam.sm.datalayer.store.NotFoundException in project OpenAM by OpenRock.
the class PendingRequestsService method denyPendingRequest.
/**
* Denies the pending request with the specified {@literal id}.
*
* @param id The pending request id.
* @param realm The current realm.
* @throws ResourceException If the pending request is not found or could not be marked as denied.
*/
public void denyPendingRequest(String id, String realm) throws ResourceException {
try {
UmaPendingRequest request = store.read(id);
store.delete(id);
AMIdentity resourceOwner = coreWrapper.getIdentity(request.getResourceOwnerId(), realm);
auditLogger.log(request.getResourceSetId(), request.getResourceSetName(), resourceOwner, UmaAuditType.REQUEST_DENIED, request.getRequestingPartyId());
} catch (NotFoundException e) {
throw new org.forgerock.json.resource.NotFoundException("Pending request, " + id + ", not found", e);
} catch (ServerException e) {
throw new InternalServerErrorException("Failed to mark pending request, " + id + ", as denied", e);
}
}
use of org.forgerock.openam.sm.datalayer.store.NotFoundException in project OpenAM by OpenRock.
the class PendingRequestsService method approvePendingRequest.
/**
* Approves the pending request with the specified {@literal id}.
*
* @param context The request context.
* @param id The pending request id.
* @param content The content of the approval request.
* @param realm The current realm. @return {@code Promise} which is completed successfully or
* failed with a {@code ResourceException}.
*/
public Promise<Void, ResourceException> approvePendingRequest(Context context, String id, JsonValue content, String realm) {
try {
final UmaPendingRequest request = store.read(id);
Collection<String> scopes = getScopes(request, content);
return createUmaPolicy(context, request, scopes).thenAsync(approvePendingRequest(request, scopes, id, realm));
} catch (NotFoundException e) {
return new org.forgerock.json.resource.NotFoundException("Pending request, " + id + ", not found", e).asPromise();
} catch (ServerException e) {
return new InternalServerErrorException("Failed to mark pending request, " + id + ", as approved", e).asPromise();
}
}
use of org.forgerock.openam.sm.datalayer.store.NotFoundException in project OpenAM by OpenRock.
the class PendingRequestsService method approvePendingRequest.
private AsyncFunction<UmaPolicy, Void, ResourceException> approvePendingRequest(final UmaPendingRequest request, final Collection<String> scopes, final String id, final String realm) {
return new AsyncFunction<UmaPolicy, Void, ResourceException>() {
@Override
public Promise<Void, ResourceException> apply(UmaPolicy value) {
try {
if (isEmailRequestingPartyOnPendingRequestApprovalEnabled(realm)) {
Pair<String, String> template = pendingRequestEmailTemplate.getApprovalTemplate(request.getRequestingPartyId(), realm);
try {
emailService.email(realm, request.getRequestingPartyId(), template.getFirst(), MessageFormat.format(template.getSecond(), request.getResourceOwnerId(), request.getResourceSetName(), pendingRequestEmailTemplate.buildScopeString(scopes, request.getRequestingPartyId(), realm)));
} catch (MessagingException e) {
debug.warning("Pending Request Approval email could not be sent", e);
}
}
store.delete(id);
AMIdentity resourceOwner = coreWrapper.getIdentity(request.getResourceOwnerId(), realm);
auditLogger.log(request.getResourceSetId(), request.getResourceSetName(), resourceOwner, UmaAuditType.REQUEST_APPROVED, request.getRequestingPartyId());
return newResultPromise(null);
} catch (NotFoundException e) {
return new org.forgerock.json.resource.NotFoundException("Pending request, " + id + ", not found", e).asPromise();
} catch (ServerException e) {
return new InternalServerErrorException("Failed to mark pending request, " + id + ", as approved", e).asPromise();
}
}
};
}
Aggregations