aboutsummaryrefslogtreecommitdiff
path: root/modules/authmodule-eIDAS-v2/src/main/java/at
diff options
context:
space:
mode:
authorThomas <>2022-07-01 14:56:29 +0200
committerThomas <>2022-07-01 14:56:29 +0200
commit590404735d3ee5c4da714cf4faf7ef16d3ed35bc (patch)
tree8edd218e7cfd655470ae01f3db07c02623a71e89 /modules/authmodule-eIDAS-v2/src/main/java/at
parent8bb5373a38f43d83c041ec0739459e38eb7cc3e2 (diff)
downloadNational_eIDAS_Gateway-590404735d3ee5c4da714cf4faf7ef16d3ed35bc.tar.gz
National_eIDAS_Gateway-590404735d3ee5c4da714cf4faf7ef16d3ed35bc.tar.bz2
National_eIDAS_Gateway-590404735d3ee5c4da714cf4faf7ef16d3ed35bc.zip
feat(matching): add configuration property to define max. results for address searching
Diffstat (limited to 'modules/authmodule-eIDAS-v2/src/main/java/at')
-rw-r--r--modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java6
-rw-r--r--modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/controller/AdresssucheController.java24
2 files changed, 28 insertions, 2 deletions
diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java
index 9bb7055b..ce1d2a11 100644
--- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java
+++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java
@@ -130,7 +130,11 @@ public class Constants {
/** Enable / Disable matching based on address search **/
public static final String CONFIG_PROP_MATCHING_BY_ADDRESS = CONIG_PROPS_EIDAS_PREFIX + ".matching.byaddress.enable";
-
+
+ public static final String CONFIG_PROP_MATCHING_BY_ADDRESS_MAX_RESULTS =
+ CONIG_PROPS_EIDAS_PREFIX + ".matching.byaddress.maxresults";
+ public static final String DEFAULT_MATCHING_BY_ADDRESS_MAX_RESULTS = "250";
+
// ZMR Client configuration properties
public static final String CONIG_PROPS_EIDAS_ZMRCLIENT = CONIG_PROPS_EIDAS_PREFIX + ".zmrclient";
diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/controller/AdresssucheController.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/controller/AdresssucheController.java
index 1c47f02c..4bb1343a 100644
--- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/controller/AdresssucheController.java
+++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/controller/AdresssucheController.java
@@ -41,12 +41,14 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrAddressSoapClient;
import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;
import at.gv.bmi.namespace.zmr_su.zrm._20040201_.address.Adressdaten;
import at.gv.e_government.reference.namespace.persondata.de._20040201.PostAdresseTyp;
import at.gv.e_government.reference.namespace.persondata.de._20040201.ZustelladresseTyp;
import at.gv.egiz.eaaf.core.api.data.EaafConstants;
+import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
import at.gv.egiz.eaaf.core.api.utils.IPendingRequestIdGenerationStrategy;
import at.gv.egiz.eaaf.core.exceptions.PendingReqIdValidationException;
import lombok.AllArgsConstructor;
@@ -69,6 +71,8 @@ public class AdresssucheController {
public static final String PARAM_STREET = "street";
public static final String PARAM_NUMBER = "number";
+ @Autowired IConfiguration basicConfig;
+
@Autowired
private ZmrAddressSoapClient client;
@@ -128,11 +132,29 @@ public class AdresssucheController {
it.getZustelladresse().getStrassenname(), it.getZustelladresse().getOrientierungsnummer()))
.collect(Collectors.toSet());
// TODO Add configuration option for the limit of 30
- final List<AdresssucheOutput> sorted = result.stream().sorted().limit(30).collect(Collectors.toList());
+
+ final List<AdresssucheOutput> sorted = result.stream()
+ .sorted()
+ .limit(getMaxResults())
+ .collect(Collectors.toList());
+
return new AdresssucheResult(sorted, result.size());
}
+ private long getMaxResults() {
+ String maxSearchResults = basicConfig.getBasicConfiguration(
+ Constants.CONFIG_PROP_MATCHING_BY_ADDRESS_MAX_RESULTS,
+ Constants.DEFAULT_MATCHING_BY_ADDRESS_MAX_RESULTS);
+ try {
+ return Long.valueOf(maxSearchResults);
+
+ } catch (Exception e) {
+ log.warn("Invalid number of max. addressSearchResults. Using default value", e);
+ return Long.valueOf(Constants.DEFAULT_MATCHING_BY_ADDRESS_MAX_RESULTS);
+ }
+ }
+
private Adressdaten buildSearchInput(String postleitzahl,
String municipality,
String village,