This is an automated email from the ASF dual-hosted git repository.

ptuomola 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 3c5b16d  NPE at AddressWritePlatformServiceImpl.addNewClientAddress().
3c5b16d is described below

commit 3c5b16df445480a8de71807d0b4b47ad373b67c7
Author: Vishal Moorthy <[email protected]>
AuthorDate: Sat Aug 28 00:41:01 2021 +0530

    NPE at AddressWritePlatformServiceImpl.addNewClientAddress().
---
 .../address/data/FieldConfigurationData.java       |   2 +-
 .../AddressCommandFromApiJsonDeserializer.java     | 177 +++------------------
 2 files changed, 23 insertions(+), 156 deletions(-)

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 1700bc9..da5d4fe 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
@@ -66,7 +66,7 @@ public final class FieldConfigurationData {
         return this.field;
     }
 
-    public boolean isisEnabled() {
+    public boolean isEnabled() {
         return this.isEnabled;
     }
 
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 a97ec13..9b8d37e 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
@@ -21,13 +21,11 @@ package org.apache.fineract.portfolio.address.serialization;
 import com.google.gson.JsonElement;
 import com.google.gson.reflect.TypeToken;
 import java.lang.reflect.Type;
-import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.fineract.infrastructure.core.data.ApiParameterError;
 import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
@@ -71,170 +69,39 @@ public class AddressCommandFromApiJsonDeserializer {
         final DataValidatorBuilder baseDataValidator = new 
DataValidatorBuilder(dataValidationErrors).resource("Address");
 
         final JsonElement element = this.fromApiJsonHelper.parse(json);
-        Set<String> supportedParameters = new HashSet<>();
-
         final List<FieldConfigurationData> configurationData = new 
ArrayList<>(this.readservice.retrieveFieldConfigurationList("ADDRESS"));
-        final List<String> enabledFieldList = new ArrayList<>();
-
-        final Map<String, Boolean> madatoryFieldsMap = new HashMap<String, 
Boolean>();
-        final Map<String, Boolean> enabledFieldsMap = new HashMap<String, 
Boolean>();
-        final Map<String, String> regexFieldsMap = new HashMap<String, 
String>();
-
         // validate the json fields from the configuration data fields
+        final List<FieldConfigurationData> configData = 
configurationData.stream().filter(FieldConfigurationData::isEnabled)
+                .collect(Collectors.toList());
 
-        for (final FieldConfigurationData data : configurationData) {
-            madatoryFieldsMap.put(data.getField(), data.isIs_mandatory());
-            enabledFieldsMap.put(data.getField(), data.isisEnabled());
-            regexFieldsMap.put(data.getField(), data.getValidation_regex());
-            if (data.isisEnabled()) {
-                enabledFieldList.add(data.getField());
-            }
-        }
-        if (fromNewClient) {
-
-            enabledFieldList.add("addressTypeId");
-            enabledFieldList.add("locale");
-            enabledFieldList.add("dateFormat");
-            supportedParameters = new HashSet<>(enabledFieldList);
+        final Set<String> supportedParameters = configData.stream()
+                .map(FieldConfigurationData::getField)
+                .collect(Collectors.toSet());
 
-            madatoryFieldsMap.put("addressTypeId", true);
-
-        }
-        if (!fromNewClient) {
-            enabledFieldList.add("locale");
-            enabledFieldList.add("dateFormat");
-            enabledFieldList.add("addressId");
-            madatoryFieldsMap.put("addressId", true);
-            supportedParameters = new HashSet<>(enabledFieldList);
-        }
+        supportedParameters.add("locale");
+        supportedParameters.add("dateFormat");
+        supportedParameters.add(fromNewClient ? "addressTypeId" : "addressId");
 
         this.fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap, json, 
supportedParameters);
 
-        final String addressLine1 = 
this.fromApiJsonHelper.extractStringNamed("addressLine1", element);
-        if (enabledFieldsMap.get("addressLine1")) {
-            if (madatoryFieldsMap.get("addressLine1") && fromNewClient) {
-                
baseDataValidator.reset().parameter("addressLine1").value(addressLine1).notBlank();
-            }
-            if (!regexFieldsMap.get("addressLine1").isEmpty()) {
-                
baseDataValidator.reset().parameter("addressLine1").value(addressLine1)
-                        
.matchesRegularExpression(regexFieldsMap.get("addressLine1"));
-            }
+        configData.forEach(fieldConfiguration -> {
+            final String field =
+                    fieldConfiguration.getField().equals("addressType") ? 
"addressTypeId" : fieldConfiguration.getField();
+            final String fieldValue = 
this.fromApiJsonHelper.extractStringNamed(field, element);
 
-        }
-        final String addressLine2 = 
this.fromApiJsonHelper.extractStringNamed("addressLine2", element);
-        if (enabledFieldsMap.get("addressLine2")) {
-            if (madatoryFieldsMap.get("addressLine2") && fromNewClient) {
-                
baseDataValidator.reset().parameter("addressLine2").value(addressLine2).notBlank();
-            }
-            if (!regexFieldsMap.get("addressLine2").isEmpty()) {
-                
baseDataValidator.reset().parameter("addressLine2").value(addressLine2)
-                        
.matchesRegularExpression(regexFieldsMap.get("addressLine2"));
-            }
-        }
-        final String addressLine3 = 
this.fromApiJsonHelper.extractStringNamed("addressLine3", element);
-        if (enabledFieldsMap.get("addressLine3")) {
-            if (madatoryFieldsMap.get("addressLine3") && fromNewClient) {
-                
baseDataValidator.reset().parameter("addressLine3").value(addressLine3).notBlank();
-            }
-            if (!regexFieldsMap.get("addressLine3").isEmpty()) {
-                
baseDataValidator.reset().parameter("addressLine3").value(addressLine3)
-                        
.matchesRegularExpression(regexFieldsMap.get("addressLine3"));
-            }
-        }
-        final String townVillage = 
this.fromApiJsonHelper.extractStringNamed("townVillage", element);
-        if (enabledFieldsMap.get("townVillage")) {
-            if (madatoryFieldsMap.get("townVillage") && fromNewClient) {
-                
baseDataValidator.reset().parameter("townVillage").value(townVillage).notBlank();
-            }
-            if (!regexFieldsMap.get("townVillage").isEmpty()) {
-                
baseDataValidator.reset().parameter("townVillage").value(townVillage)
-                        
.matchesRegularExpression(regexFieldsMap.get("townVillage"));
-            }
-        }
-        final String city = this.fromApiJsonHelper.extractStringNamed("city", 
element);
-
-        if (enabledFieldsMap.get("city")) {
-            if (madatoryFieldsMap.get("city") && fromNewClient) {
-                
baseDataValidator.reset().parameter("city").value(city).notBlank();
-            }
-            if (!regexFieldsMap.get("city").isEmpty()) {
-                
baseDataValidator.reset().parameter("city").value(city).matchesRegularExpression(regexFieldsMap.get("city"));
-            }
-        }
-        final String countyDistrict = 
this.fromApiJsonHelper.extractStringNamed("countyDistrict", element);
-        if (enabledFieldsMap.get("countyDistrict")) {
-            if (madatoryFieldsMap.get("countyDistrict") && fromNewClient) {
-                
baseDataValidator.reset().parameter("countyDistrict").value(countyDistrict).notBlank();
-            }
-            if (!regexFieldsMap.get("countyDistrict").isEmpty()) {
-                
baseDataValidator.reset().parameter("countyDistrict").value(countyDistrict)
-                        
.matchesRegularExpression(regexFieldsMap.get("countyDistrict"));
-            }
-        }
-
-        if (this.fromApiJsonHelper.extractLongNamed("stateProvinceId", 
element) != null) {
-
-            final long stateProvinceId = 
this.fromApiJsonHelper.extractLongNamed("stateProvinceId", element);
-            if (enabledFieldsMap.get("stateProvinceId")) {
-                if (madatoryFieldsMap.get("stateProvinceId") && fromNewClient) 
{
-                    
baseDataValidator.reset().parameter("stateProvinceId").value(stateProvinceId).notBlank();
-                }
-                if (!regexFieldsMap.get("stateProvinceId").isEmpty()) {
-                    
baseDataValidator.reset().parameter("stateProvinceId").value(stateProvinceId)
-                            
.matchesRegularExpression(regexFieldsMap.get("stateProvinceId"));
-                }
-            }
-        }
-
-        if (this.fromApiJsonHelper.extractLongNamed("countryId", element) != 
null) {
-            final long countryId = 
this.fromApiJsonHelper.extractLongNamed("countryId", element);
-            if (enabledFieldsMap.get("countryId")) {
-                if (madatoryFieldsMap.get("countryId") && fromNewClient) {
-                    
baseDataValidator.reset().parameter("countryId").value(countryId).notBlank();
-                }
-                if (!regexFieldsMap.get("countryId").isEmpty()) {
-                    
baseDataValidator.reset().parameter("countryId").value(countryId)
-                            
.matchesRegularExpression(regexFieldsMap.get("countryId"));
-                }
-            }
-        }
-
-        final String postalCode = 
this.fromApiJsonHelper.extractStringNamed("postalCode", element);
-        if (enabledFieldsMap.get("postalCode")) {
-            if (madatoryFieldsMap.get("postalCode") && fromNewClient) {
-                
baseDataValidator.reset().parameter("postalCode").value(postalCode).notBlank();
-            }
-            if (!regexFieldsMap.get("postalCode").isEmpty()) {
-                
baseDataValidator.reset().parameter("postalCode").value(postalCode)
-                        
.matchesRegularExpression(regexFieldsMap.get("postalCode"));
-            }
-        }
-
-        if 
(this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed("latitude", element) 
!= null) {
-            final BigDecimal latitude = 
this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed("latitude", element);
-            if (enabledFieldsMap.get("latitude")) {
-                if (madatoryFieldsMap.get("latitude") && fromNewClient) {
-                    
baseDataValidator.reset().parameter("latitude").value(latitude).notBlank();
-                }
-                if (!regexFieldsMap.get("latitude").isEmpty()) {
-                    
baseDataValidator.reset().parameter("latitude").value(latitude)
-                            
.matchesRegularExpression(regexFieldsMap.get("latitude"));
+            if (fieldConfiguration.getField().equals("addressType") && 
fromNewClient) {
+                
baseDataValidator.reset().parameter(field).value(fieldValue).notBlank();
+            } else {
+                if (fieldConfiguration.isIs_mandatory() && fromNewClient) {
+                    
baseDataValidator.reset().parameter(field).value(fieldValue).notBlank();
                 }
             }
-        }
 
-        if 
(this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed("longitude", element) 
!= null) {
-            final BigDecimal longitude = 
this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed("longitude", element);
-            if (enabledFieldsMap.get("longitude")) {
-                if (madatoryFieldsMap.get("longitude") && fromNewClient) {
-                    
baseDataValidator.reset().parameter("longitude").value(longitude).notBlank();
-                }
-                if (!regexFieldsMap.get("longitude").isEmpty()) {
-                    
baseDataValidator.reset().parameter("longitude").value(longitude)
-                            
.matchesRegularExpression(regexFieldsMap.get("longitude"));
-                }
+            if (!fieldConfiguration.getValidation_regex().isEmpty()) {
+                baseDataValidator.reset().parameter(field).value(fieldValue)
+                        
.matchesRegularExpression(fieldConfiguration.getValidation_regex());
             }
-        }
+        });
 
         throwExceptionIfValidationWarningsExist(dataValidationErrors);
 

Reply via email to