From f8e5d6c9fce01fa7d5a75448c40c042de4c4dcb5 Mon Sep 17 00:00:00 2001 From: viktorpavlenko Date: Wed, 5 Mar 2025 11:40:36 +0200 Subject: [PATCH] FINERACT-2169: Provision category definition api refactor; --- ...ovisioningCategoryReadPlatformService.java | 4 +- .../api/ProvisioningCategoryApiResource.java | 43 ++++-------- .../api/ProvisioningCriteriaApiResource.java | 70 +++++++------------ ...ioningCategoryReadPlatformServiceImpl.java | 4 +- ...ovisioningCriteriaReadPlatformService.java | 4 +- ...ioningCriteriaReadPlatformServiceImpl.java | 2 +- ...nerateLoanlossProvisioningTaskletTest.java | 9 ++- 7 files changed, 50 insertions(+), 86 deletions(-) diff --git a/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryReadPlatformService.java b/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryReadPlatformService.java index 68c3d84ad..7641a8533 100644 --- a/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryReadPlatformService.java +++ b/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryReadPlatformService.java @@ -18,10 +18,10 @@ */ package org.apache.fineract.organisation.provisioning.service; -import java.util.Collection; +import java.util.List; import org.apache.fineract.organisation.provisioning.data.ProvisioningCategoryData; public interface ProvisioningCategoryReadPlatformService { - Collection retrieveAllProvisionCategories(); + List retrieveAllProvisionCategories(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/api/ProvisioningCategoryApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/api/ProvisioningCategoryApiResource.java index 79de601c9..5e461bbe0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/api/ProvisioningCategoryApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/api/ProvisioningCategoryApiResource.java @@ -27,18 +27,13 @@ import jakarta.ws.rs.PUT; import jakarta.ws.rs.Path; import jakarta.ws.rs.PathParam; import jakarta.ws.rs.Produces; -import jakarta.ws.rs.core.Context; import jakarta.ws.rs.core.MediaType; -import jakarta.ws.rs.core.UriInfo; -import java.util.Collection; +import java.util.List; import lombok.RequiredArgsConstructor; import org.apache.fineract.commands.domain.CommandWrapper; import org.apache.fineract.commands.service.CommandWrapperBuilder; import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService; -import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; -import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings; -import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.organisation.provisioning.data.ProvisioningCategoryData; import org.apache.fineract.organisation.provisioning.service.ProvisioningCategoryReadPlatformService; @@ -52,52 +47,44 @@ public class ProvisioningCategoryApiResource { private final PlatformSecurityContext platformSecurityContext; private final ProvisioningCategoryReadPlatformService provisioningCategoryReadPlatformService; - private final ApiRequestParameterHelper apiRequestParameterHelper; - private final DefaultToApiJsonSerializer toApiJsonSerializer; private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; @GET @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String retrieveAll(@Context final UriInfo uriInfo) { - this.platformSecurityContext.authenticatedUser(); - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - Collection provisionCategoriesSet = null; - provisionCategoriesSet = this.provisioningCategoryReadPlatformService.retrieveAllProvisionCategories(); - return this.toApiJsonSerializer.serialize(settings, provisionCategoriesSet); + public List retrieveAll() { + platformSecurityContext.authenticatedUser(); + return provisioningCategoryReadPlatformService.retrieveAllProvisionCategories(); } @POST @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String createProvisioningCategory(final String apiRequestBodyAsJson) { - CommandWrapper commandWrapper = null; - this.platformSecurityContext.authenticatedUser(); - commandWrapper = new CommandWrapperBuilder().createProvisioningCategory().withJson(apiRequestBodyAsJson).build(); - final CommandProcessingResult commandProcessingResult = this.commandsSourceWritePlatformService.logCommandSource(commandWrapper); - return this.toApiJsonSerializer.serialize(commandProcessingResult); + public CommandProcessingResult createProvisioningCategory(final String apiRequestBodyAsJson) { + platformSecurityContext.authenticatedUser(); + CommandWrapper commandWrapper = new CommandWrapperBuilder().createProvisioningCategory().withJson(apiRequestBodyAsJson).build(); + return commandsSourceWritePlatformService.logCommandSource(commandWrapper); } @PUT @Path("{categoryId}") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String updateProvisioningCategory(@PathParam("categoryId") final Long categoryId, final String apiRequestBodyAsJson) { - this.platformSecurityContext.authenticatedUser(); + public CommandProcessingResult updateProvisioningCategory(@PathParam("categoryId") final Long categoryId, + final String apiRequestBodyAsJson) { + platformSecurityContext.authenticatedUser(); final CommandWrapper commandRequest = new CommandWrapperBuilder().updateProvisioningCategory(categoryId) .withJson(apiRequestBodyAsJson).build(); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); - return this.toApiJsonSerializer.serialize(result); + return commandsSourceWritePlatformService.logCommandSource(commandRequest); } @DELETE @Path("{categoryId}") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String deleteProvisioningCategory(@PathParam("categoryId") final Long categoryId) { - this.platformSecurityContext.authenticatedUser(); + public CommandProcessingResult deleteProvisioningCategory(@PathParam("categoryId") final Long categoryId) { + platformSecurityContext.authenticatedUser(); final CommandWrapper commandRequest = new CommandWrapperBuilder().deleteProvisioningCategory(categoryId).build(); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); - return this.toApiJsonSerializer.serialize(result); + return commandsSourceWritePlatformService.logCommandSource(commandRequest); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/api/ProvisioningCriteriaApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/api/ProvisioningCriteriaApiResource.java index d8e70e8fe..56022d656 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/api/ProvisioningCriteriaApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/api/ProvisioningCriteriaApiResource.java @@ -38,10 +38,7 @@ import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.Context; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.UriInfo; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; +import java.util.List; import lombok.RequiredArgsConstructor; import org.apache.fineract.commands.domain.CommandWrapper; import org.apache.fineract.commands.service.CommandWrapperBuilder; @@ -51,7 +48,6 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings; import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.apache.fineract.organisation.provisioning.constants.ProvisioningCriteriaConstants; import org.apache.fineract.organisation.provisioning.data.ProvisioningCriteriaData; import org.apache.fineract.organisation.provisioning.service.ProvisioningCriteriaReadPlatformService; import org.springframework.stereotype.Component; @@ -68,27 +64,13 @@ public class ProvisioningCriteriaApiResource { private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; private final DefaultToApiJsonSerializer toApiJsonSerializer; - private static final Set PROVISIONING_CRITERIA_TEMPLATE_PARAMETER = new HashSet<>( - Arrays.asList(ProvisioningCriteriaConstants.DEFINITIONS_PARAM, ProvisioningCriteriaConstants.LOANPRODUCTS_PARAM, - ProvisioningCriteriaConstants.GLACCOUNTS_PARAM)); - - private static final Set PROVISIONING_CRITERIA_PARAMETERS = new HashSet<>( - Arrays.asList(ProvisioningCriteriaConstants.CRITERIA_PARAM, ProvisioningCriteriaConstants.LOANPRODUCTS_PARAM, - ProvisioningCriteriaConstants.DEFINITIONS_PARAM)); - - private static final Set ALL_PROVISIONING_CRITERIA_PARAMETERS = new HashSet<>( - Arrays.asList(ProvisioningCriteriaConstants.CRITERIA_ID_PARAM, ProvisioningCriteriaConstants.CRITERIA_NAME_PARAM, - ProvisioningCriteriaConstants.CREATED_BY_PARAM)); - @GET @Path("template") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String retrieveTemplate(@Context final UriInfo uriInfo) { - this.platformSecurityContext.authenticatedUser(); - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - ProvisioningCriteriaData data = this.provisioningCriteriaReadPlatformService.retrievePrivisiongCriteriaTemplate(); - return this.toApiJsonSerializer.serialize(settings, data, PROVISIONING_CRITERIA_TEMPLATE_PARAMETER); + public ProvisioningCriteriaData retrieveTemplate() { + platformSecurityContext.authenticatedUser(); + return provisioningCriteriaReadPlatformService.retrievePrivisiongCriteriaTemplate(); } @GET @@ -98,15 +80,15 @@ public class ProvisioningCriteriaApiResource { @Operation(summary = "Retrieves a Provisioning Criteria", description = "Retrieves a Provisioning Criteria") @ApiResponses({ @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = ProvisioningCriteriaApiResourceSwagger.GetProvisioningCriteriaCriteriaIdResponse.class))) }) - public String retrieveProvisioningCriteria(@PathParam("criteriaId") @Parameter(description = "criteriaId") final Long criteriaId, - @Context final UriInfo uriInfo) { + public ProvisioningCriteriaData retrieveProvisioningCriteria( + @PathParam("criteriaId") @Parameter(description = "criteriaId") final Long criteriaId, @Context final UriInfo uriInfo) { platformSecurityContext.authenticatedUser(); - ProvisioningCriteriaData criteria = this.provisioningCriteriaReadPlatformService.retrieveProvisioningCriteria(criteriaId); - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + ProvisioningCriteriaData criteria = provisioningCriteriaReadPlatformService.retrieveProvisioningCriteria(criteriaId); + final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters()); if (settings.isTemplate()) { - criteria = this.provisioningCriteriaReadPlatformService.retrievePrivisiongCriteriaTemplate(criteria); + criteria = provisioningCriteriaReadPlatformService.retrievePrivisiongCriteriaTemplate(criteria); } - return this.toApiJsonSerializer.serialize(settings, criteria, PROVISIONING_CRITERIA_PARAMETERS); + return criteria; } @GET @@ -115,11 +97,9 @@ public class ProvisioningCriteriaApiResource { @Operation(summary = "Retrieves all created Provisioning Criterias", description = "Retrieves all created Provisioning Criterias") @ApiResponses({ @ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(implementation = ProvisioningCriteriaApiResourceSwagger.GetProvisioningCriteriaResponse.class)))) }) - public String retrieveAllProvisioningCriterias(@Context final UriInfo uriInfo) { + public List retrieveAllProvisioningCriterias() { platformSecurityContext.authenticatedUser(); - Collection data = this.provisioningCriteriaReadPlatformService.retrieveAllProvisioningCriterias(); - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - return this.toApiJsonSerializer.serialize(settings, data, ALL_PROVISIONING_CRITERIA_PARAMETERS); + return provisioningCriteriaReadPlatformService.retrieveAllProvisioningCriterias(); } @POST @@ -130,12 +110,10 @@ public class ProvisioningCriteriaApiResource { @RequestBody(required = true, content = @Content(schema = @Schema(implementation = ProvisioningCriteriaApiResourceSwagger.PostProvisioningCriteriaRequest.class))) @ApiResponses({ @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = ProvisioningCriteriaApiResourceSwagger.PostProvisioningCriteriaResponse.class))) }) - public String createProvisioningCriteria(@Parameter(hidden = true) final String apiRequestBodyAsJson) { - CommandWrapper commandWrapper = null; - this.platformSecurityContext.authenticatedUser(); - commandWrapper = new CommandWrapperBuilder().createProvisioningCriteria().withJson(apiRequestBodyAsJson).build(); - final CommandProcessingResult commandProcessingResult = this.commandsSourceWritePlatformService.logCommandSource(commandWrapper); - return this.toApiJsonSerializer.serialize(commandProcessingResult); + public CommandProcessingResult createProvisioningCriteria(@Parameter(hidden = true) final String apiRequestBodyAsJson) { + platformSecurityContext.authenticatedUser(); + CommandWrapper commandWrapper = new CommandWrapperBuilder().createProvisioningCriteria().withJson(apiRequestBodyAsJson).build(); + return commandsSourceWritePlatformService.logCommandSource(commandWrapper); } @PUT @@ -147,13 +125,13 @@ public class ProvisioningCriteriaApiResource { @RequestBody(required = true, content = @Content(schema = @Schema(implementation = ProvisioningCriteriaApiResourceSwagger.PutProvisioningCriteriaRequest.class))) @ApiResponses({ @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = ProvisioningCriteriaApiResourceSwagger.PutProvisioningCriteriaResponse.class))) }) - public String updateProvisioningCriteria(@PathParam("criteriaId") @Parameter(description = "criteriaId") final Long criteriaId, + public CommandProcessingResult updateProvisioningCriteria( + @PathParam("criteriaId") @Parameter(description = "criteriaId") final Long criteriaId, @Parameter(hidden = true) final String apiRequestBodyAsJson) { - this.platformSecurityContext.authenticatedUser(); + platformSecurityContext.authenticatedUser(); final CommandWrapper commandRequest = new CommandWrapperBuilder().updateProvisioningCriteria(criteriaId) .withJson(apiRequestBodyAsJson).build(); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); - return this.toApiJsonSerializer.serialize(result); + return commandsSourceWritePlatformService.logCommandSource(commandRequest); } @DELETE @@ -163,10 +141,10 @@ public class ProvisioningCriteriaApiResource { @Operation(summary = "Deletes Provisioning Criteria", description = "Deletes Provisioning Criteria") @ApiResponses({ @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = ProvisioningCriteriaApiResourceSwagger.DeleteProvisioningCriteriaResponse.class))) }) - public String deleteProvisioningCriteria(@PathParam("criteriaId") @Parameter(description = "criteriaId") final Long criteriaId) { - this.platformSecurityContext.authenticatedUser(); + public CommandProcessingResult deleteProvisioningCriteria( + @PathParam("criteriaId") @Parameter(description = "criteriaId") final Long criteriaId) { + platformSecurityContext.authenticatedUser(); final CommandWrapper commandRequest = new CommandWrapperBuilder().deleteProvisioningCriteria(criteriaId).build(); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); - return this.toApiJsonSerializer.serialize(result); + return commandsSourceWritePlatformService.logCommandSource(commandRequest); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryReadPlatformServiceImpl.java index 113d61099..95c7b4e64 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryReadPlatformServiceImpl.java @@ -20,7 +20,7 @@ package org.apache.fineract.organisation.provisioning.service; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.Collection; +import java.util.List; import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.domain.JdbcSupport; import org.apache.fineract.organisation.provisioning.data.ProvisioningCategoryData; @@ -34,7 +34,7 @@ public class ProvisioningCategoryReadPlatformServiceImpl implements Provisioning private final ProvisioningCategoryRowMapper provisionCategoryRowMapper = new ProvisioningCategoryRowMapper(); @Override - public Collection retrieveAllProvisionCategories() { + public List retrieveAllProvisionCategories() { // User is already authenticated by API. So we no need to check again // here final String sql = "select " + this.provisionCategoryRowMapper.schema() + " from m_provision_category pc order by pc.id"; diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformService.java index eebf63bc3..5a7974bbf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformService.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.organisation.provisioning.service; -import java.util.Collection; +import java.util.List; import org.apache.fineract.organisation.provisioning.data.ProvisioningCriteriaData; public interface ProvisioningCriteriaReadPlatformService { @@ -27,7 +27,7 @@ public interface ProvisioningCriteriaReadPlatformService { ProvisioningCriteriaData retrieveProvisioningCriteria(Long criteriaId); - Collection retrieveAllProvisioningCriterias(); + List retrieveAllProvisioningCriterias(); ProvisioningCriteriaData retrievePrivisiongCriteriaTemplate(ProvisioningCriteriaData data); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformServiceImpl.java index 1dde37c06..dc837b13d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformServiceImpl.java @@ -77,7 +77,7 @@ public class ProvisioningCriteriaReadPlatformServiceImpl implements Provisioning } @Override - public Collection retrieveAllProvisioningCriterias() { + public List retrieveAllProvisioningCriterias() { ProvisioningCriteriaRowMapper mapper = new ProvisioningCriteriaRowMapper(); final String sql = "select " + mapper.schema(); return this.jdbcTemplate.query(sql, mapper); // NOSONAR diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTaskletTest.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTaskletTest.java index 2a5462c5d..5d47f7bfc 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTaskletTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTaskletTest.java @@ -25,7 +25,6 @@ import static org.mockito.Mockito.verifyNoInteractions; import static org.springframework.batch.repeat.RepeatStatus.FINISHED; import java.time.LocalDate; -import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -75,7 +74,7 @@ class GenerateLoanlossProvisioningTaskletTest { @Test public void testExecuteShouldCreateProvisioningEntry() throws Exception { // given - Collection provisioningCriterias = List.of(new ProvisioningCriteriaData()); + List provisioningCriterias = List.of(new ProvisioningCriteriaData()); given(provisioningCriteriaReadPlatformService.retrieveAllProvisioningCriterias()).willReturn(provisioningCriterias); // when RepeatStatus result = underTest.execute(stepContribution, chunkContext); @@ -87,7 +86,7 @@ class GenerateLoanlossProvisioningTaskletTest { @Test public void testExecuteShouldNotCreateProvisioningEntryWhenNoProvisioningCriteriasArePresent() throws Exception { // given - Collection provisioningCriterias = List.of(); + List provisioningCriterias = List.of(); given(provisioningCriteriaReadPlatformService.retrieveAllProvisioningCriterias()).willReturn(provisioningCriterias); // when RepeatStatus result = underTest.execute(stepContribution, chunkContext); @@ -110,7 +109,7 @@ class GenerateLoanlossProvisioningTaskletTest { @Test public void testExecuteShouldNotFailWhenProvisioningEntryIsAlreadyCreated() throws Exception { // given - Collection provisioningCriterias = List.of(new ProvisioningCriteriaData()); + List provisioningCriterias = List.of(new ProvisioningCriteriaData()); given(provisioningCriteriaReadPlatformService.retrieveAllProvisioningCriterias()).willReturn(provisioningCriterias); given(provisioningEntriesWritePlatformService.createProvisioningEntry(BUSINESS_DATE, true)) .willThrow(new ProvisioningEntryAlreadyCreatedException(1L, BUSINESS_DATE)); @@ -124,7 +123,7 @@ class GenerateLoanlossProvisioningTaskletTest { @Test public void testExecuteShouldNotFailWhenExceptionIsThrownInProvisioningEntryCreation() throws Exception { // given - Collection provisioningCriterias = List.of(new ProvisioningCriteriaData()); + List provisioningCriterias = List.of(new ProvisioningCriteriaData()); given(provisioningCriteriaReadPlatformService.retrieveAllProvisioningCriterias()).willReturn(provisioningCriterias); given(provisioningEntriesWritePlatformService.createProvisioningEntry(BUSINESS_DATE, true)).willThrow(new RuntimeException("Test")); // when