Another fix for : ALF-10453 SOLR: Errors in the log while starting Alfresco until search engine is changed to lucene.

- solr result set now has a NodeService wired up to recover properties in the same manner as the lucene version ...

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31739 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Andrew Hind
2011-11-04 14:25:17 +00:00
parent e248025118
commit 39139ce976
4 changed files with 34 additions and 3 deletions

View File

@@ -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<Pair<Long, Float>> 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()

View File

@@ -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<QName, Serializable> getDirectProperties()
{
SolrJSONResultSet rs = (SolrJSONResultSet) getResultSet();
return rs.getNodeService().getProperties(rs.getNodeRef(getIndex()));
}
}

View File

@@ -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