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 1a9185b66e..f6316a46b6 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()