Apache CMIS: resultado da consulta de paginação

Recentemente, comecei a usar o Apache CMIS e li a documentação e os exemplos oficiais. Não notei nada sobre os resultados da consulta de paginação.

Há um exemplo mostrando como listar itens de pasta, definindo maxItemsPerPage usando operationContext, mas parece que operationContext pode ser usado dentro do método getChilder:

int maxItemsPerPage = 5;
int skipCount = 10;
CmisObject object = session.getObject(session.createObjectId(folderId));
Folder folder = (Folder) object;
OperationContext operationContext = session.createOperationContext();
operationContext.setMaxItemsPerPage(maxItemsPerPage);
ItemIterable<CmisObject> children = folder.getChildren(operationContext);
ItemIterable<CmisObject> page = children.skipTo(skipCount).getPage();

Isso é bom quando se trata de listar a pasta u. Mas meu caso é sobre obter resultados da consulta de pesquisa personalizada. A abordagem básica é:

String myType = "my:documentType";
ObjectType type = session.getTypeDefinition(myType);
PropertyDefinition<?> objectIdPropDef = type.getPropertyDefinitions().get(PropertyIds.OBJECT_ID);
String objectIdQueryName = objectIdPropDef.getQueryName();
String queryString = "SELECT " + objectIdQueryName + " FROM " + type.getQueryName();
ItemIterable<QueryResult> results = session.query(queryString, false);
for (QueryResult qResult : results) {
    String objectId = qResult.getPropertyValueByQueryName(objectIdQueryName);
    Document doc = (Document) session.getObject(session.createObjectId(objectId));
}

Essa abordagem recuperará todos os documentos em um queryResult, mas eu gostaria de incluir startIndex e limit. A idéia seria digitar algo assim:

ItemIterable<QueryResult> results = session.query(queryString, false).skipTo(startIndex).getPage(limit);

Não tenho certeza sobre esta parte: getPage (limit). Essa é a abordagem correta para paginação? Também gostaria de recuperar o Número total de itens, para saber como configurar o máximo de itens na grade em que meus itens serão mostrados. Existe um método, mas algo estranho está escrito nos documentos, como às vezes o repositório não pode estar ciente dos itens máximos. Este é esse método:

results.getTotalNumItems();

Eu tentei algo como:

SELECT COUNT(*)...

mas isso não fez o truque :)

Por favor, você poderia me dar alguns conselhos sobre como fazer uma paginação adequada a partir de um resultado da consulta?

Desde já, obrigado.

questionAnswers(1)

yourAnswerToTheQuestion