diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java index 1c764bad..b68c3916 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java @@ -44,7 +44,15 @@ public class EntityRedactionService { FindEntitiesResult findEntitiesResult = findEntities(sectionTexts, dictionary, kieContainer, analyzeRequest, false, null, imagesPerPage, nerEntities); if (dictionary.hasLocalEntries() || !findEntitiesResult.getAddedFileAttributes().isEmpty()) { - analyzeRequest.getFileAttributes().addAll(findEntitiesResult.getAddedFileAttributes()); + + if(!findEntitiesResult.getAddedFileAttributes().isEmpty()) { + //AnalyzeRequest provides immutable list. + List mergedFileAttributes = new ArrayList<>(); + mergedFileAttributes.addAll(analyzeRequest.getFileAttributes()); + mergedFileAttributes.addAll(findEntitiesResult.getAddedFileAttributes()); + analyzeRequest.setFileAttributes(mergedFileAttributes); + } + Map> hintsPerSectionNumber = getHintsPerSection(findEntitiesResult.getEntities(), dictionary); FindEntitiesResult foundByLocalEntitiesResult = findEntities(sectionTexts, dictionary, kieContainer, analyzeRequest, true, hintsPerSectionNumber, imagesPerPage, nerEntities); EntitySearchUtils.addEntitiesWithHigherRank(findEntitiesResult.getEntities(), foundByLocalEntitiesResult.getEntities(), dictionary); @@ -154,7 +162,13 @@ public class EntityRedactionService { Set entities = new HashSet<>(); sectionSearchableTextPairs.forEach(sectionSearchableTextPair -> { - sectionSearchableTextPair.getSection().getFileAttributes().addAll(addedFileAttributes); + if(!addedFileAttributes.isEmpty()) { + //Section.Builder provides immutable list. + List mergedFileAttributes = new ArrayList<>(); + mergedFileAttributes.addAll(sectionSearchableTextPair.getSection().getAddedFileAttributes()); + mergedFileAttributes.addAll(addedFileAttributes); + sectionSearchableTextPair.getSection().setFileAttributes(mergedFileAttributes); + } Section analysedSection = droolsExecutionService.executeRules(kieContainer, sectionSearchableTextPair.getSection());