private DefaultQuery mockQuery() { InternalQueryService queryService = mock(InternalQueryService.class); when(cache.getQueryService()).thenReturn(queryService); DefaultQuery query = mock(DefaultQuery.class); when(queryService.newQuery(any())).thenReturn(query); when(query.getRegionsInQuery(any())).thenReturn(Collections.singleton(REGION)); return query; }
@Override public Object query(String queryString, Object[] bindParameters) throws NameResolutionException, TypeMismatchException, QueryInvocationTargetException, FunctionDomainException { InternalQueryService queryService = cache.getQueryService(); Query query = queryService.newQuery(queryString); for (String regionName : ((DefaultQuery) query).getRegionsInQuery(bindParameters)) { security.authorize(DATA, READ, regionName, ALL); } Object result = query.execute(bindParameters); if (security.needsPostProcessing()) { return postProcessQueryResults(result); } else { return result; } }
@Test public void queryForSingleObject() throws ConnectionStateException, DecodingException, InvalidExecutionContextException, EncodingException, NameResolutionException, TypeMismatchException, QueryInvocationTargetException, FunctionDomainException { Query query = mock(DefaultQuery.class); when(queryService.newQuery(eq(SELECT_STAR_QUERY))).thenReturn(query); when(query.execute((Object[]) any())).thenReturn(STRING_RESULT_1); final OQLQueryRequest request = OQLQueryRequest.newBuilder().setQuery(SELECT_STAR_QUERY).build(); final Result<OQLQueryResponse> result = operationHandler.process(serializationService, request, TestExecutionContext.getNoAuthCacheExecutionContext(cacheStub)); assertEquals(serializationService.encode(STRING_RESULT_1), result.getMessage().getSingleResult()); }
@Test public void queryForMultipleObjects() throws ConnectionStateException, DecodingException, InvalidExecutionContextException, EncodingException, NameResolutionException, TypeMismatchException, QueryInvocationTargetException, FunctionDomainException { Query query = mock(DefaultQuery.class); when(queryService.newQuery(eq(SELECT_STAR_QUERY))).thenReturn(query); SelectResults results = new ResultsBag(); results.setElementType(new ObjectTypeImpl()); results.add(STRING_RESULT_1); results.add(STRING_RESULT_2); when(query.execute((Object[]) any())).thenReturn(results); final OQLQueryRequest request = OQLQueryRequest.newBuilder().setQuery(SELECT_STAR_QUERY).build(); final Result<OQLQueryResponse> result = operationHandler.process(serializationService, request, TestExecutionContext.getNoAuthCacheExecutionContext(cacheStub)); assertEquals(Arrays.asList(STRING_RESULT_1, STRING_RESULT_2), result.getMessage().getListResult().getElementList().stream() .map(serializationService::decode).collect(Collectors.toList())); }
queryArgs[0] = argsList.get(0); final Query query = cache.getQueryService().newQuery(oql);
DefaultQuery query = (DefaultQuery) cache.getQueryService().newQuery(queryString); results = lds.executeQuery(query, null, localPrimaryBucketSet);
@Test public void queryForMultipleStructs() throws ConnectionStateException, DecodingException, InvalidExecutionContextException, EncodingException, NameResolutionException, TypeMismatchException, QueryInvocationTargetException, FunctionDomainException { Query query = mock(DefaultQuery.class); when(queryService.newQuery(eq(SELECT_STAR_QUERY))).thenReturn(query); SelectResults results = new LinkedStructSet(); StructTypeImpl elementType = new StructTypeImpl(new String[] {"field1"}); results.setElementType(elementType); results.add(new StructImpl(elementType, new Object[] {STRING_RESULT_1})); results.add(new StructImpl(elementType, new Object[] {STRING_RESULT_2})); when(query.execute((Object[]) any())).thenReturn(results); final OQLQueryRequest request = OQLQueryRequest.newBuilder().setQuery(SELECT_STAR_QUERY).build(); final Result<OQLQueryResponse> result = operationHandler.process(serializationService, request, TestExecutionContext.getNoAuthCacheExecutionContext(cacheStub)); assertEquals( Arrays.asList( BasicTypes.EncodedValueList.newBuilder() .addElement(serializationService.encode(STRING_RESULT_1)).build(), BasicTypes.EncodedValueList.newBuilder() .addElement(serializationService.encode(STRING_RESULT_2)).build()), result.getMessage().getTableResult().getRowList()); }