Merged BRANCHES/DEV to HEAD:

32284: MT/Solr: fix intermittent "My Favorites"


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@32315 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jan Vonka 2011-11-25 15:26:51 +00:00
parent aec3763677
commit e60dc76152
3 changed files with 11 additions and 28 deletions

View File

@ -31,9 +31,6 @@
<bean id="search.solrQueryHTTPCLient" class="org.alfresco.repo.search.impl.solr.SolrQueryHTTPClient" init-method="init">
<property name="httpClientFactory" ref="solrHttpClientFactory"/>
<property name="nodeDAO">
<ref bean="nodeDAO" />
</property>
<property name="nodeService">
<ref bean="mlAwareNodeService" />
</property>

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2005-2010 Alfresco Software Limited.
* Copyright (C) 2005-2011 Alfresco Software Limited.
*
* This file is part of Alfresco
*
@ -24,7 +24,6 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
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;
@ -37,7 +36,6 @@ import org.alfresco.service.cmr.search.ResultSetMetaData;
import org.alfresco.service.cmr.search.ResultSetRow;
import org.alfresco.service.cmr.search.SearchParameters;
import org.alfresco.util.Pair;
import org.apache.solr.client.solrj.response.FacetField;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@ -47,8 +45,6 @@ import org.json.JSONObject;
*/
public class SolrJSONResultSet implements ResultSet
{
private NodeDAO nodeDAO;
private NodeService nodeService;
private ArrayList<Pair<Long, Float>> page;
@ -73,10 +69,9 @@ public class SolrJSONResultSet implements ResultSet
* Detached result set based on that provided
* @param resultSet
*/
public SolrJSONResultSet(JSONObject json, NodeDAO nodeDAO, SearchParameters searchParameters, NodeService nodeService)
public SolrJSONResultSet(JSONObject json, 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
@ -184,18 +179,17 @@ public class SolrJSONResultSet implements ResultSet
@Override
public ChildAssociationRef getChildAssocRef(int n)
{
Pair<Long, ChildAssociationRef> primaryParentAssoc = nodeDAO.getPrimaryParentAssoc(page.get(n).getFirst());
ChildAssociationRef primaryParentAssoc = nodeService.getPrimaryParent(getNodeRef(n));
if(primaryParentAssoc != null)
{
return primaryParentAssoc.getSecond();
return primaryParentAssoc;
}
else
{
return null;
}
}
/*
* (non-Javadoc)
* @see org.alfresco.service.cmr.search.ResultSetSPI#getChildAssocRefs()
@ -219,10 +213,10 @@ public class SolrJSONResultSet implements ResultSet
public NodeRef getNodeRef(int n)
{
// TODO: lost nodes?
Pair<Long, NodeRef> nodePair = nodeDAO.getNodePair(page.get(n).getFirst());
if(nodePair != null)
NodeRef nodeRef = nodeService.getNodeRef(page.get(n).getFirst());
if(nodeRef != null)
{
return nodePair.getSecond();
return nodeRef;
}
else
{

View File

@ -30,7 +30,6 @@ import javax.servlet.http.HttpServletResponse;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.httpclient.HttpClientFactory;
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.repo.tenant.TenantService;
@ -70,8 +69,6 @@ public class SolrQueryHTTPClient
{
static Log s_logger = LogFactory.getLog(SolrQueryHTTPClient.class);
private NodeDAO nodeDAO;
private NodeService nodeService;
private PermissionService permissionService;
@ -104,15 +101,10 @@ public class SolrQueryHTTPClient
}
public void setHttpClientFactory(HttpClientFactory httpClientFactory)
{
this.httpClientFactory = httpClientFactory;
}
public void setNodeDAO(NodeDAO nodeDAO)
{
this.nodeDAO = nodeDAO;
this.httpClientFactory = httpClientFactory;
}
public void setNodeService(NodeService nodeService)
{
this.nodeService = nodeService;
@ -344,7 +336,7 @@ 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, nodeService);
SolrJSONResultSet results = new SolrJSONResultSet(json, searchParameters, nodeService);
if (s_logger.isDebugEnabled())
{
s_logger.debug("Sent :" + url);