public DefaultComponentQueryResult find(ComponentQuery query, List<Component> allComponents) { LOG.debug("ComponentQuery : {}", query); Collection<Component> foundComponents = search(query, allComponents); // Sort components Collection<? extends Component> sortedComponents = new ComponentsFinderSort(foundComponents, query).sort(); // Apply pagination if needed if (ComponentQuery.NO_PAGINATION == query.pageSize()) { return new DefaultComponentQueryResult(sortedComponents).setQuery(query); } else { Paging paging = forPageIndex(query.pageIndex()) .withPageSize(query.pageSize()) .andTotal(foundComponents.size()); Collection<? extends Component> pagedComponents = pagedComponents(sortedComponents, paging); return new DefaultComponentQueryResult(pagedComponents).setPaging(paging).setQuery(query); } }