private void createOrFindApplicationPermission()

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);
    }
  }