Search in sources :

Example 41 with Holder

use of com.evolveum.midpoint.util.Holder in project midpoint by Evolveum.

the class WfTestHelper method waitForCaseClose.

public CaseType waitForCaseClose(CaseType aCase, final int timeout) throws Exception {
    final OperationResult waitResult = new OperationResult(AbstractIntegrationTest.class + ".waitForCaseClose");
    Holder<CaseType> currentCaseHolder = new Holder<>();
    Checker checker = new Checker() {

        @Override
        public boolean check() throws CommonException {
            CaseType currentCase = repositoryService.getObject(CaseType.class, aCase.getOid(), null, waitResult).asObjectable();
            currentCaseHolder.setValue(currentCase);
            if (verbose)
                AbstractIntegrationTest.display("Case", currentCase);
            return SchemaConstants.CASE_STATE_CLOSED.equals(currentCase.getState());
        }

        @Override
        public void timeout() {
            PrismObject<CaseType> currentCase;
            try {
                currentCase = repositoryService.getObject(CaseType.class, aCase.getOid(), null, waitResult);
                currentCaseHolder.setValue(currentCase.asObjectable());
            } catch (ObjectNotFoundException | SchemaException e) {
                throw new AssertionError("Couldn't retrieve case " + aCase, e);
            }
            LOGGER.debug("Timed-out case:\n{}", currentCase.debugDump());
            assert false : "Timeout (" + timeout + ") while waiting for " + currentCase + " to finish";
        }
    };
    IntegrationTestTools.waitFor("Waiting for " + aCase + " finish", checker, timeout, 1000);
    return currentCaseHolder.getValue();
}
Also used : AbstractIntegrationTest(com.evolveum.midpoint.test.AbstractIntegrationTest) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) Checker(com.evolveum.midpoint.test.Checker) CaseType(com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType) Holder(com.evolveum.midpoint.util.Holder) ObjectNotFoundException(com.evolveum.midpoint.util.exception.ObjectNotFoundException) OperationResult(com.evolveum.midpoint.schema.result.OperationResult)

Example 42 with Holder

use of com.evolveum.midpoint.util.Holder in project midpoint by Evolveum.

the class TestActivities method test210SuspendingCompositeWithSubtasks.

/**
 * Checks suspension of composite activity that contains delegation to subtasks.
 */
