Skip to content

Commit

Permalink
Turn off schema refinements application by default
Browse files Browse the repository at this point in the history
This is an experimental change: In order to improve the performance
of get/search model API calls, we now turned off the application of
schema refinements (from object templates) altogether.

The tests that checked for this functionality were adapted. The question
is whether there are some implicit assumptions that these refined
definitions are applied.
  • Loading branch information
mederly committed Apr 21, 2023
1 parent 20302b0 commit 5752527
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ default GetOperationOptionsBuilder futurePointInTime() {
GetOperationOptionsBuilder attachDiagData();
GetOperationOptionsBuilder attachDiagData(Boolean value);
GetOperationOptionsBuilder definitionProcessing(DefinitionProcessingOption value);
GetOperationOptionsBuilder definitionUpdate(DefinitionUpdateOption value);
GetOperationOptionsBuilder iterationMethod(IterationMethodType value);
GetOperationOptionsBuilder executionPhase();
GetOperationOptionsBuilder executionPhase(Boolean value);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,11 @@ public GetOperationOptionsBuilder definitionProcessing(DefinitionProcessingOptio
return forPaths(opts -> opts.setDefinitionProcessing(value));
}

@Override
public GetOperationOptionsBuilder definitionUpdate(DefinitionUpdateOption value) {
return forPaths(opts -> opts.setDefinitionUpdate(value));
}

@Override
public GetOperationOptionsBuilder iterationMethod(IterationMethodType value) {
return forPaths(opts -> opts.setIterationMethod(value));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,6 @@ public Map<DefinitionProcessingOption, PathSet> getDefinitionProcessingMap() {
public @NotNull DefinitionUpdateOption getDefinitionUpdate() {
return Objects.requireNonNullElse(
GetOperationOptions.getDefinitionUpdate(getRootOptions()),
DefinitionUpdateOption.DEEP); // temporary default
DefinitionUpdateOption.NONE); // temporary default (for experiments)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -916,7 +916,13 @@ public void test210UserDefinition() throws Exception {
OperationResult result = task.getResult();

when();
PrismObject<UserType> user = modelService.getObject(UserType.class, USER_JACK_OID, null, task, result);
PrismObject<UserType> user =
modelService.getObject(
UserType.class, USER_JACK_OID,
GetOperationOptionsBuilder.create()
.definitionUpdate(DefinitionUpdateOption.DEEP)
.build(),
task, result);

then();
result.computeStatus();
Expand Down Expand Up @@ -977,7 +983,13 @@ public void test213ModifiedUserJack() throws Exception {
modifyObjectReplaceProperty(UserType.class, USER_JACK_OID, UserType.F_PREFERRED_LANGUAGE, task, result, "en_PR");

when();
PrismObject<UserType> user = modelService.getObject(UserType.class, USER_JACK_OID, null, task, result);
PrismObject<UserType> user =
modelService.getObject(
UserType.class, USER_JACK_OID,
GetOperationOptionsBuilder.create()
.definitionUpdate(DefinitionUpdateOption.DEEP)
.build(),
task, result);

then();
assertSuccess(result);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import javax.xml.namespace.QName;

import com.evolveum.midpoint.model.api.ModelInteractionService;
import com.evolveum.midpoint.schema.*;
import com.evolveum.midpoint.schema.processor.ResourceObjectDefinition;

import org.assertj.core.api.Assertions;
Expand All @@ -39,10 +40,6 @@
import com.evolveum.midpoint.prism.query.TypeFilter;
import com.evolveum.midpoint.prism.util.PrismAsserts;
import com.evolveum.midpoint.prism.util.PrismTestUtil;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SchemaService;
import com.evolveum.midpoint.schema.SearchResultList;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.processor.ResourceAttributeContainer;
import com.evolveum.midpoint.schema.result.OperationResult;
Expand Down Expand Up @@ -3245,6 +3242,9 @@ public void test400AutzJackSearchByAssignmentTargetRef() throws Exception {
@Test
public void test410ItemAccessMultivalueAttrChild() throws Exception {
given();
Task task = getTestTask();
OperationResult result = task.getResult();

cleanupAutzTest(USER_JACK_OID);

assignRole(USER_JACK_OID, ROLE_SUPERUSER_OID);
Expand All @@ -3253,7 +3253,14 @@ public void test410ItemAccessMultivalueAttrChild() throws Exception {

when();

PrismObject<UserType> user = getObject(UserType.class, USER_CHARLES_OID);
PrismObject<UserType> user = modelService.getObject(
UserType.class,
USER_CHARLES_OID,
GetOperationOptionsBuilder.create()
.definitionUpdate(DefinitionUpdateOption.ROOT_ONLY)
.build(),
task,
result);

then();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7325,6 +7325,7 @@ protected SimulationResultAsserter<Void> assertSimulationResult(SimulationResult
SimulationResultAsserter.forResult(simResult, desc));
}

// FIXME does not call applySchemasAndSecurity!
public <O extends ObjectType> PrismObject<O> getObject(
Class<O> type, String oid, Collection<SelectorOptions<GetOperationOptions>> options, OperationResult result)
throws ObjectNotFoundException, SchemaException {
Expand Down

0 comments on commit 5752527

Please sign in to comment.