This is an automated email from the ASF dual-hosted git repository. myrle pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/fineract-cn-provisioner.git
commit fd86eed7b3322d3ccb64a4fa21eb5568fc175b97 Author: myrle-krantz <mkra...@mifos.org> AuthorDate: Wed May 3 15:57:49 2017 +0200 Beginning refactoring in preparation for provisioning application specific permissions. --- service/build.gradle | 1 + .../internal/service/TenantApplicationService.java | 68 +++++++++------------- .../service/applications/AnubisInitializer.java | 20 +++---- .../applications/IdentityServiceInitializer.java | 6 +- shared.gradle | 1 + 5 files changed, 45 insertions(+), 51 deletions(-) diff --git a/service/build.gradle b/service/build.gradle index fea755c..edb1055 100644 --- a/service/build.gradle +++ b/service/build.gradle @@ -33,6 +33,7 @@ dependencies { [group: 'io.mifos.provisioner', name: 'api', version: project.version], [group: 'io.mifos.anubis', name: 'library', version: versions.frameworkanubis], [group: 'io.mifos.anubis', name: 'api', version: versions.frameworkanubis], + [group: 'io.mifos.permitted-feign-client', name: 'api', version: versions.frameworkanput], [group: 'io.mifos.identity', name: 'api', version: versions.mifosidentityservice], [group: 'com.google.code.gson', name: 'gson', version: versions.gson], [group: 'io.mifos.core', name: 'api', version: versions.frameworkapi], diff --git a/service/src/main/java/io/mifos/provisioner/internal/service/TenantApplicationService.java b/service/src/main/java/io/mifos/provisioner/internal/service/TenantApplicationService.java index 6ac79ff..149f062 100644 --- a/service/src/main/java/io/mifos/provisioner/internal/service/TenantApplicationService.java +++ b/service/src/main/java/io/mifos/provisioner/internal/service/TenantApplicationService.java @@ -19,7 +19,6 @@ import com.datastax.driver.core.ResultSet; import com.datastax.driver.mapping.Mapper; import com.datastax.driver.mapping.Result; import io.mifos.anubis.api.v1.domain.ApplicationSignatureSet; -import io.mifos.anubis.api.v1.domain.Signature; import io.mifos.anubis.config.TenantSignatureRepository; import io.mifos.core.cassandra.core.CassandraSessionProvider; import io.mifos.core.lang.AutoTenantContext; @@ -70,22 +69,39 @@ public class TenantApplicationService { Assert.notNull(tenantApplicationEntity); Assert.notNull(appNameToUriMap); - final Optional<TenantEntity> tenantEntity = tenantCassandraRepository.get(tenantApplicationEntity.getTenantIdentifier()); - tenantEntity.ifPresent(x -> { - checkApplications(tenantApplicationEntity.getApplications()); + final TenantEntity tenantEntity = tenantCassandraRepository.get(tenantApplicationEntity.getTenantIdentifier()) + .orElseThrow(() -> ServiceException.notFound("Tenant {0} not found.", tenantApplicationEntity.getTenantIdentifier())); - saveTenantApplicationAssignment(tenantApplicationEntity); + checkApplicationsExist(tenantApplicationEntity.getApplications()); - final Set<ApplicationNameToUriPair> applicationNameToUriPairs = - getApplicationNameToUriPairs(tenantApplicationEntity, appNameToUriMap); + saveTenantApplicationAssignment(tenantApplicationEntity); - initializeIsis(x, applicationNameToUriPairs); + final Set<ApplicationNameToUriPair> applicationNameToUriPairs = + getApplicationNameToUriPairs(tenantApplicationEntity, appNameToUriMap); - getLatestIdentityManagerSignatureSet(x).ifPresent(y -> initializeAnubis(x, y.getTimestamp(), y.getIdentityManagerSignature(), applicationNameToUriPairs)); - }); + getLatestIdentityManagerSignatureSet(tenantEntity) + .ifPresent(y -> initializeSecurity(tenantEntity, y, applicationNameToUriPairs)); + } - tenantEntity.orElseThrow( - () -> ServiceException.notFound("Tenant {0} not found.", tenantApplicationEntity.getTenantIdentifier())); + private void initializeSecurity(final TenantEntity tenantEntity, + final ApplicationSignatureSet identityManagerSignatureSet, + final Set<ApplicationNameToUriPair> applicationNameToUriPairs) { + applicationNameToUriPairs.forEach(x -> { + final ApplicationSignatureSet applicationSignatureSet = anubisInitializer.initializeAnubis( + tenantEntity.getIdentifier(), + x.name, + x.uri, + identityManagerSignatureSet.getTimestamp(), + identityManagerSignatureSet.getIdentityManagerSignature()); + + identityServiceInitializer.postApplicationDetails( + tenantEntity.getIdentifier(), + tenantEntity.getIdentityManagerApplicationName(), + tenantEntity.getIdentityManagerApplicationUri(), + x.name, + x.uri, + applicationSignatureSet); + }); } private void saveTenantApplicationAssignment(final @Nonnull TenantApplicationEntity tenantApplicationEntity) { @@ -134,32 +150,6 @@ public class TenantApplicationService { } } - private void initializeIsis( - final @Nonnull TenantEntity tenantEntity, - final @Nonnull Set<ApplicationNameToUriPair> applicationNameToUriPairs) { - applicationNameToUriPairs.forEach(applicationNameUriPair -> - identityServiceInitializer.postPermittableGroups( - tenantEntity.getIdentifier(), - tenantEntity.getIdentityManagerApplicationName(), - tenantEntity.getIdentityManagerApplicationUri(), - applicationNameUriPair.uri)); - } - - private void initializeAnubis( - final @Nonnull TenantEntity tenantEntity, - final @Nonnull String keyTimestamp, - final @Nonnull Signature identityServiceTenantSignature, - final @Nonnull Set<ApplicationNameToUriPair> applicationNameToUriPairs) { - applicationNameToUriPairs.forEach(applicationNameUriPair -> - anubisInitializer.initializeAnubis( - tenantEntity.getIdentifier(), - applicationNameUriPair.name, - applicationNameUriPair.uri, - keyTimestamp, - identityServiceTenantSignature) - ); - } - public TenantApplicationEntity find(final String tenantIdentifier) { checkTenant(tenantIdentifier); @@ -195,7 +185,7 @@ public class TenantApplicationService { } } - private void checkApplications(final Set<String> applications) { + private void checkApplicationsExist(final Set<String> applications) { final Mapper<ApplicationEntity> applicationEntityMapper = this.cassandraSessionProvider.getAdminSessionMappingManager().mapper(ApplicationEntity.class); diff --git a/service/src/main/java/io/mifos/provisioner/internal/service/applications/AnubisInitializer.java b/service/src/main/java/io/mifos/provisioner/internal/service/applications/AnubisInitializer.java index c30876e..657923d 100644 --- a/service/src/main/java/io/mifos/provisioner/internal/service/applications/AnubisInitializer.java +++ b/service/src/main/java/io/mifos/provisioner/internal/service/applications/AnubisInitializer.java @@ -16,12 +16,12 @@ package io.mifos.provisioner.internal.service.applications; import io.mifos.anubis.api.v1.client.Anubis; +import io.mifos.anubis.api.v1.domain.ApplicationSignatureSet; import io.mifos.anubis.api.v1.domain.Signature; import io.mifos.provisioner.config.ProvisionerConstants; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import javax.annotation.Nonnull; @@ -42,20 +42,20 @@ public class AnubisInitializer { this.logger = logger; } - @Async - public void initializeAnubis(final @Nonnull String tenantIdentifier, - final @Nonnull String applicationName, - final @Nonnull String uri, - final @Nonnull String keyTimestamp, - final @Nonnull Signature signature) { + public ApplicationSignatureSet initializeAnubis(final @Nonnull String tenantIdentifier, + final @Nonnull String applicationName, + final @Nonnull String uri, + final @Nonnull String keyTimestamp, + final @Nonnull Signature signature) { try (final AutoCloseable ignored = this.applicationCallContextProvider.getApplicationCallContext(tenantIdentifier, applicationName)) { final Anubis anubis = this.applicationCallContextProvider.getApplication(Anubis.class, uri); - anubis.createSignatureSet(keyTimestamp, signature); anubis.initializeResources(); - logger.info("Anubis initialization for io.mifos.provisioner.tenant '{}' and application '{}' succeeded with signature '{}'.", - tenantIdentifier, applicationName, signature); + final ApplicationSignatureSet applicationSignatureSet = anubis.createSignatureSet(keyTimestamp, signature); + logger.info("Anubis initialization for io.mifos.provisioner.tenant '{}' and application '{}' succeeded with signature set '{}'.", + tenantIdentifier, applicationName, applicationSignatureSet); + return applicationSignatureSet; } catch (final Exception e) { throw new IllegalStateException(e); diff --git a/service/src/main/java/io/mifos/provisioner/internal/service/applications/IdentityServiceInitializer.java b/service/src/main/java/io/mifos/provisioner/internal/service/applications/IdentityServiceInitializer.java index 7df8945..c92297e 100644 --- a/service/src/main/java/io/mifos/provisioner/internal/service/applications/IdentityServiceInitializer.java +++ b/service/src/main/java/io/mifos/provisioner/internal/service/applications/IdentityServiceInitializer.java @@ -123,11 +123,13 @@ public class IdentityServiceInitializer { } } - public void postPermittableGroups( + public void postApplicationDetails( final @Nonnull String tenantIdentifier, final @Nonnull String identityManagerApplicationName, final @Nonnull String identityManagerApplicationUri, - final @Nonnull String applicationUri) + final @Nonnull String applicationName, + final @Nonnull String applicationUri, + final @Nonnull ApplicationSignatureSet applicationSignatureSet) { final List<PermittableEndpoint> permittables; try (final AutoCloseable ignored = applicationCallContextProvider.getApplicationCallGuestContext(tenantIdentifier)) { diff --git a/shared.gradle b/shared.gradle index 8a2c8dc..77669da 100644 --- a/shared.gradle +++ b/shared.gradle @@ -4,6 +4,7 @@ version '0.1.0-BUILD-SNAPSHOT' ext.versions = [ mifosidentityservice : '0.1.0-BUILD-SNAPSHOT', frameworkanubis : '0.1.0-BUILD-SNAPSHOT', + frameworkanput : '0.1.0-BUILD-SNAPSHOT', frameworkapi : '0.1.0-BUILD-SNAPSHOT', frameworklang : '0.1.0-BUILD-SNAPSHOT', frameworkasync : '0.1.0-BUILD-SNAPSHOT', -- To stop receiving notification emails like this one, please contact my...@apache.org.