@Test
public void test210SuspendingCompositeWithSubtasks() throws Exception {
    given();
    Task task = getTestTask();
    OperationResult result = task.getResult();
    recorder.reset();
    List<String> expectedRecords = new ArrayList<>();
    Task root = taskAdd(TASK_210_SUSPENDING_COMPOSITE_WITH_SUBTASKS, result);
    // ------------------------------------------------------------------------------------ run 1
    when("run 1");
    waitForTaskTreeCloseCheckingSuspensionWithError(root.getOid(), result, 10000, 500);
    then("run 1");
    root.refresh(result);
    displayValue("Task tree", TaskDebugUtil.dumpTaskTree(root, result));
    String oidOfSubtask1 = assertTaskTree(root.getOid(), "after run 1").subtask(0).getOid();
    // @formatter:off
    assertTaskTree(root.getOid(), "after run 1").display().assertExecutionState(TaskExecutionStateType.RUNNING).assertSchedulingState(TaskSchedulingStateType.WAITING).activityState().assertTreeRealizationInProgress().rootActivity().assertRealizationState(ActivityRealizationStateType.IN_PROGRESS_LOCAL).assertResultStatus(OperationResultStatusType.IN_PROGRESS).child("mock-simple:1").assertRealizationState(ActivityRealizationStateType.IN_PROGRESS_DELEGATED).assertResultStatus(OperationResultStatusType.IN_PROGRESS).end().end().end().rootActivityStateOverview().assertRealizationInProgress().assertStatusInProgress().assertProgressHidden().assertSingleTask(TASK_210_SUSPENDING_COMPOSITE_WITH_SUBTASKS.oid, NOT_RUNNING).child("mock-simple:1").assertRealizationInProgress().assertFatalError().assertSingleTask(oidOfSubtask1, NOT_RUNNING).assertItemsProgress(null, 1).end().end().subtask(0).display().assertExecutionState(TaskExecutionStateType.SUSPENDED).assertSchedulingState(TaskSchedulingStateType.SUSPENDED).assertFatalError().activityState().rootActivity().assertRealizationState(ActivityRealizationStateType.IN_PROGRESS_LOCAL).assertResultStatus(OperationResultStatusType.FATAL_ERROR).workStateExtension().assertPropertyValuesEqual(EXECUTION_COUNT_NAME, 1).end().end().end().getObject().getOid();
    // @formatter:on
    displayDumpable("recorder after run 1", recorder);
    // 1st failed attempt
    expectedRecords.add("#1");
    assertThat(recorder.getExecutions()).as("recorder after run 1").containsExactlyElementsOf(expectedRecords);
    // @formatter:off
    Consumer<ActivityProgressInformationAsserter<?>> progressChecker = (asserter) -> asserter.display().assertInProgress().assertNoBucketInformation().assertNoItemsInformation().assertChildren(3).child("mock-simple:1").assertInProgress().assertNoBucketInformation().assertItems(1, null).assertNoChildren().end().child(// 1 user
    "composition:1").assertNotStarted().assertNoBucketInformation().assertNoItemsInformation().assertNoChildren().end().child("mock-simple:2").assertNotStarted().assertNoBucketInformation().assertNoItemsInformation().end();
    progressChecker.accept(assertProgress(root.getOid(), FULL_STATE_ONLY, "after"));
    progressChecker.accept(assertProgress(root.getOid(), FULL_STATE_PREFERRED, "after"));
    progressChecker.accept(assertProgress(root.getOid(), TREE_OVERVIEW_PREFERRED, "after"));
    // Tree overview only would miss data from the root task
    assertPerformance(root.getOid(), "after").display().assertNotApplicable().assertChildren(3).child(// 0 configs
    "mock-simple:1").assertItemsProcessed(1).assertErrors(1).assertProgress(1).assertHasWallClockTime().assertHasThroughput().end().child(// 1 user
    "composition:1").assertNotApplicable().assertNoChildren().end().child("mock-simple:2").assertNotApplicable().end();
    // @formatter:on
    // ------------------------------------------------------------------------------------ run 2
    when("run 2");
    taskManager.resumeTask(oidOfSubtask1, result);
    waitForTaskTreeCloseCheckingSuspensionWithError(root.getOid(), result, 10000, 500);
    then("run 2");
    root.refresh(result);
    displayValue("Task tree", TaskDebugUtil.dumpTaskTree(root, result));
    // @formatter:off
    assertTaskTree(root.getOid(), "after run 2").display().assertExecutionState(TaskExecutionStateType.RUNNING).assertSchedulingState(TaskSchedulingStateType.WAITING).activityState().assertTreeRealizationInProgress().rootActivity().assertRealizationState(ActivityRealizationStateType.IN_PROGRESS_LOCAL).assertResultStatus(OperationResultStatusType.IN_PROGRESS).child("mock-simple:1").assertRealizationState(ActivityRealizationStateType.IN_PROGRESS_DELEGATED).assertResultStatus(OperationResultStatusType.IN_PROGRESS).end().end().end().rootActivityStateOverview().assertRealizationInProgress().assertStatusInProgress().assertProgressHidden().assertSingleTask(TASK_210_SUSPENDING_COMPOSITE_WITH_SUBTASKS.oid, NOT_RUNNING).child("mock-simple:1").assertRealizationInProgress().assertFatalError().assertSingleTask(oidOfSubtask1, NOT_RUNNING).assertItemsProgress(null, 2).end().end().subtask(0).display().assertExecutionState(TaskExecutionStateType.SUSPENDED).assertSchedulingState(TaskSchedulingStateType.SUSPENDED).assertFatalError().activityState().rootActivity().assertRealizationState(ActivityRealizationStateType.IN_PROGRESS_LOCAL).assertResultStatus(OperationResultStatusType.FATAL_ERROR).workStateExtension().assertPropertyValuesEqual(EXECUTION_COUNT_NAME, 2).end().end().end();
    // @formatter:on
    displayDumpable("recorder after run 2", recorder);
    // 2nd failed attempt
    expectedRecords.add("#1");
    assertThat(recorder.getExecutions()).as("recorder after run 2").containsExactlyElementsOf(expectedRecords);
    // @formatter:off
    assertProgress(root.getOid(), "after").display().assertInProgress().assertNoBucketInformation().assertNoItemsInformation().assertChildren(3).child("mock-simple:1").assertInProgress().assertNoBucketInformation().assertItems(2, null).assertNoChildren().end().child(// 1 user
    "composition:1").assertNotStarted().assertNoBucketInformation().assertNoItemsInformation().assertNoChildren().end().child("mock-simple:2").assertNotStarted().assertNoBucketInformation().assertNoItemsInformation().end();
    assertPerformance(root.getOid(), "after").display().assertNotApplicable().assertChildren(3).child(// 0 configs
    "mock-simple:1").assertItemsProcessed(2).assertErrors(2).assertProgress(2).assertHasWallClockTime().assertHasThroughput().end().child(// 1 user
    "composition:1").assertNotApplicable().assertNoChildren().end().child("mock-simple:2").assertNotApplicable().end();
    // @formatter:on
    // ------------------------------------------------------------------------------------ run 3
    when("run 3");
    taskManager.resumeTask(oidOfSubtask1, result);
    waitForTaskTreeCloseCheckingSuspensionWithError(root.getOid(), result, 10000, 500);
    then("run 3");
    root.refresh(result);
    displayValue("Task tree", TaskDebugUtil.dumpTaskTree(root, result));
    Holder<String> oidOfSubtask2Holder = new Holder<>();
    Holder<String> oidOfSubtask21Holder = new Holder<>();
    Holder<String> oidOfSubtask22Holder = new Holder<>();
    // @formatter:off
    assertTaskTree(root.getOid(), "after run 3").display().subtaskForPath(ActivityPath.fromId("composition:1")).sendOid(oidOfSubtask2Holder).subtaskForPath(ActivityPath.fromId("composition:1", "mock-simple:1")).sendOid(oidOfSubtask21Holder).end().subtaskForPath(ActivityPath.fromId("composition:1", "mock-simple:2")).sendOid(oidOfSubtask22Holder).end().end().assertExecutionState(TaskExecutionStateType.RUNNING).assertSchedulingState(TaskSchedulingStateType.WAITING).activityState().assertTreeRealizationInProgress().rootActivity().assertRealizationState(ActivityRealizationStateType.IN_PROGRESS_LOCAL).assertResultStatus(OperationResultStatusType.IN_PROGRESS).child("mock-simple:1").assertRealizationState(ActivityRealizationStateType.COMPLETE).assertResultStatus(OperationResultStatusType.SUCCESS).end().child("composition:1").assertRealizationState(ActivityRealizationStateType.IN_PROGRESS_DELEGATED).assertResultStatus(OperationResultStatusType.IN_PROGRESS).end().end().end().rootActivityStateOverview().assertRealizationInProgress().assertStatusInProgress().assertProgressHidden().assertSingleTask(TASK_210_SUSPENDING_COMPOSITE_WITH_SUBTASKS.oid, NOT_RUNNING).child("mock-simple:1").assertComplete().assertSuccess().assertSingleTask(oidOfSubtask1, NOT_RUNNING).assertItemsProgress(null, 3).end().child("composition:1").assertRealizationInProgress().assertStatusInProgress().assertSingleTask(oidOfSubtask2Holder.getValue(), NOT_RUNNING).assertProgressVisible().assertNoItemsProgress().child("mock-simple:1").assertComplete().assertSuccess().assertSingleTask(oidOfSubtask21Holder.getValue(), NOT_RUNNING).assertItemsProgress(null, 1).end().child("mock-simple:2").assertRealizationInProgress().assertFatalError().assertSingleTask(oidOfSubtask22Holder.getValue(), NOT_RUNNING).assertItemsProgress(null, 1).end().child("mock-simple:3").assertNotStarted().assertNoTask().end().end().end().subtaskForPath(ActivityPath.fromId("mock-simple:1")).display().assertClosed().assertSuccess().activityState().rootActivity().assertRealizationState(ActivityRealizationStateType.COMPLETE).assertResultStatus(OperationResultStatusType.SUCCESS).workStateExtension().assertPropertyValuesEqual(EXECUTION_COUNT_NAME, 3).end().end().end().end().subtaskForPath(ActivityPath.fromId("composition:1")).display().subtaskForPath(ActivityPath.fromId("composition:1", "mock-simple:1")).display().assertClosed().end().subtaskForPath(ActivityPath.fromId("composition:1", "mock-simple:2")).display().assertSuspended().getOid();
    // @formatter:on
    String oidOfSubtask22 = oidOfSubtask22Holder.getValue();
    displayDumpable("recorder after run 3", recorder);
    // success after 2 failures
    expectedRecords.add("#1");
    // immediate success
    expectedRecords.add("#2.1");
    // 1st failure
    expectedRecords.add("#2.2");
    assertThat(recorder.getExecutions()).as("recorder after run 3").containsExactlyElementsOf(expectedRecords);
    dumpProgressAndPerformanceInfo(root.getOid(), result);
    Consumer<ActivityProgressInformationAsserter<?>> progressChecker3 = (asserter) -> asserter.display().assertInProgress().assertNoBucketInformation().assertNoItemsInformation().assertChildren(3).child("mock-simple:1").assertComplete().assertNoBucketInformation().assertItems(3, null).assertNoChildren().end().child("composition:1").assertInProgress().assertNoBucketInformation().assertNoItemsInformation().assertChildren(3).child("mock-simple:1").assertComplete().assertNoBucketInformation().assertItems(1, null).assertNoChildren().end().child("mock-simple:2").assertInProgress().assertNoBucketInformation().assertItems(1, null).assertNoChildren().end().child("mock-simple:3").assertNotStarted().assertNoBucketInformation().assertNoItemsInformation().assertNoChildren().end().end().child("mock-simple:2").assertNotStarted().assertNoBucketInformation().assertNoItemsInformation().assertNoChildren().end();
    progressChecker3.accept(assertProgress(root.getOid(), FULL_STATE_ONLY, "after run 3 (full only)"));
    progressChecker3.accept(assertProgress(root.getOid(), FULL_STATE_PREFERRED, "after run 3 (full preferred)"));
    progressChecker3.accept(assertProgress(root.getOid(), TREE_OVERVIEW_PREFERRED, "after run 3 (tree preferred"));
    // ------------------------------------------------------------------------------------ run 4
    when("run 4");
    taskManager.resumeTask(oidOfSubtask22, result);
    waitForTaskTreeCloseCheckingSuspensionWithError(root.getOid(), result, 10000, 500);
    then("run 4");
    root.refresh(result);
    displayValue("Task tree", TaskDebugUtil.dumpTaskTree(root, result));
    String oidOfSubtask3 = assertTaskTree(root.getOid(), "after run 4").display().assertExecutionState(TaskExecutionStateType.RUNNING).assertSchedulingState(TaskSchedulingStateType.WAITING).subtaskForPath(ActivityPath.fromId("mock-simple:2")).display().assertSuspended().getOid();
    displayDumpable("recorder after run 4", recorder);
    // success after 1 failure
    expectedRecords.add("#2.2");
    expectedRecords.add("#2.3");
    // 1st failure
    expectedRecords.add("#3");
    assertThat(recorder.getExecutions()).as("recorder after run 4").containsExactlyElementsOf(expectedRecords);
    // ------------------------------------------------------------------------------------ run 5
    when("run 5");
    taskManager.resumeTask(oidOfSubtask3, result);
    waitForTaskTreeCloseCheckingSuspensionWithError(root.getOid(), result, 10000, 500);
    then("run 5");
    root.refresh(result);
    displayValue("Task tree", TaskDebugUtil.dumpTaskTree(root, result));
    // @formatter:off
    assertTaskTree(root.getOid(), "after run 5").display().assertSuccess().assertExecutionState(TaskExecutionStateType.CLOSED).activityState().assertTreeRealizationComplete();
    // @formatter:on
    displayDumpable("recorder after run 5", recorder);
    // success after 1 failure
    expectedRecords.add("#3");
    assertThat(recorder.getExecutions()).as("recorder after run 5").containsExactlyElementsOf(expectedRecords);
    // @formatter:off
    assertProgress(root.getOid(), "after").display().assertComplete().assertNoBucketInformation().assertNoItemsInformation().assertChildren(3).child("mock-simple:1").assertComplete().assertNoBucketInformation().assertItems(3, null).assertNoChildren().end().child(// 1 user
    "composition:1").assertComplete().assertNoBucketInformation().assertNoItemsInformation().assertChildren(3).child("mock-simple:1").assertComplete().assertNoBucketInformation().assertItems(1, null).end().child("mock-simple:2").assertComplete().assertNoBucketInformation().assertItems(2, null).end().child("mock-simple:3").assertComplete().assertNoBucketInformation().assertItems(1, null).end().end().child("mock-simple:2").assertComplete().assertNoBucketInformation().assertItems(2, null).assertNoChildren().end();
    assertPerformance(root.getOid(), "after").display().assertNotApplicable().assertChildren(3).child("mock-simple:1").assertItemsProcessed(3).assertErrors(2).assertProgress(3).assertHasWallClockTime().assertHasThroughput().end().child("composition:1").assertNotApplicable().assertChildren(3).child("mock-simple:1").assertItemsProcessed(1).assertErrors(0).assertProgress(1).assertHasWallClockTime().assertHasThroughput().end().child("mock-simple:2").assertItemsProcessed(2).assertErrors(1).assertProgress(2).assertHasWallClockTime().assertHasThroughput().end().child("mock-simple:3").assertItemsProcessed(1).assertErrors(0).assertProgress(1).assertHasWallClockTime().assertHasThroughput().end().end().child("mock-simple:2").assertItemsProcessed(2).assertErrors(1).assertProgress(2).assertHasWallClockTime().assertHasThroughput().end();
// @formatter:on
}
Also used : IntStream(java.util.stream.IntStream) DirtiesContext(org.springframework.test.annotation.DirtiesContext) java.util(java.util) CommonTaskBeans(com.evolveum.midpoint.repo.common.activity.run.CommonTaskBeans) Listeners(org.testng.annotations.Listeners) com.evolveum.midpoint.xml.ns._public.common.common_3(com.evolveum.midpoint.xml.ns._public.common.common_3) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) Autowired(org.springframework.beans.factory.annotation.Autowired) com.evolveum.midpoint.schema.util.task(com.evolveum.midpoint.schema.util.task) Test(org.testng.annotations.Test) DebugUtil(com.evolveum.midpoint.util.DebugUtil) NOT_RUNNING(com.evolveum.midpoint.xml.ns._public.common.common_3.ActivityTaskExecutionStateType.NOT_RUNNING) BucketingConfigurationOverrides(com.evolveum.midpoint.repo.common.activity.run.buckets.BucketingConfigurationOverrides) WorkDefinitionUtil(com.evolveum.midpoint.schema.util.task.work.WorkDefinitionUtil) AbstractRepoCommonTest(com.evolveum.midpoint.repo.common.AbstractRepoCommonTest) PrismContext(com.evolveum.midpoint.prism.PrismContext) SimpleReportReader(com.evolveum.midpoint.repo.common.activity.run.reports.SimpleReportReader) ListUtils(org.apache.commons.collections4.ListUtils) ActivityProgressInformationAsserter(com.evolveum.midpoint.test.asserter.ActivityProgressInformationAsserter) EXECUTION_COUNT_NAME(com.evolveum.midpoint.repo.common.tasks.handlers.CommonMockActivityHelper.EXECUTION_COUNT_NAME) InformationSource(com.evolveum.midpoint.schema.util.task.ActivityProgressInformationBuilder.InformationSource) NoOpActivityHandler(com.evolveum.midpoint.repo.common.activity.handlers.NoOpActivityHandler) Holder(com.evolveum.midpoint.util.Holder) ObjectNotFoundException(com.evolveum.midpoint.util.exception.ObjectNotFoundException) WorkDefinitionWrapper(com.evolveum.midpoint.schema.util.task.work.WorkDefinitionWrapper) MiscUtil(com.evolveum.midpoint.util.MiscUtil) ObjectAlreadyExistsException(com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException) PrismObject(com.evolveum.midpoint.prism.PrismObject) Task(com.evolveum.midpoint.task.api.Task) Collectors(java.util.stream.Collectors) TreeNode(com.evolveum.midpoint.util.TreeNode) File(java.io.File) ActivityReportUtil(com.evolveum.midpoint.repo.common.activity.run.reports.ActivityReportUtil) Consumer(java.util.function.Consumer) CommonException(com.evolveum.midpoint.util.exception.CommonException) TestResource(com.evolveum.midpoint.test.TestResource) SynchronizationSituationType(com.evolveum.midpoint.xml.ns._public.common.common_3.SynchronizationSituationType) ActionsExecutedInformationUtil(com.evolveum.midpoint.schema.statistics.ActionsExecutedInformationUtil) MockRecorder(com.evolveum.midpoint.repo.common.tasks.handlers.MockRecorder) ContextConfiguration(org.springframework.test.context.ContextConfiguration) QName(javax.xml.namespace.QName) TaskDebugUtil(com.evolveum.midpoint.task.api.TaskDebugUtil) ChangeTypeType(com.evolveum.prism.xml.ns._public.types_3.ChangeTypeType) Task(com.evolveum.midpoint.task.api.Task) Holder(com.evolveum.midpoint.util.Holder) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) ActivityProgressInformationAsserter(com.evolveum.midpoint.test.asserter.ActivityProgressInformationAsserter) Test(org.testng.annotations.Test) AbstractRepoCommonTest(com.evolveum.midpoint.repo.common.AbstractRepoCommonTest)

