Skip to content

Commit

Permalink
MID-8842 ninja - non iterative change execution processor + test
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Aug 1, 2023
1 parent d5fb423 commit d1c2e37
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright (C) 2010-2023 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.schema.validator.processor;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.validator.UpgradeObjectProcessor;
import com.evolveum.midpoint.schema.validator.UpgradePhase;
import com.evolveum.midpoint.schema.validator.UpgradePriority;
import com.evolveum.midpoint.schema.validator.UpgradeType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExplicitChangeExecutionWorkDefinitionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.WorkDefinitionsType;

@SuppressWarnings("unused")
public class NonIterativeChangeExecutionProcessor implements UpgradeObjectProcessor<TaskType> {

@Override
public UpgradePhase getPhase() {
return UpgradePhase.BEFORE;
}

@Override
public UpgradePriority getPriority() {
return UpgradePriority.OPTIONAL;
}

@Override
public UpgradeType getType() {
return UpgradeType.SEAMLESS;
}

@Override
public boolean isApplicable(PrismObject<?> object, ItemPath path) {
return matchParentTypeAndItemName(
object, path, WorkDefinitionsType.class, WorkDefinitionsType.F_NON_ITERATIVE_CHANGE_EXECUTION);
}

@Override
public boolean process(PrismObject<TaskType> object, ItemPath path) throws Exception {
WorkDefinitionsType definitions = getItemParent(object, path);

ExplicitChangeExecutionWorkDefinitionType definition = definitions.getNonIterativeChangeExecution();
definitions.setExplicitChangeExecution(definition);
definitions.setNonIterativeChangeExecution(null);

return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,16 @@ public void test80TaskRecomputation() throws Exception {
});
}

@Test
public void test100TaskNonIterative() throws Exception {
testUpgradeValidator("task-non-iterative.xml", result -> {
Assertions.assertThat(result.getItems())
.hasSize(1);

Assertions.assertThat(result.hasChanges()).isTrue();
});
}

private UpgradeValidationItem assertGetItem(UpgradeValidationResult result, String identifier) {
Assertions.assertThat(result).isNotNull();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!--
~ Copyright (C) 2010-2023 Evolveum and contributors
~
~ This work is dual-licensed under the Apache License 2.0
~ and European Union Public License. See LICENSE file for details.
-->

<task xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
xmlns:mext="http://midpoint.evolveum.com/xml/ns/public/model/extension-3"
xmlns:rext="http://midpoint.evolveum.com/xml/ns/public/report/extension-3"
oid="a5a5966e-cca5-4ce5-8353-7c41dff16dff">

<name>non-iterative</name>

<activity>
<work>
<explicitChangeExecution>
<delta>
<changeType>add</changeType>
<objectType>UserType</objectType>
</delta>
</explicitChangeExecution>
</work>
</activity>
</task>
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!--
~ Copyright (C) 2010-2023 Evolveum and contributors
~
~ This work is dual-licensed under the Apache License 2.0
~ and European Union Public License. See LICENSE file for details.
-->

<task xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
xmlns:mext="http://midpoint.evolveum.com/xml/ns/public/model/extension-3"
xmlns:rext="http://midpoint.evolveum.com/xml/ns/public/report/extension-3"
oid="a5a5966e-cca5-4ce5-8353-7c41dff16dff">

<name>non-iterative</name>

<activity>
<work>
<nonIterativeChangeExecution>
<delta>
<changeType>add</changeType>
<objectType>UserType</objectType>
</delta>
</nonIterativeChangeExecution>
</work>
</activity>
</task>

0 comments on commit d1c2e37

Please sign in to comment.