From f73b3527276e0ee2adca8cf5e7e855c521e11990 Mon Sep 17 00:00:00 2001 From: "oleksandr.masliuk" Date: Fri, 14 Mar 2025 12:00:46 +0200 Subject: [PATCH] FINERACT-2169: refactoring FloatingRatesApiResource - update swagger docs --- .../api/FloatingRatesApiResource.java | 13 +--- .../api/FloatingRatesApiResourceSwagger.java | 62 ------------------- .../floatingrates/data/FloatingRateData.java | 50 ++------------- .../data/FloatingRatePeriodData.java | 55 +++------------- 4 files changed, 17 insertions(+), 163 deletions(-) diff --git a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/api/FloatingRatesApiResource.java b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/api/FloatingRatesApiResource.java index 19c2adc88..698fa4269 100644 --- a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/api/FloatingRatesApiResource.java +++ b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/api/FloatingRatesApiResource.java @@ -35,10 +35,7 @@ import jakarta.ws.rs.Path; import jakarta.ws.rs.PathParam; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; -import java.util.Arrays; -import java.util.HashSet; import java.util.List; -import java.util.Set; import lombok.RequiredArgsConstructor; import org.apache.fineract.commands.domain.CommandWrapper; import org.apache.fineract.commands.service.CommandWrapperBuilder; @@ -58,10 +55,6 @@ import org.springframework.stereotype.Component; public class FloatingRatesApiResource { private static final String RESOURCE_NAME = "FLOATINGRATE"; - private static final Set LIST_FLOATING_RATES_PARAMETERS = new HashSet<>( - Arrays.asList("id", "name", "isBaseLendingRate", "isActive", "createdby", "createdOn", "modifiedBy", "modifiedOn")); - private static final Set INDIVIDUAL_FLOATING_RATES_PARAMETERS = new HashSet<>(Arrays.asList("id", "name", "isBaseLendingRate", - "isActive", "createdBy", "createdOn", "modifiedBy", "modifiedOn", "ratePeriods")); private final PlatformSecurityContext context; private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; private final DefaultToApiJsonSerializer toApiJsonSerializer; @@ -72,7 +65,7 @@ public class FloatingRatesApiResource { @Produces({ MediaType.APPLICATION_JSON }) @Operation(summary = "Create a new Floating Rate", description = "Creates a new Floating Rate\n" + "Mandatory Fields: name\n" + "Optional Fields: isBaseLendingRate, isActive, ratePeriods") - @RequestBody(required = true, content = @Content(schema = @Schema(implementation = FloatingRatesApiResourceSwagger.PostFloatingRatesRequest.class))) + @RequestBody(required = true, content = @Content(schema = @Schema(implementation = FloatingRateRequest.class))) @ApiResponses({ @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = FloatingRatesApiResourceSwagger.PostFloatingRatesResponse.class))) }) public CommandProcessingResult createFloatingRate(@Parameter(hidden = true) final FloatingRateRequest floatingRateRequest) { @@ -97,8 +90,6 @@ public class FloatingRatesApiResource { @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) @Operation(summary = "Retrieve Floating Rate", description = "Retrieves Floating Rate") - @ApiResponses({ - @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = FloatingRatesApiResourceSwagger.GetFloatingRatesFloatingRateIdResponse.class))) }) public FloatingRateData retrieveOne(@PathParam("floatingRateId") @Parameter(description = "floatingRateId") final Long floatingRateId) { this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME); return floatingRatesReadPlatformService.retrieveOne(floatingRateId); @@ -109,7 +100,7 @@ public class FloatingRatesApiResource { @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) @Operation(summary = "Update Floating Rate", 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 = FloatingRatesApiResourceSwagger.PutFloatingRatesFloatingRateIdRequest.class))) + @RequestBody(required = true, content = @Content(schema = @Schema(implementation = FloatingRateRequest.class))) @ApiResponses({ @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = FloatingRatesApiResourceSwagger.PutFloatingRatesFloatingRateIdResponse.class))) }) public CommandProcessingResult updateFloatingRate( diff --git a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/api/FloatingRatesApiResourceSwagger.java b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/api/FloatingRatesApiResourceSwagger.java index db4dfa227..7eb27ca6f 100644 --- a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/api/FloatingRatesApiResourceSwagger.java +++ b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/api/FloatingRatesApiResourceSwagger.java @@ -88,68 +88,6 @@ final class FloatingRatesApiResourceSwagger { public String modifiedOn; } - @Schema(description = "GetFloatingRatesFloatingRateIdResponse") - public static final class GetFloatingRatesFloatingRateIdResponse { - - private GetFloatingRatesFloatingRateIdResponse() {} - - static final class GetFloatingRatesRatePeriods { - - private GetFloatingRatesRatePeriods() {} - - @Schema(example = "1") - public Long id; - @Schema(example = "Dec 15, 2015") - public String fromDate; - @Schema(example = "11") - public Double interestRate; - @Schema(example = "false") - public Boolean isDifferentialToBaseLendingRate; - @Schema(example = "true") - public Boolean isActive; - @Schema(example = "mifos") - public String createdBy; - @Schema(example = "Nov 18, 2015") - public String createdOn; - @Schema(example = "mifos") - public String modifiedBy; - @Schema(example = "Nov 18, 2015") - public String modifiedOn; - } - - @Schema(example = "1") - public Long id; - @Schema(example = "Floating Rate 1") - public String name; - @Schema(example = "true") - public Boolean isBaseLendingRate; - @Schema(example = "true") - public Boolean isActive; - @Schema(example = "mifos") - public String createdBy; - @Schema(example = "Nov 18, 2015") - public String createdOn; - @Schema(example = "mifos") - public String modifiedBy; - @Schema(example = "Nov 18, 2015") - public String modifiedOn; - public Set ratePeriods; - } - - @Schema(description = "PutFloatingRatesFloatingRateIdRequest") - public static final class PutFloatingRatesFloatingRateIdRequest { - - private PutFloatingRatesFloatingRateIdRequest() {} - - @Schema(example = "Floating Rate 1") - public String name; - @Schema(example = "true") - public Boolean isBaseLendingRate; - @Schema(example = "true") - public Boolean isActive; - public Set ratePeriods; - } - @Schema(description = "PutFloatingRatesFloatingRateIdResponse") public static final class PutFloatingRatesFloatingRateIdResponse { diff --git a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRateData.java b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRateData.java index c85dc50d2..cd66167cf 100644 --- a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRateData.java +++ b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRateData.java @@ -18,34 +18,30 @@ */ package org.apache.fineract.portfolio.floatingrates.data; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; import java.io.Serializable; import java.time.OffsetDateTime; import java.util.List; +import lombok.Getter; import org.apache.commons.lang3.builder.CompareToBuilder; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.fineract.infrastructure.core.data.EnumOptionData; -@JsonInclude(JsonInclude.Include.NON_NULL) +@Getter public class FloatingRateData implements Comparable, Serializable { private final Long id; private final String name; - @JsonProperty("isBaseLendingRate") - private final boolean isBaseLendingRate; - @JsonProperty("isActive") - private final boolean isActive; + private final Boolean isBaseLendingRate; + private final Boolean isActive; private final String createdBy; private final OffsetDateTime createdOn; private final String modifiedBy; private final OffsetDateTime modifiedOn; private final List ratePeriods; - @SuppressWarnings("unused") private final List interestRateFrequencyTypeOptions; - public FloatingRateData(Long id, String name, boolean isBaseLendingRate, boolean isActive, String createdBy, OffsetDateTime createdOn, + public FloatingRateData(Long id, String name, Boolean isBaseLendingRate, Boolean isActive, String createdBy, OffsetDateTime createdOn, String modifiedBy, OffsetDateTime modifiedOn, List ratePeriods, List interestRateFrequencyTypeOptions) { this.id = id; @@ -60,42 +56,6 @@ public class FloatingRateData implements Comparable, Serializa this.interestRateFrequencyTypeOptions = interestRateFrequencyTypeOptions; } - public Long getId() { - return this.id; - } - - public String getName() { - return this.name; - } - - public boolean isBaseLendingRate() { - return this.isBaseLendingRate; - } - - public boolean isActive() { - return this.isActive; - } - - public String getCreatedBy() { - return this.createdBy; - } - - public OffsetDateTime getCreatedOn() { - return this.createdOn; - } - - public String getModifiedBy() { - return this.modifiedBy; - } - - public OffsetDateTime getModifiedOn() { - return this.modifiedOn; - } - - public List getRatePeriods() { - return this.ratePeriods; - } - @Override public int compareTo(final FloatingRateData obj) { if (obj == null) { diff --git a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRatePeriodData.java b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRatePeriodData.java index 14d6c1c53..60cafee40 100644 --- a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRatePeriodData.java +++ b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRatePeriodData.java @@ -18,33 +18,33 @@ */ package org.apache.fineract.portfolio.floatingrates.data; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.time.OffsetDateTime; +import lombok.Getter; import org.apache.commons.lang3.builder.CompareToBuilder; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; +@Getter @JsonInclude(JsonInclude.Include.NON_NULL) public class FloatingRatePeriodData implements Comparable, Serializable { private Long id; private LocalDate fromDate; private BigDecimal interestRate; - @JsonProperty("isDifferentialToBaseLendingRate") - private boolean isDifferentialToBaseLendingRate; - @JsonProperty("isActive") - private boolean isActive; + private Boolean isDifferentialToBaseLendingRate; + private Boolean isActive; private String createdBy; private OffsetDateTime createdOn; private String modifiedBy; private OffsetDateTime modifiedOn; - public FloatingRatePeriodData(Long id, LocalDate fromDate, BigDecimal interestRate, boolean isDifferentialToBaseLendingRate, - boolean isActive, String createdBy, OffsetDateTime createdOn, String modifiedBy, OffsetDateTime modifiedOn) { + public FloatingRatePeriodData(Long id, LocalDate fromDate, BigDecimal interestRate, Boolean isDifferentialToBaseLendingRate, + Boolean isActive, String createdBy, OffsetDateTime createdOn, String modifiedBy, OffsetDateTime modifiedOn) { this.id = id; this.fromDate = fromDate; this.interestRate = interestRate; @@ -56,8 +56,8 @@ public class FloatingRatePeriodData implements Comparable