Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/support-3.7' into s…
Browse files Browse the repository at this point in the history
…upport-3.7
  • Loading branch information
skublik committed Apr 1, 2019
2 parents 8c28314 + 8b741e5 commit 6ad06a7
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 17 deletions.
Expand Up @@ -24,6 +24,7 @@
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.prism.query.*;
import org.apache.commons.lang.BooleanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
Expand Down Expand Up @@ -58,10 +59,6 @@
import com.evolveum.midpoint.prism.match.MatchingRuleRegistry;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.prism.query.EqualFilter;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.Visitor;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
import com.evolveum.midpoint.prism.query.builder.S_AtomicFilterEntry;
import com.evolveum.midpoint.prism.query.builder.S_FilterEntry;
Expand Down Expand Up @@ -717,8 +714,12 @@ public SearchResultMetadata searchObjectsIterativeRepository(

ObjectQuery repoQuery = query.clone();
processQueryMatchingRules(repoQuery, ctx.getObjectClassDefinition());

return repositoryService.searchObjectsIterative(ShadowType.class, repoQuery, repoHandler, options, true, parentResult);

boolean strictlySequential = RepositoryService.isCustomPagingOkWithPagedSeqIteration(query);
if (!strictlySequential) {
LOGGER.debug("Avoiding strictly sequential paged iteration default because custom paging is used");
}
return repositoryService.searchObjectsIterative(ShadowType.class, repoQuery, repoHandler, options, strictlySequential, parentResult);
}

/**
Expand Down
Expand Up @@ -21,6 +21,7 @@
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.prism.query.ObjectPaging;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.repo.api.query.ObjectFilterExpressionEvaluator;
import com.evolveum.midpoint.schema.*;
Expand Down Expand Up @@ -636,4 +637,13 @@ <O extends ObjectType> boolean selectorMatches(ObjectSelectorType objectSelector
void unregisterConflictWatcher(ConflictWatcher watcher);

boolean hasConflict(ConflictWatcher watcher, OperationResult result);

// TODO move to some util class
static boolean isCustomPagingOkWithPagedSeqIteration(ObjectQuery query) {
if (query == null || query.getPaging() == null) {
return true;
}
ObjectPaging paging = query.getPaging();
return !paging.hasOrdering() && !paging.hasGrouping() && paging.getOffset() == null;
}
}
Expand Up @@ -52,7 +52,6 @@
import com.evolveum.midpoint.schema.util.ObjectQueryUtil;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.schema.util.SystemConfigurationTypeUtil;
import com.evolveum.midpoint.util.DebugUtil;
import com.evolveum.midpoint.util.PrettyPrinter;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.CommunicationException;
Expand Down Expand Up @@ -818,7 +817,7 @@ public <T extends ObjectType> SearchResultMetadata searchObjectsIterative(Class<
if (explicitIterationMethod == null || explicitIterationMethod == IterationMethodType.DEFAULT) {
if (getConfiguration().isIterativeSearchByPaging()) {
if (strictlySequential) {
if (isCustomPagingOkWithPagedSeqIteration(query)) {
if (RepositoryService.isCustomPagingOkWithPagedSeqIteration(query)) {
iterationMethod = IterationMethodType.STRICTLY_SEQUENTIAL_PAGING;
} else {
// TODO switch to LOGGER.error
Expand Down Expand Up @@ -856,14 +855,6 @@ public <T extends ObjectType> SearchResultMetadata searchObjectsIterative(Class<
return null;
}

public static boolean isCustomPagingOkWithPagedSeqIteration(ObjectQuery query) {
if (query == null || query.getPaging() == null) {
return true;
}
ObjectPaging paging = query.getPaging();
return !paging.hasOrdering() && !paging.hasGrouping() && paging.getOffset() == null;
}

@Nullable
private <T extends ObjectType> SearchResultMetadata searchObjectsIterativeBySingleTransaction(Class<T> type,
ObjectQuery query, ResultHandler<T> handler, Collection<SelectorOptions<GetOperationOptions>> options, OperationResult subResult)
Expand Down
Expand Up @@ -801,7 +801,7 @@ public <T extends ObjectType> void searchObjectsIterativeByPagingStrictlySequent
throws SchemaException {

try {
if (!SqlRepositoryServiceImpl.isCustomPagingOkWithPagedSeqIteration(query)) {
if (!RepositoryService.isCustomPagingOkWithPagedSeqIteration(query)) {
throw new IllegalArgumentException("Externally specified paging is not supported on strictly sequential "
+ "iterative search. Query = " + query);
}
Expand Down

0 comments on commit 6ad06a7

Please sign in to comment.