diff --git a/repo/repo-sqale/src/main/java/com/evolveum/midpoint/repo/sqale/SqaleRepositoryService.java b/repo/repo-sqale/src/main/java/com/evolveum/midpoint/repo/sqale/SqaleRepositoryService.java index 3efd17a1b6b..fea2c312c6e 100644 --- a/repo/repo-sqale/src/main/java/com/evolveum/midpoint/repo/sqale/SqaleRepositoryService.java +++ b/repo/repo-sqale/src/main/java/com/evolveum/midpoint/repo/sqale/SqaleRepositoryService.java @@ -515,8 +515,27 @@ private void logTraceModifications(@NotNull Collection public int countObjects(Class type, ObjectQuery query, Collection> options, OperationResult parentResult) throws SchemaException { - return 0; - // TODO + Objects.requireNonNull(type, "Object type must not be null."); + Objects.requireNonNull(parentResult, "Operation result must not be null."); + + OperationResult operationResult = parentResult.subresult(OP_NAME_PREFIX + "countObjects") + .addQualifier(type.getSimpleName()) + .addParam("type", type.getName()) + .addParam("query", query) + .build(); + + try { + var queryContext = SqaleQueryContext.from(type, transformerContext, sqlRepoContext); + return sqlQueryExecutor.count(queryContext, query, options); + } catch (QueryException | RuntimeException e) { + handleGeneralException(e, operationResult); + throw new SystemException(e); + } catch (Throwable t) { + operationResult.recordFatalError(t); + throw t; + } finally { + operationResult.computeStatusIfUnknown(); + } } @Override