Merged 5.2.N (5.2.1) to HEAD (5.2)

130171 gjames: Merged searchapi (5.2.1) to 5.2.N (5.2.1)
      129779 gjames: SEARCH-118: Adding search.score to node response


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@130322 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2016-09-06 22:03:18 +00:00
parent 043a158c80
commit e118a4940e
4 changed files with 45 additions and 5 deletions

View File

@@ -34,6 +34,7 @@ import java.util.Map;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.permissions.AccessDeniedException;
import org.alfresco.rest.api.search.model.SearchEntry;
import org.alfresco.rest.framework.resource.UniqueId;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -91,6 +92,9 @@ public class Node implements Comparable<Node>
protected List<String> allowableOperations;
//optional SearchEntry (only ever returned from a search)
protected SearchEntry search = null;
public Node(NodeRef nodeRef, NodeRef parentNodeRef, Map<QName, Serializable> nodeProps, Map<String, UserInfo> mapUserInfo, ServiceRegistry sr)
{
if(nodeRef == null)
@@ -464,6 +468,10 @@ public class Node implements Comparable<Node>
{
sb.append(", allowableOperations=").append(getAllowableOperations());
}
if (getSearch() != null)
{
sb.append(", search=").append(getSearch());
}
sb.append("]");
return sb.toString();
}
@@ -498,7 +506,15 @@ public class Node implements Comparable<Node>
this.association = association;
}
public SearchEntry getSearch()
{
return search;
}
public void setSearch(SearchEntry search)
{
this.search = search;
}
// TODO for backwards compat' - set explicitly when needed (ie. favourites) (note: we could choose to have separate old Node/NodeImpl etc)
protected String title;

View File

@@ -30,6 +30,7 @@ import org.alfresco.model.ContentModel;
import org.alfresco.rest.api.Nodes;
import org.alfresco.rest.api.model.Node;
import org.alfresco.rest.api.model.UserInfo;
import org.alfresco.rest.api.search.model.SearchEntry;
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
import org.alfresco.rest.framework.resource.parameters.Paging;
import org.alfresco.rest.framework.resource.parameters.Params;
@@ -78,8 +79,8 @@ public class ResultMapper
results.forEach(row ->
{
Node aNode = nodes.getFolderOrDocument(row.getNodeRef(), null, null, params.getInclude(), null);
//float f = row.getScore();
//Long dbId = (Long) row.getValue(ContentModel.PROP_NODE_DBID);
float f = row.getScore();
aNode.setSearch(new SearchEntry(f));
noderesults.add(aNode);
}
);

View File

@@ -0,0 +1,21 @@
package org.alfresco.rest.api.search.model;
/**
* POJO class representing the extra information that comes back from Search.
**/
public class SearchEntry
{
Float score;
public SearchEntry(Float score)
{
this.score = score;
}
public Float getScore()
{
return score;
}
//In future highlighting.
}

View File

@@ -121,10 +121,12 @@ public class ResultMapperTests
public void testToCollectionWithPagingInfo() throws Exception
{
ResultSet results = mockResultset();
CollectionWithPagingInfo<Node> collection = mapper.toCollectionWithPagingInfo(mockParams(),results);
assertNotNull(collection);
CollectionWithPagingInfo<Node> collectionWithPage = mapper.toCollectionWithPagingInfo(mockParams(),results);
assertNotNull(collectionWithPage);
Long found = results.getNumberFound();
assertEquals(found.intValue(), collection.getTotalItems().intValue());
assertEquals(found.intValue(), collectionWithPage.getTotalItems().intValue());
Node firstNode = collectionWithPage.getCollection().stream().findFirst().get();
assertNotNull(firstNode.getSearch().getScore());
}
private ResultSet mockResultset() throws JSONException