Example 43 with Holder

use of com.evolveum.midpoint.util.Holder in project midpoint by Evolveum.

the class AbstractSecurityTest method assumePowerOfAttorneyAllow.

protected MidPointPrincipal assumePowerOfAttorneyAllow(String donorOid) throws Exception {
    Holder<MidPointPrincipal> principalHolder = new Holder<>();
    assertAllow("assumePowerOfAttorney", (task, result) -> {
        PrismObject<UserType> donor = repositoryService.getObject(UserType.class, donorOid, null, result);
        MidPointPrincipal donorPrincipal = modelInteractionService.assumePowerOfAttorney(donor, task, result);
        principalHolder.setValue(donorPrincipal);
    });
    return principalHolder.getValue();
}
Also used : Holder(com.evolveum.midpoint.util.Holder) MidPointPrincipal(com.evolveum.midpoint.security.api.MidPointPrincipal)

Example 44 with Holder

use of com.evolveum.midpoint.util.Holder in project midpoint by Evolveum.

the class AbstractSecurityTest method assumePowerOfAttorneyDeny.

protected MidPointPrincipal assumePowerOfAttorneyDeny(String donorOid) throws Exception {
    Holder<MidPointPrincipal> principalHolder = new Holder<>();
    assertDeny("assumePowerOfAttorney", (task, result) -> {
        PrismObject<UserType> donor = repositoryService.getObject(UserType.class, donorOid, null, result);
        MidPointPrincipal donorPrincipal = modelInteractionService.assumePowerOfAttorney(donor, task, result);
        principalHolder.setValue(donorPrincipal);
    });
    return principalHolder.getValue();
}
Also used : Holder(com.evolveum.midpoint.util.Holder) MidPointPrincipal(com.evolveum.midpoint.security.api.MidPointPrincipal)

