diff --git a/config/alfresco/subsystems/Search/solr/solr-search-context.xml b/config/alfresco/subsystems/Search/solr/solr-search-context.xml
index c033697cb6..dc82848a2a 100644
--- a/config/alfresco/subsystems/Search/solr/solr-search-context.xml
+++ b/config/alfresco/subsystems/Search/solr/solr-search-context.xml
@@ -34,6 +34,9 @@
+
+
+
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/SolrJSONResultSet.java b/source/java/org/alfresco/repo/search/impl/lucene/SolrJSONResultSet.java
index a1ed6ab96e..baf38b83ff 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/SolrJSONResultSet.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/SolrJSONResultSet.java
@@ -28,6 +28,7 @@ import org.alfresco.repo.domain.node.NodeDAO;
import org.alfresco.repo.search.SimpleResultSetMetaData;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.cmr.search.LimitBy;
import org.alfresco.service.cmr.search.PermissionEvaluationMode;
@@ -48,6 +49,8 @@ public class SolrJSONResultSet implements ResultSet
{
private NodeDAO nodeDAO;
+ private NodeService nodeService;
+
private ArrayList> page;
private ResultSetMetaData rsmd;
@@ -70,10 +73,11 @@ public class SolrJSONResultSet implements ResultSet
* Detached result set based on that provided
* @param resultSet
*/
- public SolrJSONResultSet(JSONObject json, NodeDAO nodeDAO, SearchParameters searchParameters)
+ public SolrJSONResultSet(JSONObject json, NodeDAO nodeDAO, SearchParameters searchParameters, NodeService nodeService)
{
// Note all properties are returned as multi-valued from the WildcardField "*" definition in the SOLR schema.xml
this.nodeDAO = nodeDAO;
+ this.nodeService = nodeService;
this.resultSetMetaData = new SimpleResultSetMetaData(LimitBy.UNLIMITED, PermissionEvaluationMode.EAGER, searchParameters);
try
{
@@ -137,6 +141,12 @@ public class SolrJSONResultSet implements ResultSet
}
+ public NodeService getNodeService()
+ {
+ return nodeService;
+ }
+
+
/*
* (non-Javadoc)
* @see org.alfresco.service.cmr.search.ResultSetSPI#close()
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/SolrJSONResultSetRow.java b/source/java/org/alfresco/repo/search/impl/lucene/SolrJSONResultSetRow.java
index d22de3f86e..c40b42e794 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/SolrJSONResultSetRow.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/SolrJSONResultSetRow.java
@@ -18,11 +18,13 @@
*/
package org.alfresco.repo.search.impl.lucene;
+import java.io.Serializable;
import java.util.Map;
import org.alfresco.repo.search.AbstractResultSetRow;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.search.ResultSet;
+import org.alfresco.service.namespace.QName;
/**
* @author Andy
@@ -78,5 +80,11 @@ public class SolrJSONResultSetRow extends AbstractResultSetRow
{
throw new UnsupportedOperationException();
}
+
+ protected Map getDirectProperties()
+ {
+ SolrJSONResultSet rs = (SolrJSONResultSet) getResultSet();
+ return rs.getNodeService().getProperties(rs.getNodeRef(getIndex()));
+ }
}
diff --git a/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java b/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java
index eea6369126..326275476a 100644
--- a/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java
+++ b/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java
@@ -30,12 +30,15 @@ import javax.servlet.http.HttpServletResponse;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.httpclient.HttpClientFactory;
+import org.alfresco.model.ContentModel;
import org.alfresco.repo.domain.node.NodeDAO;
import org.alfresco.repo.search.impl.lucene.LuceneQueryParserException;
import org.alfresco.repo.search.impl.lucene.SolrJSONResultSet;
+import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
import org.alfresco.service.cmr.search.LimitBy;
import org.alfresco.service.cmr.search.ResultSet;
+import org.alfresco.service.cmr.search.ResultSetRow;
import org.alfresco.service.cmr.search.SearchParameters;
import org.alfresco.service.cmr.search.SearchParameters.FieldFacet;
import org.alfresco.service.cmr.search.SearchParameters.FieldFacetMethod;
@@ -69,6 +72,8 @@ public class SolrQueryHTTPClient
static Log s_logger = LogFactory.getLog(SolrQueryHTTPClient.class);
private NodeDAO nodeDAO;
+
+ private NodeService nodeService;
private PermissionService permissionService;
@@ -107,6 +112,11 @@ public class SolrQueryHTTPClient
this.nodeDAO = nodeDAO;
}
+ public void setNodeService(NodeService nodeService)
+ {
+ this.nodeService = nodeService;
+ }
+
public void setPermissionService(PermissionService permissionService)
{
this.permissionService = permissionService;
@@ -338,14 +348,14 @@ public class SolrQueryHTTPClient
Reader reader = new BufferedReader(new InputStreamReader(post.getResponseBodyAsStream()));
// TODO - replace with streaming-based solution e.g. SimpleJSON ContentHandler
JSONObject json = new JSONObject(new JSONTokener(reader));
- SolrJSONResultSet results = new SolrJSONResultSet(json, nodeDAO, searchParameters);
+ SolrJSONResultSet results = new SolrJSONResultSet(json, nodeDAO, searchParameters, nodeService);
if (s_logger.isDebugEnabled())
{
s_logger.debug("Sent :" + url);
s_logger.debug(" with: " + body.toString());
s_logger.debug("Got: " + results.getNumberFound() + " in " + results.getQueryTime() + " ms");
}
-
+
return results;
}
finally