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

136999 gjames: SEARCH-451: Better handling of invalid pivot params


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@137084 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Gethin James
2017-06-01 11:14:11 +00:00
parent f8b81da5ac
commit 85909e88a7
2 changed files with 26 additions and 7 deletions

View File

@@ -624,6 +624,11 @@ public class SearchMapper
if (foundStat.isPresent()) if (foundStat.isPresent())
{ {
pivotKey = aPivot.getKey(); pivotKey = aPivot.getKey();
if (pivotKeys.isEmpty())
{
throw new InvalidArgumentException(InvalidArgumentException.DEFAULT_MESSAGE_ID,
new Object[] { ": Stats key " + pivotKey + " cannot be used here" });
}
pivotKeys.add(pivotKey); pivotKeys.add(pivotKey);
searchRequestContext.getPivotKeys().put(pivotKey, pivotKey); searchRequestContext.getPivotKeys().put(pivotKey, pivotKey);
} }
@@ -636,6 +641,11 @@ public class SearchMapper
if (aRange.getTags().contains(aPivot.getKey())) if (aRange.getTags().contains(aPivot.getKey()))
{ {
pivotKey = aPivot.getKey(); pivotKey = aPivot.getKey();
if (pivotKeys.isEmpty())
{
throw new InvalidArgumentException(InvalidArgumentException.DEFAULT_MESSAGE_ID,
new Object[] { ": Range key " + pivotKey + " cannot be used here" });
}
pivotKeys.add(pivotKey); pivotKeys.add(pivotKey);
searchRequestContext.getPivotKeys().put(pivotKey, pivotKey); searchRequestContext.getPivotKeys().put(pivotKey, pivotKey);
} }

View File

@@ -830,10 +830,11 @@ public class SearchMapperTests
List<FacetField> facets = new ArrayList<>(1); List<FacetField> facets = new ArrayList<>(1);
facets.add(new FacetField("myfield",null,null,null,null,null,null,null,null,null,null)); facets.add(new FacetField("myfield",null,null,null,null,null,null,null,null,null,null));
facets.add(new FacetField("yourfield",null,null,null,null,null,null,null,null,null,null));
FacetFields ff = new FacetFields(facets); FacetFields ff = new FacetFields(facets);
searchMapper.fromFacetFields(searchParameters,ff); searchMapper.fromFacetFields(searchParameters,ff);
searchMapper.fromPivot(searchParameters, null, ff, null, null, null); searchMapper.fromPivot(searchParameters, null, ff, null, null, null);
assertEquals(1 ,searchParameters.getFieldFacets().size()); assertEquals(2 ,searchParameters.getFieldFacets().size());
assertEquals(0 ,searchParameters.getPivots().size()); assertEquals(0 ,searchParameters.getPivots().size());
//Handle unknown pivot. //Handle unknown pivot.
@@ -865,11 +866,18 @@ public class SearchMapperTests
//"bob" doesn't refer to a field facet but its the last one so needs to refer to a stat //"bob" doesn't refer to a field facet but its the last one so needs to refer to a stat
StatsRequestParameters bobf = new StatsRequestParameters("bob", null, null, null,null, null, null, null,null, null, null, null,null, null, null, null); StatsRequestParameters bobf = new StatsRequestParameters("bob", null, null, null,null, null, null, null,null, null, null, null,null, null, null, null);
StatsRequestParameters bobL = new StatsRequestParameters("creator", "bob", null, null,null, null, null, null,null, null, null, null,null, null, null, null); StatsRequestParameters bobL = new StatsRequestParameters("creator", "bob", null, null,null, null, null, null,null, null, null, null,null, null, null, null);
searchMapper.fromPivot(searchParameters, Arrays.asList(bobf), ff, null, Arrays.asList(new Pivot("bob", null)), searchRequestContext); try
assertEquals(1 ,searchParameters.getPivots().size()); {
searchMapper.fromPivot(searchParameters, Arrays.asList(bobf), ff, null, Arrays.asList(new Pivot("bob", null)), searchRequestContext);
fail();
}
catch (InvalidArgumentException iae)
{
//"bob" refers to a stat but it can't be at the root pivot, it needs to be nested
assertNotNull(iae);
}
searchParameters = new SearchParameters(); searchMapper.fromPivot(searchParameters, Arrays.asList(bobf), ff, null, Arrays.asList(new Pivot("yourfield", Arrays.asList(new Pivot("bob", null)))), searchRequestContext);
searchMapper.fromPivot(searchParameters, Arrays.asList(bobf), ff, null, Arrays.asList(new Pivot("bob", null)), searchRequestContext);
assertEquals(1 ,searchParameters.getPivots().size()); assertEquals(1 ,searchParameters.getPivots().size());
try try
@@ -941,12 +949,13 @@ public class SearchMapperTests
ff = new FacetFields(facets); ff = new FacetFields(facets);
rangeParams.add(new RangeParameters("content.size", "0", "100000", "1000",true,null,null,Arrays.asList("hope"),null)); rangeParams.add(new RangeParameters("content.size", "0", "100000", "1000",true,null,null,Arrays.asList("hope"),null));
searchMapper.fromPivot(searchParameters, Arrays.asList(bobf), ff, rangeParams, searchMapper.fromPivot(searchParameters, Arrays.asList(bobf), ff, rangeParams,
Arrays.asList(new Pivot("king", Arrays.asList(new Pivot("bob", null))), new Pivot("hope", null)), searchRequestContext); Arrays.asList(new Pivot("king", Arrays.asList(new Pivot("bob", null))), new Pivot("kong", Arrays.asList(new Pivot("hope", null)))), searchRequestContext);
assertEquals(2 ,searchParameters.getPivots().size()); assertEquals(2 ,searchParameters.getPivots().size());
assertEquals(2 ,searchParameters.getPivots().get(0).size()); assertEquals(2 ,searchParameters.getPivots().get(0).size());
assertEquals("king" ,searchParameters.getPivots().get(0).get(0)); assertEquals("king" ,searchParameters.getPivots().get(0).get(0));
assertEquals("bob" ,searchParameters.getPivots().get(0).get(1)); assertEquals("bob" ,searchParameters.getPivots().get(0).get(1));
assertEquals("hope" ,searchParameters.getPivots().get(1).get(0)); assertEquals("kong" ,searchParameters.getPivots().get(1).get(0));
assertEquals("hope" ,searchParameters.getPivots().get(1).get(1));
} }