vidakovic commented on code in PR #5856:
URL: https://github.com/apache/fineract/pull/5856#discussion_r3261800127


##########
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:
   You  misse this. Not needed, we have types now. Remove the swagger 
@ApiResponse annotation please. See earlier comment. Please make sure that you 
didn't miss any of these.



-- 
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]

Reply via email to