Example 45 with Holder

use of com.evolveum.midpoint.util.Holder in project midpoint by Evolveum.

the class TransformationalAsyncUpdateMessageListener method createChange.

@NotNull
private UcfAsyncUpdateChange createChange(UcfChangeType changeBean, OperationResult result, int changeSequentialNumber, AcknowledgementSink acknowledgeSink) throws SchemaException {
    QName objectClassName = changeBean.getObjectClass();
    if (objectClassName == null) {
        throw new SchemaException("Object class name is null in " + changeBean);
    }
    ResourceSchema resourceSchema = getResourceSchema(result);
    ResourceObjectDefinition objectClassDef = resourceSchema.findDefinitionForObjectClass(objectClassName);
    if (objectClassDef == null) {
        throw new SchemaException("Object class " + objectClassName + " not found in " + resourceSchema);
    }
    ObjectDelta<ShadowType> delta;
    ObjectDeltaType deltaBean = changeBean.getObjectDelta();
    if (deltaBean != null) {
        setFromDefaults((ShadowType) deltaBean.getObjectToAdd(), objectClassName);
        if (deltaBean.getObjectType() == null) {
            deltaBean.setObjectType(ShadowType.COMPLEX_TYPE);
        }
        delta = DeltaConvertor.createObjectDelta(deltaBean, getPrismContext());
    } else {
        delta = null;
    }
    setFromDefaults(changeBean.getObject(), objectClassName);
    Holder<Object> primaryIdentifierRealValueHolder = new Holder<>();
    Collection<ResourceAttribute<?>> identifiers = getIdentifiers(changeBean, objectClassDef, primaryIdentifierRealValueHolder);
    if (identifiers.isEmpty()) {
        throw new SchemaException("No identifiers in async update change bean " + changeBean);
    }
    boolean notificationOnly = changeBean.getObject() == null && delta == null;
    return new UcfAsyncUpdateChange(changeSequentialNumber, primaryIdentifierRealValueHolder.getValue(), objectClassDef.getObjectClassDefinition(), identifiers, delta, asPrismObject(changeBean.getObject()), notificationOnly, acknowledgeSink);
}
Also used : QName(javax.xml.namespace.QName) Holder(com.evolveum.midpoint.util.Holder) UcfAsyncUpdateChange(com.evolveum.midpoint.provisioning.ucf.api.UcfAsyncUpdateChange) ObjectDeltaType(com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType) ObjectTypeUtil.asPrismObject(com.evolveum.midpoint.schema.util.ObjectTypeUtil.asPrismObject) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

