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

@@ -34,6 +34,9 @@
<property name="nodeDAO"> <property name="nodeDAO">
<ref bean="nodeDAO" /> <ref bean="nodeDAO" />
</property> </property>
<property name="nodeService">
<ref bean="mlAwareNodeService" />
</property>
<property name="permissionService"> <property name="permissionService">
<ref bean="permissionService" /> <ref bean="permissionService" />
</property> </property>

View File

@@ -28,6 +28,7 @@ import org.alfresco.repo.domain.node.NodeDAO;
import org.alfresco.repo.search.SimpleResultSetMetaData; import org.alfresco.repo.search.SimpleResultSetMetaData;
import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef; 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.repository.StoreRef;
import org.alfresco.service.cmr.search.LimitBy; import org.alfresco.service.cmr.search.LimitBy;
import org.alfresco.service.cmr.search.PermissionEvaluationMode; import org.alfresco.service.cmr.search.PermissionEvaluationMode;
@@ -48,6 +49,8 @@ public class SolrJSONResultSet implements ResultSet
{ {
private NodeDAO nodeDAO; private NodeDAO nodeDAO;
private NodeService nodeService;
private ArrayList<Pair<Long, Float>> page; private ArrayList<Pair<Long, Float>> page;
private ResultSetMetaData rsmd; private ResultSetMetaData rsmd;
@@ -70,10 +73,11 @@ public class SolrJSONResultSet implements ResultSet
* Detached result set based on that provided * Detached result set based on that provided
* @param resultSet * @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 // Note all properties are returned as multi-valued from the WildcardField "*" definition in the SOLR schema.xml
this.nodeDAO = nodeDAO; this.nodeDAO = nodeDAO;
this.nodeService = nodeService;
this.resultSetMetaData = new SimpleResultSetMetaData(LimitBy.UNLIMITED, PermissionEvaluationMode.EAGER, searchParameters); this.resultSetMetaData = new SimpleResultSetMetaData(LimitBy.UNLIMITED, PermissionEvaluationMode.EAGER, searchParameters);
try try
{ {
@@ -137,6 +141,12 @@ public class SolrJSONResultSet implements ResultSet
} }
public NodeService getNodeService()
{
return nodeService;
}
/* /*
* (non-Javadoc) * (non-Javadoc)
* @see org.alfresco.service.cmr.search.ResultSetSPI#close() * @see org.alfresco.service.cmr.search.ResultSetSPI#close()

View File

@@ -18,11 +18,13 @@
*/ */
package org.alfresco.repo.search.impl.lucene; package org.alfresco.repo.search.impl.lucene;
import java.io.Serializable;
import java.util.Map; import java.util.Map;
import org.alfresco.repo.search.AbstractResultSetRow; import org.alfresco.repo.search.AbstractResultSetRow;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.search.ResultSet; import org.alfresco.service.cmr.search.ResultSet;
import org.alfresco.service.namespace.QName;
/** /**
* @author Andy * @author Andy
@@ -79,4 +81,10 @@ public class SolrJSONResultSetRow extends AbstractResultSetRow
throw new UnsupportedOperationException(); 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.error.AlfrescoRuntimeException;
import org.alfresco.httpclient.HttpClientFactory; import org.alfresco.httpclient.HttpClientFactory;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.domain.node.NodeDAO; import org.alfresco.repo.domain.node.NodeDAO;
import org.alfresco.repo.search.impl.lucene.LuceneQueryParserException; import org.alfresco.repo.search.impl.lucene.LuceneQueryParserException;
import org.alfresco.repo.search.impl.lucene.SolrJSONResultSet; 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.repository.datatype.DefaultTypeConverter;
import org.alfresco.service.cmr.search.LimitBy; import org.alfresco.service.cmr.search.LimitBy;
import org.alfresco.service.cmr.search.ResultSet; 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;
import org.alfresco.service.cmr.search.SearchParameters.FieldFacet; import org.alfresco.service.cmr.search.SearchParameters.FieldFacet;
import org.alfresco.service.cmr.search.SearchParameters.FieldFacetMethod; import org.alfresco.service.cmr.search.SearchParameters.FieldFacetMethod;
@@ -70,6 +73,8 @@ public class SolrQueryHTTPClient
private NodeDAO nodeDAO; private NodeDAO nodeDAO;
private NodeService nodeService;
private PermissionService permissionService; private PermissionService permissionService;
private Map<String, String> languageMappings; private Map<String, String> languageMappings;
@@ -107,6 +112,11 @@ public class SolrQueryHTTPClient
this.nodeDAO = nodeDAO; this.nodeDAO = nodeDAO;
} }
public void setNodeService(NodeService nodeService)
{
this.nodeService = nodeService;
}
public void setPermissionService(PermissionService permissionService) public void setPermissionService(PermissionService permissionService)
{ {
this.permissionService = permissionService; this.permissionService = permissionService;
@@ -338,7 +348,7 @@ public class SolrQueryHTTPClient
Reader reader = new BufferedReader(new InputStreamReader(post.getResponseBodyAsStream())); Reader reader = new BufferedReader(new InputStreamReader(post.getResponseBodyAsStream()));
// TODO - replace with streaming-based solution e.g. SimpleJSON ContentHandler // TODO - replace with streaming-based solution e.g. SimpleJSON ContentHandler
JSONObject json = new JSONObject(new JSONTokener(reader)); 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()) if (s_logger.isDebugEnabled())
{ {
s_logger.debug("Sent :" + url); s_logger.debug("Sent :" + url);