diff options
author | Thomas <> | 2022-07-01 14:56:29 +0200 |
---|---|---|
committer | Thomas <> | 2022-07-01 14:56:29 +0200 |
commit | 590404735d3ee5c4da714cf4faf7ef16d3ed35bc (patch) | |
tree | 8edd218e7cfd655470ae01f3db07c02623a71e89 | |
parent | 8bb5373a38f43d83c041ec0739459e38eb7cc3e2 (diff) | |
download | National_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
3 files changed, 29 insertions, 2 deletions
diff --git a/connector/src/main/resources/application.properties b/connector/src/main/resources/application.properties index f6203805..6b6af637 100644 --- a/connector/src/main/resources/application.properties +++ b/connector/src/main/resources/application.properties @@ -106,6 +106,7 @@ eidas.ms.auth.eIDAS.szrclient.eidasbind.mds.inject=false #### matching###### eidas.ms.auth.eIDAS.matching.byaddress.enable=true +eidas.ms.auth.eIDAS.matching.byaddress.maxresults=250 # ZMR communication #eidas.ms.auth.eIDAS.zmrclient.endpoint=http://localhost:1234/demozmr 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, |