public void assign()

in service/src/main/java/org/apache/fineract/cn/provisioner/internal/service/TenantApplicationService.java [79:107]


  public void assign(final @Nonnull TenantApplicationEntity tenantApplicationEntity, final @Nonnull Map<String, String> appNameToUriMap) {
    Assert.notNull(tenantApplicationEntity);
    Assert.notNull(appNameToUriMap);

    final TenantEntity tenantEntity = tenantCassandraRepository.get(tenantApplicationEntity.getTenantIdentifier())
            .orElseThrow(() -> ServiceException
                .notFound("Tenant {0} not found.", tenantApplicationEntity.getTenantIdentifier()));

    checkApplicationsExist(tenantApplicationEntity.getApplications());

    saveTenantApplicationAssignment(tenantApplicationEntity);

    final Set<ApplicationNameToUriPair> applicationNameToUriPairs =
            getApplicationNameToUriPairs(tenantApplicationEntity, appNameToUriMap);

    final Optional<ApplicationSignatureSet> latestIdentityManagerSignatureSet = getLatestIdentityManagerSignatureSet(tenantEntity);
    latestIdentityManagerSignatureSet.ifPresent(y -> {
              try {
                initializeSecurity(tenantEntity, y, applicationNameToUriPairs);
              } catch (final InterruptedException e) {
                logger.error("Because of interruption, started but didn't finish application assignment for {} in tenant {}.",
                        appNameToUriMap.keySet(), tenantApplicationEntity.getTenantIdentifier(), e);
              }
            });
    if (!latestIdentityManagerSignatureSet.isPresent()) {
      logger.warn("No identity manager signature is available, so security is not initialized for applications {}",
              appNameToUriMap.keySet());
    }
  }