in service/src/main/java/org/apache/fineract/cn/provisioner/internal/service/applications/IdentityServiceInitializer.java [293:322]
private void createOrFindApplicationPermission(
final @Nonnull IdentityManager identityService,
final @Nonnull String applicationName,
final @Nonnull ApplicationPermission applicationPermission) {
try {
identityService.createApplicationPermission(applicationName, applicationPermission.getPermission());
logger.info("Application permission '{}.{}' created.",
applicationName, applicationPermission.getPermission().getPermittableEndpointGroupIdentifier());
}
catch (final ApplicationPermissionAlreadyExistsException alreadyExistsException)
{
//if exists, read out and compare. If is the same, there is nothing left to do.
final Permission existing = identityService.getApplicationPermission(
applicationName, applicationPermission.getPermission().getPermittableEndpointGroupIdentifier());
if (!existing.getPermittableEndpointGroupIdentifier().equals(applicationPermission.getPermission().getPermittableEndpointGroupIdentifier())) {
logger.error("Application permission '{}' already exists, but has a different name {} (strange).",
applicationPermission.getPermission().getPermittableEndpointGroupIdentifier(), existing.getPermittableEndpointGroupIdentifier());
}
final Set<AllowedOperation> existingAllowedOperations = existing.getAllowedOperations();
final Set<AllowedOperation> newAllowedOperations = applicationPermission.getPermission().getAllowedOperations();
if (!existingAllowedOperations.equals(newAllowedOperations)) {
logger.error("Permission '{}' already exists, but has different contents.", applicationPermission.getPermission().getPermittableEndpointGroupIdentifier());
}
}
catch (final RuntimeException unexpected)
{
logger.error("Creating permission '{}' failed.", applicationPermission.getPermission().getPermittableEndpointGroupIdentifier(), unexpected);
}
}