This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 8ef825c6a501b4ba9894813d35305a78a351ed5e
Author: TungTV <vtt...@linagora.com>
AuthorDate: Wed Nov 27 15:43:19 2024 +0700

    JAMES-4077 LuceneSearchHighlighter - Fix NullpointerException
---
 .../mailbox/lucene/search/LuceneSearchHighlighter.java   | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git 
a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneSearchHighlighter.java
 
b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneSearchHighlighter.java
index d79c5dd9bf..c398865df8 100644
--- 
a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneSearchHighlighter.java
+++ 
b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneSearchHighlighter.java
@@ -24,7 +24,6 @@ import static 
org.apache.james.mailbox.lucene.search.DocumentFieldConstants.BODY
 import static 
org.apache.james.mailbox.lucene.search.DocumentFieldConstants.MESSAGE_ID_FIELD;
 import static 
org.apache.james.mailbox.lucene.search.DocumentFieldConstants.SUBJECT_FIELD;
 
-import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
@@ -57,7 +56,6 @@ import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.highlight.Formatter;
 import org.apache.lucene.search.highlight.Highlighter;
-import org.apache.lucene.search.highlight.InvalidTokenOffsetsException;
 import org.apache.lucene.search.highlight.QueryScorer;
 import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
 import org.apache.lucene.search.highlight.SimpleSpanFragmenter;
@@ -164,7 +162,7 @@ public class LuceneSearchHighlighter implements 
SearchHighlighter {
         return Throwing.supplier(() -> parser.parse(queryValue)).get();
     }
 
-    private SearchSnippet buildSearchSnippet(Document doc, SearchQuery 
searchQuery) throws IOException, InvalidTokenOffsetsException {
+    private SearchSnippet buildSearchSnippet(Document doc, SearchQuery 
searchQuery) {
         MessageId messageId = 
messageIdFactory.fromString(doc.get(MESSAGE_ID_FIELD));
         Optional<String> highlightedSubject = 
Optional.ofNullable(getHighlightedSubject(doc, searchQuery));
         Optional<String> highlightedBody = 
Optional.ofNullable(getHighlightedBody(doc, searchQuery))
@@ -173,12 +171,16 @@ public class LuceneSearchHighlighter implements 
SearchHighlighter {
         return new SearchSnippet(messageId, highlightedSubject, 
highlightedBody);
     }
 
-    private String getHighlightedSubject(Document doc, SearchQuery 
searchQuery) throws InvalidTokenOffsetsException, IOException {
-        return highlighter(searchQuery).getBestFragment(analyzer, 
SUBJECT_FIELD, doc.get(SUBJECT_FIELD));
+    private String getHighlightedSubject(Document doc, SearchQuery 
searchQuery) {
+        return Optional.ofNullable(doc.get(SUBJECT_FIELD))
+            .map(Throwing.function(subject -> 
highlighter(searchQuery).getBestFragment(analyzer, SUBJECT_FIELD, subject)))
+            .orElse(null);
     }
 
-    private String getHighlightedBody(Document doc, SearchQuery searchQuery) 
throws IOException, InvalidTokenOffsetsException {
-        return highlighter(searchQuery).getBestFragment(analyzer, BODY_FIELD, 
doc.get(BODY_FIELD));
+    private String getHighlightedBody(Document doc, SearchQuery searchQuery) {
+        return Optional.ofNullable(doc.get(BODY_FIELD))
+            .map(Throwing.function(body -> 
highlighter(searchQuery).getBestFragment(analyzer, BODY_FIELD, body)))
+            .orElse(null);
     }
 
     private Optional<String> getHighlightAttachmentTextBody(Document doc, 
SearchQuery searchQuery) {


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to