vidakovic commented on code in PR #5856:
URL: https://github.com/apache/fineract/pull/5856#discussion_r3260396824
##########
fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/api/CollateralManagementApiResource.java:
##########
@@ -36,103 +35,86 @@
import jakarta.ws.rs.core.MediaType;
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.data.CommandProcessingResult;
-import
org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
-import
org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
+import org.apache.fineract.command.core.CommandDispatcher;
import org.apache.fineract.organisation.monetary.data.CurrencyData;
import
org.apache.fineract.organisation.monetary.service.CurrencyReadPlatformService;
+import
org.apache.fineract.portfolio.collateralmanagement.command.CollateralProductCreateCommand;
+import
org.apache.fineract.portfolio.collateralmanagement.command.CollateralProductDeleteCommand;
+import
org.apache.fineract.portfolio.collateralmanagement.command.CollateralProductUpdateCommand;
import
org.apache.fineract.portfolio.collateralmanagement.data.CollateralManagementData;
-import
org.apache.fineract.portfolio.collateralmanagement.data.CollateralManagementProductRequest;
-import
org.apache.fineract.portfolio.collateralmanagement.data.CollateralProductRequest;
-import
org.apache.fineract.portfolio.collateralmanagement.service.CollateralManagementReadPlatformService;
+import
org.apache.fineract.portfolio.collateralmanagement.data.CollateralProductCreateRequest;
+import
org.apache.fineract.portfolio.collateralmanagement.data.CollateralProductCreateResponse;
+import
org.apache.fineract.portfolio.collateralmanagement.data.CollateralProductDeleteRequest;
+import
org.apache.fineract.portfolio.collateralmanagement.data.CollateralProductDeleteResponse;
+import
org.apache.fineract.portfolio.collateralmanagement.data.CollateralProductUpdateRequest;
+import
org.apache.fineract.portfolio.collateralmanagement.data.CollateralProductUpdateResponse;
+import
org.apache.fineract.portfolio.collateralmanagement.service.CollateralManagementReadService;
import org.springframework.stereotype.Component;
@Path("/v1/collateral-management")
@Component
@Tag(name = "Collateral Management", description = "Collateral Management is
for managing collateral operations")
@RequiredArgsConstructor
+@Consumes({ MediaType.APPLICATION_JSON })
+@Produces({ MediaType.APPLICATION_JSON })
public class CollateralManagementApiResource {
- private final DefaultToApiJsonSerializer<CollateralManagementData>
apiJsonSerializerService;
- private final DefaultToApiJsonSerializer<CurrencyData>
apiJsonSerializerServiceForCurrency;
- private final PortfolioCommandSourceWritePlatformService
commandsSourceWritePlatformService;
- private final PlatformSecurityContext context;
- private final CollateralManagementReadPlatformService
collateralManagementReadPlatformService;
+ private final CommandDispatcher dispatcher;
+ private final CollateralManagementReadService
collateralManagementReadService;
private final CurrencyReadPlatformService currencyReadPlatformService;
@POST
- @Consumes({ MediaType.APPLICATION_JSON })
- @Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Create a new collateral", description = "Collateral
Creation")
- @RequestBody(required = true, content = @Content(schema =
@Schema(implementation = CollateralManagementProductRequest.class)))
- @ApiResponse(responseCode = "200", description = "OK", content =
@Content(schema = @Schema(implementation =
CollateralManagementApiResourceSwagger.PostCollateralManagementProductResponse.class)))
- public CommandProcessingResult createCollateral(
- @Parameter(hidden = true) final CollateralManagementProductRequest
collateralManagementProductRequest) {
- final CommandWrapper commandWrapper = new
CommandWrapperBuilder().createCollateral()
-
.withJson(apiJsonSerializerService.serialize(collateralManagementProductRequest)).build();
- return
this.commandsSourceWritePlatformService.logCommandSource(commandWrapper);
+ @ApiResponse(responseCode = "200", description = "OK", content =
@Content(schema = @Schema(implementation =
CollateralProductCreateResponse.class)))
+ public CollateralProductCreateResponse
createCollateral(CollateralProductCreateRequest request) {
+ final var command = new CollateralProductCreateCommand();
+ command.setPayload(request);
+ return dispatcher.<CollateralProductCreateRequest,
CollateralProductCreateResponse>dispatch(command).get();
}
@GET
@Path("{collateralId}")
- @Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Get Collateral", description = "Fetch Collateral")
public CollateralManagementData getCollateral(
@PathParam("collateralId") @Parameter(description =
"collateralId") final Long collateralId) {
-
- this.context.authenticatedUser()
-
.validateHasReadPermission(CollateralManagementJsonInputParams.COLLATERAL_PRODUCT_READ_PERMISSION.getValue());
-
- return
this.collateralManagementReadPlatformService.getCollateralProduct(collateralId);
+ return
collateralManagementReadService.getCollateralProduct(collateralId);
}
@GET
- @Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Get All Collaterals", description = "Fetch all
Collateral Products")
public List<CollateralManagementData> getAllCollaterals() {
- this.context.authenticatedUser()
-
.validateHasReadPermission(CollateralManagementJsonInputParams.COLLATERAL_PRODUCT_READ_PERMISSION.getValue());
- return
this.collateralManagementReadPlatformService.getAllCollateralProducts();
+ return collateralManagementReadService.getAllCollateralProducts();
}
@GET
@Path("template")
- @Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Get Collateral Template", description = "Get
Collateral Template")
public List<CurrencyData> getCollateralTemplate() {
return currencyReadPlatformService.retrieveAllPlatformCurrencies();
}
@PUT
@Path("{collateralId}")
- @Consumes({ MediaType.APPLICATION_JSON })
- @Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Update Collateral", description = "Update
Collateral")
- @RequestBody(required = true, content = @Content(schema =
@Schema(implementation = CollateralProductRequest.class)))
- @ApiResponse(responseCode = "200", description = "OK", content =
@Content(schema = @Schema(implementation =
CollateralManagementApiResourceSwagger.PutCollateralProductResponse.class)))
- public CommandProcessingResult updateCollateral(
+ @ApiResponse(responseCode = "200", description = "OK", content =
@Content(schema = @Schema(implementation =
CollateralProductUpdateResponse.class)))
Review Comment:
Drop ApiResponse annotation. We are already type safe, not needed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]