Holder (com.evolveum.midpoint.util.Holder)45 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)27 PrismObject (com.evolveum.midpoint.prism.PrismObject)16 Task (com.evolveum.midpoint.task.api.Task)13 Test (org.testng.annotations.Test)13 SchemaException (com.evolveum.midpoint.util.exception.SchemaException)12 ObjectNotFoundException (com.evolveum.midpoint.util.exception.ObjectNotFoundException)9 ItemPath (com.evolveum.midpoint.prism.path.ItemPath)8 QName (javax.xml.namespace.QName)8 SystemException (com.evolveum.midpoint.util.exception.SystemException)7 LensContext (com.evolveum.midpoint.model.impl.lens.LensContext)6 ObjectQuery (com.evolveum.midpoint.prism.query.ObjectQuery)6 ShadowType (com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType)6 NotNull (org.jetbrains.annotations.NotNull)6 AbstractUninitializedCertificationTest (com.evolveum.midpoint.certification.test.AbstractUninitializedCertificationTest)5 ObjectDelta (com.evolveum.midpoint.prism.delta.ObjectDelta)5 CommunicationException (com.evolveum.midpoint.util.exception.CommunicationException)5 Trace (com.evolveum.midpoint.util.logging.Trace)5 TraceManager (com.evolveum.midpoint.util.logging.TraceManager)5 com.evolveum.midpoint.xml.ns._public.common.common_3 (com.evolveum.midpoint.xml.ns._public.common.common_3)5