Author: tommaso
Date: Fri Nov 13 09:49:49 2015
New Revision: 1714170

URL: http://svn.apache.org/viewvc?rev=1714170&view=rev
Log:
OAK-3580 - added fallback for null value of index provided excerpt

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java?rev=1714170&r1=1714169&r2=1714170&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ResultRowImpl.java
 Fri Nov 13 09:49:49 2015
@@ -112,21 +112,30 @@ public class ResultRowImpl implements Re
             int columnIndex = query.getColumnIndex(QueryImpl.REP_EXCERPT);
             if (columnIndex >= 0 && QueryImpl.REP_EXCERPT.equals(columnName) 
|| SimpleExcerptProvider.REP_EXCERPT_FN.
                     equals(columnName)) {
-                return SimpleExcerptProvider.getExcerpt(values[columnIndex]);
                 // TODO : make it possible to extract property level excerpts, 
e.g. rep:excerpt(text) from indexes
+                PropertyValue value = values[columnIndex];
+                if (value != null) {
+                    return SimpleExcerptProvider.getExcerpt(value);
+                } else {
+                    return getFallbackExcerpt(columnName);
+                }
             } else {
                 // missing excerpt, generate a default value
-                String ex = SimpleExcerptProvider.getExcerpt(getPath(), 
columnName,
-                        query, true);
-                if (ex != null) {
-                    return PropertyValues.newString(ex);
-                }
-                return PropertyValues.newString(getPath());
+                return getFallbackExcerpt(columnName);
             }
         }
         throw new IllegalArgumentException("Column not found: " + columnName);
     }
 
+    private PropertyValue getFallbackExcerpt(String columnName) {
+        String ex = SimpleExcerptProvider.getExcerpt(getPath(), columnName,
+                query, true);
+        if (ex != null) {
+            return PropertyValues.newString(ex);
+        }
+        return PropertyValues.newString(getPath());
+    }
+
     @Override
     public PropertyValue[] getValues() {
         PropertyValue[] v2 = new PropertyValue[values.length];


Reply via email to