From 5deea9bf14bdc5fe06195633941e1824b9f235a6 Mon Sep 17 00:00:00 2001 From: Sowmya Ujjappa Banakar Date: Tue, 12 Sep 2023 15:39:29 +0530 Subject: [PATCH 1/2] MOSIP-29399 code fix --- .../abis/handler/stage/AbisHandlerStage.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/registration-processor/core-processor/registration-processor-abis-handler-stage/src/main/java/io/mosip/registration/processor/abis/handler/stage/AbisHandlerStage.java b/registration-processor/core-processor/registration-processor-abis-handler-stage/src/main/java/io/mosip/registration/processor/abis/handler/stage/AbisHandlerStage.java index 1a9185b66ec..f6316a46b6b 100644 --- a/registration-processor/core-processor/registration-processor-abis-handler-stage/src/main/java/io/mosip/registration/processor/abis/handler/stage/AbisHandlerStage.java +++ b/registration-processor/core-processor/registration-processor-abis-handler-stage/src/main/java/io/mosip/registration/processor/abis/handler/stage/AbisHandlerStage.java @@ -577,13 +577,7 @@ private String getUUID() { private String getDataShareUrl(String id, String process) throws Exception { Map> typeAndSubtypMap = createTypeSubtypeMapping(); List modalities = new ArrayList<>(); - for (Map.Entry> entry : typeAndSubtypMap.entrySet()) { - if (entry.getValue() == null) { - modalities.add(entry.getKey()); - } else { - modalities.addAll(entry.getValue()); - } - } + modalities.addAll(typeAndSubtypMap.keySet()); JSONObject regProcessorIdentityJson = utility .getRegistrationProcessorMappingJson(MappingJsonConstants.IDENTITY); String individualBiometricsLabel = JsonUtil.getJSONValue( @@ -602,7 +596,8 @@ private String getDataShareUrl(String id, String process) throws Exception { biometricModalitySegmentsMap = biometricModalitySegmentsMapforAgeGroup.get("DEFAULT"); } validateBiometricRecord(biometricRecord, modalities, biometricModalitySegmentsMap, - priorityBasedPacketManagerService.getMetaInfo(id, process, ProviderStageName.BIO_DEDUPE)); + priorityBasedPacketManagerService.getMetaInfo(id, process, ProviderStageName.BIO_DEDUPE), + typeAndSubtypMap); byte[] content = cbeffutil.createXML(filterExceptionBiometrics(biometricRecord,id,process).getSegments()); @@ -640,7 +635,8 @@ public String getFilename() { @SuppressWarnings("deprecation") private void validateBiometricRecord(BiometricRecord biometricRecord, List modalities, - Map> biometricModalitySegmentsMap, Map metaInfoMap) + Map> biometricModalitySegmentsMap, Map metaInfoMap, + Map> typeAndSubtypMap) throws DataShareException, JsonParseException, JsonMappingException, IOException { if (modalities == null || modalities.isEmpty()) { throw new DataShareException("Data Share Policy Modalities were Empty"); @@ -662,9 +658,16 @@ private void validateBiometricRecord(BiometricRecord biometricRecord, List biometricModalitySegmentsMapFromPolicy = typeAndSubtypMap.get(biometricSegment); for (String segment : biometricModalitySegmentsMap.get(biometricSegment)) { + if (biometricModalitySegmentsMapFromPolicy != null + && !biometricModalitySegmentsMapFromPolicy.contains(segment)) { + throw new DataShareException( + "Biometrics Segments Not Configured as per policy for modality : " + biometricSegment); + } Optional optionalBIR = Optional.empty(); if (segment.equalsIgnoreCase("Face")) { optionalBIR = biometricRecord.getSegments().stream() From 17bc0ecffbb547b4f6959b1008e80a0af657fb5a Mon Sep 17 00:00:00 2001 From: Sowmya Ujjappa Banakar Date: Wed, 13 Sep 2023 11:00:28 +0530 Subject: [PATCH 2/2] MOSIP-29399 Code fix --- .../abis/handler/stage/AbisHandlerStage.java | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/registration-processor/core-processor/registration-processor-abis-handler-stage/src/main/java/io/mosip/registration/processor/abis/handler/stage/AbisHandlerStage.java b/registration-processor/core-processor/registration-processor-abis-handler-stage/src/main/java/io/mosip/registration/processor/abis/handler/stage/AbisHandlerStage.java index f6316a46b6b..23ab72ea0ef 100644 --- a/registration-processor/core-processor/registration-processor-abis-handler-stage/src/main/java/io/mosip/registration/processor/abis/handler/stage/AbisHandlerStage.java +++ b/registration-processor/core-processor/registration-processor-abis-handler-stage/src/main/java/io/mosip/registration/processor/abis/handler/stage/AbisHandlerStage.java @@ -575,29 +575,37 @@ private String getUUID() { } private String getDataShareUrl(String id, String process) throws Exception { - Map> typeAndSubtypMap = createTypeSubtypeMapping(); + Map> policyTypeAndSubTypeMap = createTypeSubtypeMapping(); List modalities = new ArrayList<>(); - modalities.addAll(typeAndSubtypMap.keySet()); + List policyTypeAndSubTypeList = new ArrayList<>(); + modalities.addAll(policyTypeAndSubTypeMap.keySet()); + for (Map.Entry> entry : policyTypeAndSubTypeMap.entrySet()) { + if (entry.getValue() == null) { + policyTypeAndSubTypeList.add(entry.getKey()); + } else { + policyTypeAndSubTypeList.addAll(entry.getValue()); + } + } JSONObject regProcessorIdentityJson = utility .getRegistrationProcessorMappingJson(MappingJsonConstants.IDENTITY); String individualBiometricsLabel = JsonUtil.getJSONValue( JsonUtil.getJSONObject(regProcessorIdentityJson, MappingJsonConstants.INDIVIDUAL_BIOMETRICS), MappingJsonConstants.VALUE); BiometricRecord biometricRecord = priorityBasedPacketManagerService.getBiometrics(id, individualBiometricsLabel, - modalities, process, ProviderStageName.BIO_DEDUPE); + policyTypeAndSubTypeList, process, ProviderStageName.BIO_DEDUPE); Map tags = packetManagerService.getAllTags(id); String ageGroup = tags.get("AGE_GROUP"); - Map> biometricModalitySegmentsMap; + Map> ageGroupModalitySegmentMap; if(biometricModalitySegmentsMapforAgeGroup.containsKey(ageGroup)){ - biometricModalitySegmentsMap = biometricModalitySegmentsMapforAgeGroup.get(ageGroup); + ageGroupModalitySegmentMap = biometricModalitySegmentsMapforAgeGroup.get(ageGroup); } else { - biometricModalitySegmentsMap = biometricModalitySegmentsMapforAgeGroup.get("DEFAULT"); + ageGroupModalitySegmentMap = biometricModalitySegmentsMapforAgeGroup.get("DEFAULT"); } - validateBiometricRecord(biometricRecord, modalities, biometricModalitySegmentsMap, + validateBiometricRecord(biometricRecord, modalities, ageGroupModalitySegmentMap, priorityBasedPacketManagerService.getMetaInfo(id, process, ProviderStageName.BIO_DEDUPE), - typeAndSubtypMap); + policyTypeAndSubTypeMap); byte[] content = cbeffutil.createXML(filterExceptionBiometrics(biometricRecord,id,process).getSegments()); @@ -635,8 +643,8 @@ public String getFilename() { @SuppressWarnings("deprecation") private void validateBiometricRecord(BiometricRecord biometricRecord, List modalities, - Map> biometricModalitySegmentsMap, Map metaInfoMap, - Map> typeAndSubtypMap) + Map> ageGroupModalitySegmentMap, Map metaInfoMap, + Map> policyTypeAndSubTypeMap) throws DataShareException, JsonParseException, JsonMappingException, IOException { if (modalities == null || modalities.isEmpty()) { throw new DataShareException("Data Share Policy Modalities were Empty"); @@ -656,17 +664,17 @@ private void validateBiometricRecord(BiometricRecord biometricRecord, List biometricModalitySegmentsMapFromPolicy = typeAndSubtypMap.get(biometricSegment); - for (String segment : biometricModalitySegmentsMap.get(biometricSegment)) { - if (biometricModalitySegmentsMapFromPolicy != null - && !biometricModalitySegmentsMapFromPolicy.contains(segment)) { + List policySegmentList = policyTypeAndSubTypeMap.get(biometricModality); + for (String segment : ageGroupModalitySegmentMap.get(biometricModality)) { + if (policySegmentList != null + && !policySegmentList.contains(segment)) { throw new DataShareException( - "Biometrics Segments Not Configured as per policy for modality : " + biometricSegment); + "Biometrics Segments Not Configured as per policy for modality : " + biometricModality); } Optional optionalBIR = Optional.empty(); if (segment.equalsIgnoreCase("Face")) {