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


##########
fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/api/FloatingRatesApiResource.java:
##########
@@ -35,75 +35,75 @@
 import jakarta.ws.rs.Produces;
 import jakarta.ws.rs.core.MediaType;
 import java.util.List;
+import java.util.function.Supplier;
 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.portfolio.floatingrates.command.FloatingRateCreateCommand;
+import 
org.apache.fineract.portfolio.floatingrates.command.FloatingRateUpdateCommand;
+import 
org.apache.fineract.portfolio.floatingrates.data.FloatingRateCreateResponse;
 import org.apache.fineract.portfolio.floatingrates.data.FloatingRateData;
 import org.apache.fineract.portfolio.floatingrates.data.FloatingRateRequest;
-import 
org.apache.fineract.portfolio.floatingrates.service.FloatingRatesReadPlatformService;
+import 
org.apache.fineract.portfolio.floatingrates.data.FloatingRateUpdateRequest;
+import 
org.apache.fineract.portfolio.floatingrates.data.FloatingRateUpdateResponse;
+import 
org.apache.fineract.portfolio.floatingrates.service.FloatingRatesReadService;
 import org.springframework.stereotype.Component;
 
 @Path("/v1/floatingrates")
+@Produces({ MediaType.APPLICATION_JSON })
 @Component
 @Tag(name = "Floating Rates", description = "It lets you create, list, 
retrieve and upload the floating rates")
 @RequiredArgsConstructor
 public class FloatingRatesApiResource {
 
-    private static final String RESOURCE_NAME = "FLOATINGRATE";
-    private final PlatformSecurityContext context;
-    private final PortfolioCommandSourceWritePlatformService 
commandsSourceWritePlatformService;
-    private final DefaultToApiJsonSerializer<FloatingRateData> 
toApiJsonSerializer;
-    private final FloatingRatesReadPlatformService 
floatingRatesReadPlatformService;
+    private final CommandDispatcher dispatcher;
+    private final FloatingRatesReadService floatingRatesReadService;
 
     @POST
     @Consumes({ MediaType.APPLICATION_JSON })
-    @Produces({ MediaType.APPLICATION_JSON })
     @Operation(summary = "Create a new Floating Rate", operationId = 
"createFloatingRate", description = "Creates a new Floating Rate\n"
             + "Mandatory Fields: name\n" + "Optional Fields: 
isBaseLendingRate, isActive, ratePeriods")
     @RequestBody(required = true, content = @Content(schema = 
@Schema(implementation = FloatingRateRequest.class)))
     @ApiResponse(responseCode = "200", description = "OK", content = 
@Content(schema = @Schema(implementation = 
FloatingRatesApiResourceSwagger.PostFloatingRatesResponse.class)))
-    public CommandProcessingResult createFloatingRate(@Parameter(hidden = 
true) final FloatingRateRequest floatingRateRequest) {
-        final CommandWrapper commandRequest = new 
CommandWrapperBuilder().createFloatingRate()
-                
.withJson(toApiJsonSerializer.serialize(floatingRateRequest)).build();
-        return 
commandsSourceWritePlatformService.logCommandSource(commandRequest);
+    public FloatingRateCreateResponse createFloatingRate(@Parameter(hidden = 
true) final FloatingRateRequest floatingRateRequest) {
+        final FloatingRateCreateCommand command = new 
FloatingRateCreateCommand();
+        command.setPayload(floatingRateRequest);
+
+        final Supplier<FloatingRateCreateResponse> response = 
dispatcher.dispatch(command);
+
+        return response.get();
     }
 
     @GET
-    @Produces({ MediaType.APPLICATION_JSON })
     @Operation(summary = "List Floating Rates", operationId = 
"retrieveAllFloatingRates", description = "Lists Floating Rates")
     @ApiResponse(responseCode = "200", description = "OK", content = 
@Content(array = @ArraySchema(schema = @Schema(implementation = 
FloatingRatesApiResourceSwagger.GetFloatingRatesResponse.class))))
     public List<FloatingRateData> retrieveAll() {
-        
this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME);
-        return floatingRatesReadPlatformService.retrieveAll();
+        return floatingRatesReadService.retrieveAll();
     }
 
     @GET
     @Path("{floatingRateId}")
-    @Produces({ MediaType.APPLICATION_JSON })
     @Operation(summary = "Retrieve Floating Rate", operationId = 
"retrieveOneFloatingRate", description = "Retrieves Floating Rate")
     public FloatingRateData retrieveOne(@PathParam("floatingRateId") 
@Parameter(description = "floatingRateId") final Long floatingRateId) {
-        
this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME);
-        return floatingRatesReadPlatformService.retrieveOne(floatingRateId);
+        return floatingRatesReadService.retrieveOne(floatingRateId);
     }
 
     @PUT
     @Path("{floatingRateId}")
     @Consumes({ MediaType.APPLICATION_JSON })
-    @Produces({ MediaType.APPLICATION_JSON })
     @Operation(summary = "Update Floating Rate", operationId = 
"updateFloatingRate", description = "Updates new Floating Rate. Rate Periods in 
the past cannot be modified. All the future rateperiods would be replaced with 
the new ratePeriods data sent.")
-    @RequestBody(required = true, content = @Content(schema = 
@Schema(implementation = FloatingRateRequest.class)))
+    @RequestBody(required = true, content = @Content(schema = 
@Schema(implementation = FloatingRateUpdateRequest.class)))
     @ApiResponse(responseCode = "200", description = "OK", content = 
@Content(schema = @Schema(implementation = 
FloatingRatesApiResourceSwagger.PutFloatingRatesFloatingRateIdResponse.class)))

Review Comment:
   See previous comment about dummy classes.



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