diff --git a/source/java/org/alfresco/rest/api/search/impl/SearchMapper.java b/source/java/org/alfresco/rest/api/search/impl/SearchMapper.java index b2a7799d29..4c83e71520 100644 --- a/source/java/org/alfresco/rest/api/search/impl/SearchMapper.java +++ b/source/java/org/alfresco/rest/api/search/impl/SearchMapper.java @@ -203,6 +203,8 @@ public class SearchMapper { for (Template aTemplate:templates) { + ParameterCheck.mandatoryString("template name", aTemplate.getName()); + ParameterCheck.mandatoryString("template template", aTemplate.getTemplate()); sp.addQueryTemplate(aTemplate.getName(), aTemplate.getTemplate()); } } @@ -270,6 +272,7 @@ public class SearchMapper { for (FilterQuery fq:filterQueries) { + ParameterCheck.mandatoryString("filterQueries query", fq.getQuery()); sp.addFilterQuery(fq.getQuery()); } } @@ -286,7 +289,17 @@ public class SearchMapper { for (FacetQuery fq:facetQueries) { - sp.addFacetQuery(fq.getQuery()); + ParameterCheck.mandatoryString("facetQuery query", fq.getQuery()); + String query = fq.getQuery(); + String label = fq.getLabel()!=null?fq.getLabel():query; + + if (query.startsWith("{!afts")) + { + throw new InvalidArgumentException(InvalidArgumentException.DEFAULT_MESSAGE_ID, + new Object[] { ": Facet queries should not start with !afts" }); + } + query = "{!afts key='"+label+"'}"+query; + sp.addFacetQuery(query); } } } diff --git a/source/test-java/org/alfresco/rest/api/search/SearchMapperTests.java b/source/test-java/org/alfresco/rest/api/search/SearchMapperTests.java index 2471c9d947..b6fff4032e 100644 --- a/source/test-java/org/alfresco/rest/api/search/SearchMapperTests.java +++ b/source/test-java/org/alfresco/rest/api/search/SearchMapperTests.java @@ -312,13 +312,21 @@ public class SearchMapperTests //Doesn't error searchMapper.fromFacetQuery(searchParameters, null); - searchMapper.fromFacetQuery(searchParameters, Arrays.asList(new FacetQuery("ping", null), new FacetQuery("pong", "table"), new FacetQuery("pang", "tennis"))); - assertEquals(3 ,searchParameters.getFacetQueries().size()); - assertEquals("ping" ,searchParameters.getFacetQueries().get(0)); - assertEquals("pong" ,searchParameters.getFacetQueries().get(1)); - assertEquals("pang" ,searchParameters.getFacetQueries().get(2)); + searchMapper.fromFacetQuery(searchParameters, Arrays.asList(new FacetQuery("ping", null), new FacetQuery("pong", "table"))); + assertEquals(2 ,searchParameters.getFacetQueries().size()); + assertEquals("{!afts key='ping'}ping" ,searchParameters.getFacetQueries().get(0)); + assertEquals("{!afts key='table'}pong" ,searchParameters.getFacetQueries().get(1)); - //label isn't used at the moment + try + { + searchMapper.fromFacetQuery(searchParameters, Arrays.asList(new FacetQuery("ping", null),new FacetQuery("{!afts}pang", "tennis"))); + fail(); + } + catch (InvalidArgumentException iae) + { + //Cannot start with afts + assertNotNull(iae); + } }