This is an automated email from the ASF dual-hosted git repository.
adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/develop by this push:
new 1b9459b7b4 FINERACT-2169: Refactor field configuration api controller;
1b9459b7b4 is described below
commit 1b9459b7b48b98ff55732122925394f78f2b1c1b
Author: viktorpavlenko <[email protected]>
AuthorDate: Wed Mar 26 10:53:39 2025 +0200
FINERACT-2169: Refactor field configuration api controller;
---
.../api/EntityFieldConfigurationApiResource.java | 32 ++---------
...ntityFieldConfigurationApiResourcesSwagger.java | 51 ------------------
.../address/data/FieldConfigurationData.java | 63 +++-------------------
.../AddressCommandFromApiJsonDeserializer.java | 16 +++---
.../FieldConfigurationReadPlatformService.java | 3 +-
.../FieldConfigurationReadPlatformServiceImpl.java | 6 +--
6 files changed, 19 insertions(+), 152 deletions(-)
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/api/EntityFieldConfigurationApiResource.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/api/EntityFieldConfigurationApiResource.java
index fda49f47d2..0b80c81382 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/api/EntityFieldConfigurationApiResource.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/api/EntityFieldConfigurationApiResource.java
@@ -20,28 +20,15 @@ package org.apache.fineract.portfolio.address.api;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.media.ArraySchema;
-import io.swagger.v3.oas.annotations.media.Content;
-import io.swagger.v3.oas.annotations.media.Schema;
-import io.swagger.v3.oas.annotations.responses.ApiResponse;
-import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.GET;
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.UriInfo;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.List;
import lombok.RequiredArgsConstructor;
-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.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
import org.apache.fineract.portfolio.address.data.FieldConfigurationData;
import
org.apache.fineract.portfolio.address.service.FieldConfigurationReadPlatformService;
@@ -55,30 +42,17 @@ import org.springframework.stereotype.Component;
@RequiredArgsConstructor
public class EntityFieldConfigurationApiResource {
- private static final Set<String> RESPONSE_DATA_PARAMETERS = new HashSet<>(
- Arrays.asList("clientAddressId", "client_id", "address_id",
"address_type_id", "isActive", "fieldConfigurationId", "entity",
- "table", "field", "is_enabled", "is_mandatory",
"validation_regex"));
private static final String RESOURCE_NAME_FOR_PERMISSIONS = "Address";
private final PlatformSecurityContext context;
private final FieldConfigurationReadPlatformService readPlatformServicefld;
- private final DefaultToApiJsonSerializer<FieldConfigurationData>
toApiJsonSerializerfld;
- private final ApiRequestParameterHelper apiRequestParameterHelper;
@GET
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Retrieves the Entity Field Configuration",
description = "It retrieves all the Entity Field Configuration")
- @ApiResponses({
- @ApiResponse(responseCode = "200", description = "OK", content =
@Content(array = @ArraySchema(schema = @Schema(implementation =
EntityFieldConfigurationApiResourcesSwagger.GetFieldConfigurationEntityResponse.class))))
})
- public String getAddresses(@PathParam("entity") @Parameter(description =
"entity") final String entityname,
- @Context final UriInfo uriInfo) {
+ public List<FieldConfigurationData> getAddresses(@PathParam("entity")
@Parameter(description = "entity") final String entityname) {
this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME_FOR_PERMISSIONS);
-
- final Collection<FieldConfigurationData> fldconfig =
this.readPlatformServicefld.retrieveFieldConfiguration(entityname);
-
- final ApiRequestJsonSerializationSettings settings =
this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
- return this.toApiJsonSerializerfld.serialize(settings, fldconfig,
RESPONSE_DATA_PARAMETERS);
-
+ return
this.readPlatformServicefld.retrieveFieldConfiguration(entityname);
}
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/api/EntityFieldConfigurationApiResourcesSwagger.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/api/EntityFieldConfigurationApiResourcesSwagger.java
deleted file mode 100644
index 73556ee52d..0000000000
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/api/EntityFieldConfigurationApiResourcesSwagger.java
+++ /dev/null
@@ -1,51 +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.portfolio.address.api;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-
-/**
- * Created by Chirag Gupta on 12/01/17.
- */
-@SuppressWarnings({ "MemberName" })
-final class EntityFieldConfigurationApiResourcesSwagger {
-
- private EntityFieldConfigurationApiResourcesSwagger() {}
-
- @Schema(description = "GetFieldConfigurationEntityResponse")
- public static final class GetFieldConfigurationEntityResponse {
-
- private GetFieldConfigurationEntityResponse() {}
-
- @Schema(example = "1")
- public Long fieldConfigurationId;
- @Schema(example = "ADDRESS")
- public String entity;
- @Schema(example = "CLIENT")
- public String subentity;
- @Schema(example = "addressType")
- public String field;
- @Schema(example = "true")
- public String is_enabled;
- @Schema(example = "false")
- public String is_mandatory;
- @Schema(example = " ")
- public String validation_regex;
- }
-}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/FieldConfigurationData.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/FieldConfigurationData.java
index da5d4fe178..0d8b4dc3e1 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/FieldConfigurationData.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/FieldConfigurationData.java
@@ -18,64 +18,13 @@
*/
package org.apache.fineract.portfolio.address.data;
-public final class FieldConfigurationData {
+import java.io.Serial;
+import java.io.Serializable;
- private final long fieldConfigurationId;
+public record FieldConfigurationData(Long fieldConfigurationId, String entity,
String subentity, String field, boolean isEnabled,
+ boolean isMandatory, String validationRegex) implements Serializable {
- private final String entity;
-
- private final String subentity;
-
- private final String field;
-
- private final boolean isEnabled;
-
- private final boolean isMandatory;
-
- private final String validationRegex;
-
- private FieldConfigurationData(final long fieldConfigurationId, final
String entity, final String subentity, final String field,
- final boolean isEnabled, final boolean isMandatory, final String
validationRegex) {
- this.fieldConfigurationId = fieldConfigurationId;
- this.entity = entity;
- this.subentity = subentity;
- this.field = field;
- this.isEnabled = isEnabled;
- this.isMandatory = isMandatory;
- this.validationRegex = validationRegex;
- }
-
- public static FieldConfigurationData instance(final long
fieldConfigurationId, final String entity, final String subentity,
- final String field, final boolean isEnabled, final boolean
isMandatory, final String validationRegex) {
- return new FieldConfigurationData(fieldConfigurationId, entity,
subentity, field, isEnabled, isMandatory, validationRegex);
- }
-
- public long getFieldConfigurationId() {
- return this.fieldConfigurationId;
- }
-
- public String getEntity() {
- return this.entity;
- }
-
- public String getSubEntity() {
- return this.subentity;
- }
-
- public String getField() {
- return this.field;
- }
-
- public boolean isEnabled() {
- return this.isEnabled;
- }
-
- public boolean isIs_mandatory() {
- return this.isMandatory;
- }
-
- public String getValidation_regex() {
- return this.validationRegex;
- }
+ @Serial
+ private static final long serialVersionUID = 1L;
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/serialization/AddressCommandFromApiJsonDeserializer.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/serialization/AddressCommandFromApiJsonDeserializer.java
index 8ed7301b09..0a00c7cae5 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/serialization/AddressCommandFromApiJsonDeserializer.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/serialization/AddressCommandFromApiJsonDeserializer.java
@@ -65,10 +65,9 @@ public class AddressCommandFromApiJsonDeserializer {
final JsonElement element = this.fromApiJsonHelper.parse(json);
final List<FieldConfigurationData> configurationData = new
ArrayList<>(this.readservice.retrieveFieldConfigurationList("ADDRESS"));
// validate the json fields from the configuration data fields
- final List<FieldConfigurationData> configData =
configurationData.stream().filter(FieldConfigurationData::isEnabled)
- .collect(Collectors.toList());
+ final List<FieldConfigurationData> configData =
configurationData.stream().filter(FieldConfigurationData::isEnabled).toList();
- final Set<String> supportedParameters =
configData.stream().map(FieldConfigurationData::getField).collect(Collectors.toSet());
+ final Set<String> supportedParameters =
configData.stream().map(FieldConfigurationData::field).collect(Collectors.toSet());
supportedParameters.add("locale");
supportedParameters.add("dateFormat");
@@ -77,20 +76,19 @@ public class AddressCommandFromApiJsonDeserializer {
this.fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap, json,
supportedParameters);
configData.forEach(fieldConfiguration -> {
- final String field =
fieldConfiguration.getField().equals("addressType") ? "addressTypeId" :
fieldConfiguration.getField();
+ final String field =
fieldConfiguration.field().equals("addressType") ? "addressTypeId" :
fieldConfiguration.field();
final String fieldValue =
this.fromApiJsonHelper.extractStringNamed(field, element);
- if (fieldConfiguration.getField().equals("addressType") &&
fromNewClient) {
+ if (fieldConfiguration.field().equals("addressType") &&
fromNewClient) {
baseDataValidator.reset().parameter(field).value(fieldValue).notBlank();
} else {
- if (fieldConfiguration.isIs_mandatory() && fromNewClient) {
+ if (fieldConfiguration.isMandatory() && fromNewClient) {
baseDataValidator.reset().parameter(field).value(fieldValue).notBlank();
}
}
- if (!fieldConfiguration.getValidation_regex().isEmpty()) {
- baseDataValidator.reset().parameter(field).value(fieldValue)
-
.matchesRegularExpression(fieldConfiguration.getValidation_regex());
+ if (!fieldConfiguration.validationRegex().isEmpty()) {
+
baseDataValidator.reset().parameter(field).value(fieldValue).matchesRegularExpression(fieldConfiguration.validationRegex());
}
});
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/FieldConfigurationReadPlatformService.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/FieldConfigurationReadPlatformService.java
index 89823386f5..33b96e7bb8 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/FieldConfigurationReadPlatformService.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/FieldConfigurationReadPlatformService.java
@@ -18,13 +18,12 @@
*/
package org.apache.fineract.portfolio.address.service;
-import java.util.Collection;
import java.util.List;
import org.apache.fineract.portfolio.address.data.FieldConfigurationData;
public interface FieldConfigurationReadPlatformService {
- Collection<FieldConfigurationData> retrieveFieldConfiguration(String
entity);
+ List<FieldConfigurationData> retrieveFieldConfiguration(String entity);
List<FieldConfigurationData> retrieveFieldConfigurationList(String entity);
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/FieldConfigurationReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/FieldConfigurationReadPlatformServiceImpl.java
index b2c2b9da1a..521f647da7 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/FieldConfigurationReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/FieldConfigurationReadPlatformServiceImpl.java
@@ -20,7 +20,6 @@ package org.apache.fineract.portfolio.address.service;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Collection;
import java.util.List;
import
org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
import org.apache.fineract.portfolio.address.data.FieldConfigurationData;
@@ -58,14 +57,13 @@ public class FieldConfigurationReadPlatformServiceImpl
implements FieldConfigura
final boolean is_mandatory = rs.getBoolean("is_mandatory");
final String validation_regex = rs.getString("validation_regex");
- return FieldConfigurationData.instance(fieldConfigurationId,
entity, subentity, field, is_enabled, is_mandatory,
- validation_regex);
+ return new FieldConfigurationData(fieldConfigurationId, entity,
subentity, field, is_enabled, is_mandatory, validation_regex);
}
}
@Override
- public Collection<FieldConfigurationData> retrieveFieldConfiguration(final
String entity) {
+ public List<FieldConfigurationData> retrieveFieldConfiguration(final
String entity) {
this.context.authenticatedUser();
final FieldMapper rm = new FieldMapper();