in odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java [130:185]
public List<Object> process(final GetEntitySetUriInfo uriParserResultView)
throws ODataJPAModelException, ODataJPARuntimeException {
List<Object> result = null;
if (uriParserResultView.getFunctionImport() != null) {
return (List<Object>) process((GetFunctionImportUriInfo) uriParserResultView);
}
InlineCount inlineCount = uriParserResultView.getInlineCount();
Integer top = uriParserResultView.getTop() == null ? 1 : uriParserResultView.getTop().intValue();
boolean hasNoAllPages = inlineCount == null ? true : !inlineCount.equals(InlineCount.ALLPAGES);
if (top.intValue() == 0 && hasNoAllPages) {
return new ArrayList<Object>();
}
try {
JPAEdmMapping mapping = (JPAEdmMapping) uriParserResultView.getTargetEntitySet().getEntityType().getMapping();
JPAQueryBuilder queryBuilder = new JPAQueryBuilder(oDataJPAContext);
JPAQueryInfo queryInfo = queryBuilder.build(uriParserResultView);
Query query = queryInfo.getQuery();
ODataJPATombstoneEntityListener listener =
queryBuilder.getODataJPATombstoneEntityListener((UriInfo) uriParserResultView);
Map<String, String> customQueryOptions = uriParserResultView.getCustomQueryOptions();
String deltaToken = null;
if (customQueryOptions != null) {
deltaToken = uriParserResultView.getCustomQueryOptions().get(DELTATOKEN);
}
if (deltaToken != null) {
ODataJPATombstoneContext.setDeltaToken(deltaToken);
}
if (listener != null && (!queryInfo.isTombstoneQuery() && listener.isTombstoneSupported())) {
query.getResultList();
List<Object> deltaResult =
(List<Object>) ODataJPATombstoneContext.getDeltaResult(((EdmMapping) mapping).getInternalName());
result = handlePaging(deltaResult, uriParserResultView);
} else {
result = handlePaging(query, uriParserResultView);
}
if (listener != null && listener.isTombstoneSupported()) {
ODataJPATombstoneContext.setDeltaToken(listener.generateDeltaToken((List<Object>) result, query));
}
if(InlineCount.ALLPAGES.equals(uriParserResultView.getInlineCount())){
queryBuilder.getCount(uriParserResultView);
}
return result == null ? new ArrayList<Object>() : result;
} catch (EdmException e) {
throw ODataJPARuntimeException.throwException(
ODataJPARuntimeException.ERROR_JPQL_QUERY_CREATE, e);
} catch (InstantiationException e) {
throw ODataJPARuntimeException.throwException(
ODataJPARuntimeException.ERROR_JPQL_QUERY_CREATE, e);
} catch (IllegalAccessException e) {
throw ODataJPARuntimeException.throwException(
ODataJPARuntimeException.ERROR_JPQL_QUERY_CREATE, e);
}
}