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