Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
katkav committed Apr 17, 2020
2 parents eea3573 + b8cb6a8 commit b811963
Show file tree
Hide file tree
Showing 10 changed files with 1,236 additions and 1,057 deletions.
Expand Up @@ -15,9 +15,11 @@
import com.evolveum.midpoint.web.component.util.Selectable;
import com.evolveum.midpoint.wf.util.ApprovalUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.collections.CollectionUtils;
import java.util.stream.Collectors;

import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

Expand Down Expand Up @@ -84,7 +86,7 @@ public Integer getEscalationLevelNumber() {

// if pageBase is null, references will not be resolved
@Nullable
public static DecisionDto create(CaseEventType e, @Nullable PageBase pageBase) {
public static <O extends ObjectType> DecisionDto create(CaseEventType e, @Nullable PageBase pageBase) {

// we want to show user decisions, automatic decisions and delegations
DecisionDto rv = new DecisionDto();
Expand Down Expand Up @@ -125,9 +127,10 @@ public static DecisionDto create(CaseEventType e, @Nullable PageBase pageBase) {
rv.comment = event.getComment();
}

String assigneeBeforeNamesList = WebComponentUtil.getReferencedObjectDisplayNamesAndNames(event.getAssigneeBefore(), false);
String assigneeAfterNamesList = WebComponentUtil.getReferencedObjectDisplayNamesAndNames(event.getDelegatedTo(), false);
rv.assigneeChange = assigneeBeforeNamesList + " -> " + assigneeAfterNamesList;
String assigneeBeforeNames = getReferencedObjectListDisplayNames(event.getAssigneeBefore(), pageBase);
String assigneeAfterNames = getReferencedObjectListDisplayNames(event.getDelegatedTo(), pageBase);

rv.assigneeChange = assigneeBeforeNames + " -> " + assigneeAfterNames;
return rv;
} else if (e instanceof StageCompletionEventType) {
StageCompletionEventType completion = (StageCompletionEventType) e;
Expand All @@ -149,4 +152,16 @@ public static DecisionDto create(CaseEventType e, @Nullable PageBase pageBase) {
return null;
}
}

private static <O extends ObjectType> String getReferencedObjectListDisplayNames(List<ObjectReferenceType> referencedObjects, PageBase pageBase){
if (referencedObjects == null){
return "";
}
List<O> assigneeBeforeObjectsList = WebComponentUtil.loadReferencedObjectList(referencedObjects,
pageBase.getClass().getSimpleName() + ".resolveReferenceName", pageBase);
return assigneeBeforeObjectsList
.stream()
.map(obj -> WebComponentUtil.getDisplayNameOrName(obj.asPrismObject()))
.collect(Collectors.joining(", "));
}
}
Expand Up @@ -102,7 +102,7 @@ public class ChangeExecutor {
private static final String OPERATION_UPDATE_SITUATION_IN_SHADOW = ChangeExecutor.class.getName() + ".updateSituationInShadow";

@Autowired private TaskManager taskManager;
@Autowired private WorkflowManager workflowManager;
@Autowired(required = false) private WorkflowManager workflowManager; // not available e.g. during tests
@Autowired @Qualifier("cacheRepositoryService") private transient RepositoryService cacheRepositoryService;
@Autowired private ProvisioningService provisioning;
@Autowired private PrismContext prismContext;
Expand All @@ -113,6 +113,7 @@ public class ChangeExecutor {
@Autowired private ModelObjectResolver objectResolver;
@Autowired private OperationalDataManager metadataManager;
@Autowired private CredentialsProcessor credentialsProcessor;
@Autowired private ClockworkConflictResolver clockworkConflictResolver;

private PrismObjectDefinition<UserType> userDefinition = null;
private PrismObjectDefinition<ShadowType> shadowDefinition = null;
Expand Down Expand Up @@ -182,12 +183,8 @@ public <O extends ObjectType> boolean executeChanges(LensContext<O> context, Tas
executeDelta(focusDelta, focusContext, context, null, conflictResolution, null, task, subResult);

if (focusDelta.isAdd() && focusDelta.getOid() != null) {
// The watcher can already exist; if the OID was pre-existing in the object.
if (context.getFocusConflictWatcher() == null) {
ConflictWatcher watcher = context
.createAndRegisterFocusConflictWatcher(focusDelta.getOid(), cacheRepositoryService);
watcher.setExpectedVersion(focusDelta.getObjectToAdd().getVersion());
}
clockworkConflictResolver.createConflictWatcherAfterFocusAddition(context, focusDelta.getOid(),
focusDelta.getObjectToAdd().getVersion());
}
subResult.computeStatus();

Expand Down Expand Up @@ -1420,7 +1417,7 @@ private <T extends ObjectType, F extends ObjectType> PrismObject<T> executeDelet
taskManager.deleteTask(oid, result);
} else if (NodeType.class.isAssignableFrom(objectTypeClass)) {
taskManager.deleteNode(oid, result);
} else if (CaseType.class.isAssignableFrom(objectTypeClass)) {
} else if (workflowManager != null && CaseType.class.isAssignableFrom(objectTypeClass)) {
workflowManager.deleteCase(oid, task, result);
} else if (ObjectTypes.isClassManagedByProvisioning(objectTypeClass)) {
ProvisioningOperationOptions provisioningOptions = getProvisioningOptions(context, options,
Expand Down

0 comments on commit b811963

Please sign in to comment.