use of eu.bcvsolutions.idm.vs.exception.VsException in project CzechIdMng by bcvsolutions.
the class DefaultVsRequestService method realize.
@Override
@Transactional
public VsRequestDto realize(VsRequestDto request) {
LOG.info(MessageFormat.format("Start realize virtual system request [{0}].", request));
Assert.notNull(request, "VS request cannot be null!");
this.checkAccess(request, IdmBasePermission.UPDATE);
if (VsRequestState.IN_PROGRESS != request.getState()) {
throw new VsException(VsResultCode.VS_REQUEST_REALIZE_WRONG_STATE, ImmutableMap.of("state", VsRequestState.IN_PROGRESS.name(), "currentState", request.getState()));
}
request.setState(VsRequestState.REALIZED);
// Realize request ... propagate change to VS account.
IcUidAttribute uidAttribute = this.internalExecute(request);
// Save realized request
request = this.save(request);
LOG.info(MessageFormat.format("Virtual system request [{0}] was realized. Output UID attribute: [{1}]", request, uidAttribute));
return request;
}
use of eu.bcvsolutions.idm.vs.exception.VsException in project CzechIdMng by bcvsolutions.
the class DefaultVsRequestService method internalExecute.
@Override
public IcUidAttribute internalExecute(VsRequestDto request) {
request.setState(VsRequestState.REALIZED);
Assert.notNull(request.getConfiguration(), "Request have to contains connector configuration!");
Assert.notNull(request.getConnectorKey(), "Request have to contains connector key!");
// Find connector by request
VsVirtualConnector virtualConnector = getVirtualConnector(request);
IcUidAttribute result = null;
// Save the request
this.save(request);
switch(request.getOperationType()) {
case CREATE:
{
result = virtualConnector.internalCreate(request.getConnectorObject().getObjectClass(), request.getConnectorObject().getAttributes());
break;
}
case UPDATE:
{
VsAccountDto account = accountService.findByUidSystem(request.getUid(), request.getSystem());
if (account == null) {
throw new VsException(VsResultCode.VS_REQUEST_UPDATING_ACCOUNT_NOT_EXIST, ImmutableMap.of("uid", request.getUid()));
}
result = virtualConnector.internalUpdate(new IcUidAttributeImpl(null, request.getUid(), null), request.getConnectorObject().getObjectClass(), request.getConnectorObject().getAttributes());
break;
}
case DELETE:
{
VsAccountDto account = accountService.findByUidSystem(request.getUid(), request.getSystem());
if (account == null) {
throw new VsException(VsResultCode.VS_REQUEST_DELETING_ACCOUNT_NOT_EXIST, ImmutableMap.of("uid", request.getUid()));
}
virtualConnector.internalDelete(new IcUidAttributeImpl(null, request.getUid(), null), request.getConnectorObject().getObjectClass());
// All unresolved request created before this delete request will be
// canceled
VsRequestFilter filter = new VsRequestFilter();
filter.setCreatedBefore(request.getCreated());
filter.setUid(request.getUid());
filter.setSystemId(request.getSystem());
filter.setState(VsRequestState.IN_PROGRESS);
// Unresolved request created before this request
List<VsRequestDto> beforeRequests = this.find(filter, null).getContent();
beforeRequests.forEach(beforeRequest -> {
String reason = MessageFormat.format("Request [{0}] was canceled (by SYSTEM), because 'after' delete request [{1}] was realized!", beforeRequest.getId(), request.getId());
this.cancel(beforeRequest, reason);
LOG.info(reason);
});
break;
}
default:
throw new IcException(MessageFormat.format("Unsupported operation type [{0}]", request.getOperationType()));
}
return result;
}
use of eu.bcvsolutions.idm.vs.exception.VsException in project CzechIdMng by bcvsolutions.
the class DefaultVsSystemService method loadImplementers.
/**
* Load implementers by UUIDs in connector configuration. Throw exception when
* identity not found.
*
* @param implementersString
* @return
*/
private List<IdmIdentityDto> loadImplementers(UUID[] implementersUUID) {
if (implementersUUID == null) {
return new ArrayList<>();
}
List<IdmIdentityDto> implementers = new ArrayList<>(implementersUUID.length);
for (UUID implementer : implementersUUID) {
IdmIdentityDto identity = identityService.get(implementer);
if (identity == null) {
throw new VsException(VsResultCode.VS_IMPLEMENTER_WAS_NOT_FOUND, ImmutableMap.of("implementer", implementer));
}
implementers.add(identity);
}
return implementers;
}
use of eu.bcvsolutions.idm.vs.exception.VsException in project CzechIdMng by bcvsolutions.
the class DefaultVsRequestService method realize.
@Override
@Transactional
public VsRequestDto realize(VsRequestDto request, String reason) {
LOG.info(MessageFormat.format("Start realize virtual system request [{0}].", request));
Assert.notNull(request, "VS request cannot be null!");
this.checkAccess(request, IdmBasePermission.UPDATE);
if (VsRequestState.IN_PROGRESS != request.getState()) {
throw new VsException(VsResultCode.VS_REQUEST_REALIZE_WRONG_STATE, ImmutableMap.of("state", VsRequestState.IN_PROGRESS.name(), "currentState", request.getState()));
}
request.setState(VsRequestState.REALIZED);
request.setReason(reason);
// Realize request ... propagate change to VS account.
IcUidAttribute uidAttribute = this.internalExecute(request);
// Save realized request
request = this.save(request);
LOG.info(MessageFormat.format("Virtual system request [{0}] was realized. Output UID attribute: [{1}]", request, uidAttribute));
// Refresh role-request state
refreshRoleRequestState(request);
return request;
}
use of eu.bcvsolutions.idm.vs.exception.VsException in project CzechIdMng by bcvsolutions.
the class BasicVirtualConnector method loadImplementerRoles.
/**
* Load implementer roles by UUIDs in connector configuration. If none role are
* set and none direct implementers are set, then will be used default role.
* Throw exception when identity not found.
*
* @param implementerRolesUUID
* @param implementersFromConfig
* @return
*/
private List<IdmRoleDto> loadImplementerRoles(UUID[] implementerRolesUUID, List<IdmIdentityDto> implementersFromConfig) {
List<IdmRoleDto> implementerRoles = new ArrayList<>();
if ((implementerRolesUUID == null || implementerRolesUUID.length == 0)) {
if (CollectionUtils.isEmpty(implementersFromConfig)) {
// Load default role from configuration
implementerRoles.add(vsConfiguration.getDefaultRole());
}
return implementerRoles;
}
for (UUID implementer : implementerRolesUUID) {
IdmRoleDto role = roleService.get(implementer);
if (role == null) {
throw new VsException(VsResultCode.VS_IMPLEMENTER_ROLE_WAS_NOT_FOUND, ImmutableMap.of("role", implementer));
}
implementerRoles.add(role);
}
return implementerRoles;
}
Aggregations