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

130161 gjames: SEARCH-162: Implement a "fields" json parameter


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@130309 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Gethin James
2016-09-06 15:39:51 +00:00
parent 4368afe040
commit a87495f12a
6 changed files with 24 additions and 4 deletions

View File

@@ -30,6 +30,7 @@ import org.alfresco.rest.api.model.Node;
import org.alfresco.rest.api.search.impl.ResultMapper;
import org.alfresco.rest.api.search.impl.SearchMapper;
import org.alfresco.rest.api.search.model.SearchQuery;
import org.alfresco.rest.framework.jacksonextensions.BeanPropertiesFilter;
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
import org.alfresco.rest.framework.resource.parameters.Params;
import org.alfresco.rest.framework.tools.ApiAssistant;
@@ -50,6 +51,7 @@ import org.springframework.extensions.webscripts.WebScriptRequest;
import org.springframework.extensions.webscripts.WebScriptResponse;
import java.io.IOException;
import java.util.Arrays;
/**
* An implementation of the {{baseUrl}}/{{networkId}}/public/search/versions/1/search endpoint
@@ -118,7 +120,12 @@ public class SearchApiWebscript extends AbstractWebScript implements RecognizedP
*/
protected Params getParams(WebScriptRequest webScriptRequest, SearchQuery searchQuery)
{
Params.RecognizedParams recognizedParams = new Params.RecognizedParams(null, null, null, null, null, null, null, null, false);
BeanPropertiesFilter filter = null;
if (searchQuery.getFields()!= null && !searchQuery.getFields().isEmpty())
{
filter = getFilter("", searchQuery.getFields());
}
Params.RecognizedParams recognizedParams = new Params.RecognizedParams(null, null, filter, null, null, null, null, null, false);
return Params.valueOf(null, recognizedParams, searchQuery, webScriptRequest);
}

View File

@@ -43,6 +43,7 @@ public class SearchQuery
private final Query query;
private final Paging paging;
private final List<String> include;
private final List<String> fields;
private final List<SortDef> sort;
private final List<Template> templates;
private final Default defaults;
@@ -53,12 +54,13 @@ public class SearchQuery
private final Scope scope;
private final Limits limits;
public static final SearchQuery EMPTY = new SearchQuery(null, null, null, null, null,null, null, null,null, null, null, null);
public static final SearchQuery EMPTY = new SearchQuery(null, null, null, null, null,null, null, null,null, null, null, null, null);
@JsonCreator
public SearchQuery(@JsonProperty("query") Query query,
@JsonProperty("paging") Paging paging,
@JsonProperty("include") List<String> include,
@JsonProperty("fields") List<String> fields,
@JsonProperty("sort") List<SortDef> sort,
@JsonProperty("templates") List<Template> templates,
@JsonProperty("defaults") Default defaults,
@@ -72,6 +74,7 @@ public class SearchQuery
this.query = query;
this.paging = paging;
this.include = include;
this.fields = fields;
this.sort = sort;
this.templates = templates;
this.defaults = defaults;
@@ -97,6 +100,12 @@ public class SearchQuery
{
return include;
}
public List<String> getFields()
{
return fields;
}
public List<SortDef> getSort()
{
return sort;

View File

@@ -54,7 +54,7 @@ public class BasicSearchApiIntegrationTest extends AbstractSingleNetworkSiteTest
{
private static final String URL_SEARCH = "search";
private static final String SEARCH_API_NAME = "search";
private static final String json = "{ \"query\": {\"query\": \"cm:name:king\",\"userQuery\": \"great\",\"language\": \"afts\"}}";
private static final String json = "{ \"query\": {\"query\": \"cm:name:king\",\"userQuery\": \"great\",\"language\": \"afts\"}, \"fields\" : [\"id\",\"name\", \"search\"]}";
private static final String bad_json = "{ \"query\": {\"qu\": \"cm:some nonsense \",\"userQuery\": \"great\",\"language\": \"afts\"}}";
/**

View File

@@ -508,7 +508,7 @@ public class SearchMapperTests
private SearchQuery minimalQuery()
{
Query query = new Query("cmis", "foo", "");
SearchQuery sq = new SearchQuery(query,null, null, null, null, null, null, null, null, null, null, null);
SearchQuery sq = new SearchQuery(query,null, null, null, null, null, null, null, null, null, null, null, null);
return sq;
}
}

View File

@@ -106,6 +106,9 @@ public class SearchQuerySerializerTests
assertEquals(Integer.valueOf(5), ff.getMincount());
assertEquals(2000, searchQuery.getLimits().getPermissionEvaluationCount().intValue());
assertEquals(5000, searchQuery.getLimits().getPermissionEvaluationTime().intValue());
assertEquals(2, searchQuery.getFields().size());
assertTrue(searchQuery.getFields().contains("id"));
assertTrue(searchQuery.getFields().contains("name"));
}
@Test

View File

@@ -65,6 +65,7 @@ public class SerializerTestHelper implements RequestReader
+ "\"spellcheck\": {\"query\": \"alfrezco\"},"
+ "\"limits\": {\"permissionEvaluationCount\": \"2000\",\"permissionEvaluationTime\": \"5000\"},"
+ "\"scope\": { \"stores\": [\"workspace://SpacesStore\"]},"
+ "\"fields\": [\"id\", \"name\"],"
+ "\"include\": [\"aspectNames\", \"properties\"]}";
public SerializerTestHelper()