FINERACT-2169: Refactor job api controller;
This commit is contained in:
committed by
Adam Saghy
parent
3aa011b32e
commit
8462c67f3c
+4
-4
@@ -25,8 +25,8 @@ import java.util.stream.Collectors;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.fineract.client.models.BusinessStep;
|
||||
import org.apache.fineract.client.models.GetBusinessStepConfigResponse;
|
||||
import org.apache.fineract.client.models.UpdateBusinessStepConfigRequest;
|
||||
import org.apache.fineract.client.models.BusinessStepRequest;
|
||||
import org.apache.fineract.client.models.JobBusinessStepConfigData;
|
||||
import org.apache.fineract.client.services.BusinessStepConfigurationApi;
|
||||
import org.springframework.stereotype.Component;
|
||||
import retrofit2.Response;
|
||||
@@ -52,7 +52,7 @@ public class WorkFlowJobHelper {
|
||||
new BusinessStep().stepName("LOAN_INTEREST_RECALCULATION").order(9L), //
|
||||
new BusinessStep().stepName("EXTERNAL_ASSET_OWNER_TRANSFER").order(10L)//
|
||||
);
|
||||
UpdateBusinessStepConfigRequest request = new UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
|
||||
BusinessStepRequest request = new BusinessStepRequest().businessSteps(businessSteps);
|
||||
Response<Void> response = businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS, request)
|
||||
.execute();
|
||||
ErrorHelper.checkSuccessfulApiCall(response);
|
||||
@@ -62,7 +62,7 @@ public class WorkFlowJobHelper {
|
||||
|
||||
private void logChanges() throws IOException {
|
||||
// --- log changes ---
|
||||
Response<GetBusinessStepConfigResponse> changesResponse = businessStepConfigurationApi
|
||||
Response<JobBusinessStepConfigData> changesResponse = businessStepConfigurationApi
|
||||
.retrieveAllConfiguredBusinessStep(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS).execute();
|
||||
List<BusinessStep> businessStepsChanged = changesResponse.body().getBusinessSteps();
|
||||
List<String> changes = businessStepsChanged//
|
||||
|
||||
+13
-45
@@ -32,24 +32,18 @@ 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.Response;
|
||||
import jakarta.ws.rs.core.UriInfo;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.fineract.cob.data.ConfiguredJobNamesDTO;
|
||||
import org.apache.fineract.cob.data.JobBusinessStepConfigData;
|
||||
import org.apache.fineract.cob.data.JobBusinessStepDetail;
|
||||
import org.apache.fineract.cob.data.request.BusinessStepRequest;
|
||||
import org.apache.fineract.cob.service.ConfigJobParameterService;
|
||||
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.serialization.ApiRequestJsonSerializationSettings;
|
||||
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -59,15 +53,7 @@ import org.springframework.stereotype.Component;
|
||||
@RequiredArgsConstructor
|
||||
public class ConfigureBusinessStepApiResource {
|
||||
|
||||
private static final Set<String> BUSINESS_STEP_CONFIG_RESPONSE_DATA_PARAMETERS = new HashSet<>(
|
||||
Arrays.asList("jobName", "businessSteps"));
|
||||
private static final Set<String> BUSINESS_STEP_DETAIL_RESPONSE_DATA_PARAMETERS = new HashSet<>(
|
||||
Arrays.asList("jobName", "availableBusinessSteps"));
|
||||
|
||||
private final DefaultToApiJsonSerializer<JobBusinessStepConfigData> businessStepConfigSerializeService;
|
||||
private final DefaultToApiJsonSerializer<JobBusinessStepDetail> businessStepDetailSerializeService;
|
||||
private final DefaultToApiJsonSerializer<ConfiguredJobNamesDTO> configuredJobNamesSerializer;
|
||||
private final ApiRequestParameterHelper apiRequestParameterHelper;
|
||||
private final DefaultToApiJsonSerializer<String> toApiJsonSerializer;
|
||||
private final ConfigJobParameterService configJobParameterService;
|
||||
private final PortfolioCommandSourceWritePlatformService commandWritePlatformService;
|
||||
|
||||
@@ -75,14 +61,9 @@ public class ConfigureBusinessStepApiResource {
|
||||
@Path("/names")
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
@Operation(summary = "List Business Jobs", description = "Returns the configured Business Jobs")
|
||||
@ApiResponses({
|
||||
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = ConfigureBusinessStepResourceSwagger.GetBusinessJobConfigResponse.class))) })
|
||||
public String retrieveAllConfiguredBusinessJobs(@Context final UriInfo uriInfo) {
|
||||
|
||||
public ConfiguredJobNamesDTO retrieveAllConfiguredBusinessJobs() {
|
||||
List<String> businessJobNames = configJobParameterService.getAllConfiguredJobNames();
|
||||
ConfiguredJobNamesDTO result = new ConfiguredJobNamesDTO(businessJobNames);
|
||||
|
||||
return configuredJobNamesSerializer.serialize(result);
|
||||
return new ConfiguredJobNamesDTO(businessJobNames);
|
||||
}
|
||||
|
||||
@GET
|
||||
@@ -90,16 +71,9 @@ public class ConfigureBusinessStepApiResource {
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
@Operation(summary = "List Business Step Configurations for a Job", description = "Returns the configured Business Steps for a job")
|
||||
@ApiResponses({
|
||||
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = ConfigureBusinessStepResourceSwagger.GetBusinessStepConfigResponse.class))) })
|
||||
public String retrieveAllConfiguredBusinessStep(@Context final UriInfo uriInfo,
|
||||
public JobBusinessStepConfigData retrieveAllConfiguredBusinessStep(
|
||||
@PathParam("jobName") @Parameter(description = "jobName") final String jobName) {
|
||||
|
||||
JobBusinessStepConfigData jobBusinessStepConfigData = configJobParameterService.getBusinessStepConfigByJobName(jobName);
|
||||
|
||||
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
||||
return businessStepConfigSerializeService.serialize(settings, jobBusinessStepConfigData,
|
||||
BUSINESS_STEP_CONFIG_RESPONSE_DATA_PARAMETERS);
|
||||
return configJobParameterService.getBusinessStepConfigByJobName(jobName);
|
||||
}
|
||||
|
||||
@PUT
|
||||
@@ -107,13 +81,14 @@ public class ConfigureBusinessStepApiResource {
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
@Operation(summary = "List Business Step Configurations for a Job", description = "Updates the Business steps execution order for a job")
|
||||
@RequestBody(content = @Content(schema = @Schema(implementation = ConfigureBusinessStepResourceSwagger.UpdateBusinessStepConfigRequest.class)))
|
||||
@RequestBody(content = @Content(schema = @Schema(implementation = BusinessStepRequest.class)))
|
||||
@ApiResponses({ @ApiResponse(responseCode = "204", description = "NO_CONTENT") })
|
||||
public Response updateJobBusinessStepConfig(@PathParam("jobName") @Parameter(description = "jobName") final String jobName,
|
||||
@Parameter(hidden = true) final String jsonRequestBody) {
|
||||
@Parameter(hidden = true) BusinessStepRequest businessStepRequest) {
|
||||
|
||||
final CommandWrapper commandRequest = new CommandWrapperBuilder().updateBusinessStepConfig(jobName)
|
||||
.withJson(toApiJsonSerializer.serialize(businessStepRequest)).build();
|
||||
|
||||
final CommandWrapper commandRequest = new CommandWrapperBuilder().updateBusinessStepConfig(jobName).withJson(jsonRequestBody)
|
||||
.build();
|
||||
commandWritePlatformService.logCommandSource(commandRequest);
|
||||
return Response.status(Response.Status.NO_CONTENT).build();
|
||||
}
|
||||
@@ -123,15 +98,8 @@ public class ConfigureBusinessStepApiResource {
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
@Operation(summary = "List Business Step Configurations for a Job", description = "Returns the available Business Steps for a job")
|
||||
@ApiResponses({
|
||||
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = ConfigureBusinessStepResourceSwagger.GetBusinessStepConfigResponse.class))) })
|
||||
public String retrieveAllAvailableBusinessStep(@Context final UriInfo uriInfo,
|
||||
public JobBusinessStepDetail retrieveAllAvailableBusinessStep(
|
||||
@PathParam("jobName") @Parameter(description = "jobName") final String jobName) {
|
||||
|
||||
JobBusinessStepDetail availableBusinessStepsByJobName = configJobParameterService.getAvailableBusinessStepsByJobName(jobName);
|
||||
|
||||
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
||||
return businessStepDetailSerializeService.serialize(settings, availableBusinessStepsByJobName,
|
||||
BUSINESS_STEP_DETAIL_RESPONSE_DATA_PARAMETERS);
|
||||
return configJobParameterService.getAvailableBusinessStepsByJobName(jobName);
|
||||
}
|
||||
}
|
||||
|
||||
-70
@@ -1,70 +0,0 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.fineract.cob.api;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import java.util.List;
|
||||
|
||||
final class ConfigureBusinessStepResourceSwagger {
|
||||
|
||||
private ConfigureBusinessStepResourceSwagger() {
|
||||
|
||||
}
|
||||
|
||||
@Schema(description = "GetBusinessJobConfigResponse")
|
||||
public static final class GetBusinessJobConfigResponse {
|
||||
|
||||
private GetBusinessJobConfigResponse() {}
|
||||
|
||||
public List<String> businessJobs;
|
||||
|
||||
}
|
||||
|
||||
@Schema(description = "GetBusinessStepConfigResponse")
|
||||
public static final class GetBusinessStepConfigResponse {
|
||||
|
||||
private GetBusinessStepConfigResponse() {}
|
||||
|
||||
@Schema(example = "CLOSE_OF_BUSINESS")
|
||||
public String jobName;
|
||||
public List<BusinessStep> businessSteps;
|
||||
|
||||
}
|
||||
|
||||
@Schema(description = "BusinessStep")
|
||||
public static final class BusinessStep {
|
||||
|
||||
private BusinessStep() {}
|
||||
|
||||
@Schema(example = "APPLY_PENALTY_FOR_OVERDUE_LOANS")
|
||||
public String stepName;
|
||||
@Schema(example = "1")
|
||||
public Long order;
|
||||
|
||||
}
|
||||
|
||||
@Schema(description = "UpdateBusinessStepConfigRequest")
|
||||
public static final class UpdateBusinessStepConfigRequest {
|
||||
|
||||
private UpdateBusinessStepConfigRequest() {}
|
||||
|
||||
public List<BusinessStep> businessSteps;
|
||||
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.fineract.cob.data.request;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import org.apache.fineract.cob.data.BusinessStep;
|
||||
|
||||
public record BusinessStepRequest(List<BusinessStep> businessSteps) implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
||||
+2
-2
@@ -21,7 +21,7 @@ package org.apache.fineract.integrationtests.common;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.apache.fineract.client.models.BusinessStep;
|
||||
import org.apache.fineract.client.models.UpdateBusinessStepConfigRequest;
|
||||
import org.apache.fineract.client.models.BusinessStepRequest;
|
||||
import org.apache.fineract.client.util.Calls;
|
||||
|
||||
public class BusinessStepHelper {
|
||||
@@ -39,6 +39,6 @@ public class BusinessStepHelper {
|
||||
stepList.add(businessStep);
|
||||
}
|
||||
Calls.ok(FineractClientHelper.getFineractClient().businessStepConfiguration.updateJobBusinessStepConfig(jobName,
|
||||
new UpdateBusinessStepConfigRequest().businessSteps(stepList)));
|
||||
new BusinessStepRequest().businessSteps(stepList)));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user