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];