private boolean isUnfinished(PendingOperationType operation) { return operation.getExecutionStatus() != PendingOperationExecutionStatusType.COMPLETED; }
public static <A extends AsynchronousOperationResult> ProvisioningOperationState<A> fromPendingOperations( PrismObject<ShadowType> repoShadow, List<PendingOperationType> pendingOperations) { ProvisioningOperationState<A> opState = new ProvisioningOperationState<>(); if (pendingOperations == null || pendingOperations.isEmpty()) { throw new IllegalArgumentException("Empty list of pending operations, cannot create ProvisioningOperationState"); } opState.pendingOperations = pendingOperations; // TODO: check that they have the same status opState.executionStatus = pendingOperations.get(0).getExecutionStatus(); // TODO: better algorithm opState.attemptNumber = pendingOperations.get(0).getAttemptNumber(); opState.repoShadow = repoShadow; return opState; }
private boolean needsRetry(PendingOperationType pendingOperation) { return PendingOperationExecutionStatusType.EXECUTING.equals(pendingOperation.getExecutionStatus()) && pendingOperation.getAttemptNumber() != null; }
public PendingOperationAsserter<R> assertExecutionStatus(PendingOperationExecutionStatusType expected) { assertEquals("Wrong execution status in "+desc(), expected, pendingOperation.getExecutionStatus()); return this; }
private boolean needsRefresh(PendingOperationType pendingOperation) { PendingOperationExecutionStatusType executionStatus = pendingOperation.getExecutionStatus(); if (executionStatus == null) { // LEGACY: 3.7 and earlier return OperationResultStatusType.IN_PROGRESS.equals(pendingOperation.getResultStatus()); } else { return PendingOperationExecutionStatusType.EXECUTING.equals(executionStatus); } }
private static boolean isPendingAddOperation(PendingOperationType pendingOperation) { return ChangeTypeType.ADD.equals(pendingOperation.getDelta().getChangeType()) && !PendingOperationExecutionStatusType.COMPLETED.equals(pendingOperation.getExecutionStatus()); }
private boolean hasPendingAddOperation(PrismObject<ShadowType> objectCurrent) { List<PendingOperationType> pendingOperations = objectCurrent.asObjectable().getPendingOperation(); for (PendingOperationType pendingOperation: pendingOperations) { if (pendingOperation.getExecutionStatus() != PendingOperationExecutionStatusType.EXECUTING) { continue; } ObjectDeltaType delta = pendingOperation.getDelta(); if (delta == null) { continue; } if (delta.getChangeType() != ChangeTypeType.ADD) { continue; } return true; } return false; }
if (!executionStatus.equals(operation.getExecutionStatus())) { return false;
protected PendingOperationType assertPendingOperation( PrismObject<ShadowType> shadow, PendingOperationType pendingOperation, XMLGregorianCalendar requestStart, XMLGregorianCalendar requestEnd, PendingOperationExecutionStatusType expectedExecutionStatus, OperationResultStatusType expectedResultStatus, XMLGregorianCalendar completionStart, XMLGregorianCalendar completionEnd) { assertNotNull("No operation ", pendingOperation); ObjectDeltaType deltaType = pendingOperation.getDelta(); assertNotNull("No delta in pending operation in "+shadow, deltaType); // TODO: check content of pending operations in the shadow TestUtil.assertBetween("No request timestamp in pending operation in "+shadow, requestStart, requestEnd, pendingOperation.getRequestTimestamp()); PendingOperationExecutionStatusType executiontStatus = pendingOperation.getExecutionStatus(); assertEquals("Wrong execution status in pending operation in "+shadow, expectedExecutionStatus, executiontStatus); OperationResultStatusType resultStatus = pendingOperation.getResultStatus(); assertEquals("Wrong result status in pending operation in "+shadow, expectedResultStatus, resultStatus); // TODO: assert other timestamps if (expectedExecutionStatus == PendingOperationExecutionStatusType.COMPLETED) { TestUtil.assertBetween("No completion timestamp in pending operation in "+shadow, completionStart, completionEnd, pendingOperation.getCompletionTimestamp()); } return pendingOperation; }
ItemPath containerPath = pendingOperation.asPrismContainerValue().getPath(); if (!opState.getExecutionStatus().equals(pendingOperation.getExecutionStatus())) { PropertyDelta<PendingOperationExecutionStatusType> executionStatusDelta = createPendingOperationDelta(containerDefinition, containerPath, PendingOperationType.F_EXECUTION_STATUS, opState.getExecutionStatus());
List<PendingOperationType> pendingOperations = shadow.asObjectable().getPendingOperation(); for (PendingOperationType pendingOperation: pendingOperations) { if (expectedExecutionStatus != null && !expectedExecutionStatus.equals(pendingOperation.getExecutionStatus())) { continue;
ObjectDelta<ShadowType> shadowDelta = repoShadow.createModifyDelta(); for (PendingOperationType pendingOperation: pendingOperations) { if (pendingOperation.getExecutionStatus() == PendingOperationExecutionStatusType.COMPLETED) { continue;
boolean triggered = false; for (PendingOperationType pendingOperation: shadow.asObjectable().getPendingOperation()) { PendingOperationExecutionStatusType executionStatus = pendingOperation.getExecutionStatus(); if (executionStatus == PendingOperationExecutionStatusType.EXECUTION_PENDING) { pendingExecutionOperations.add(pendingOperation);
for (PendingOperationType pendingOperation: sortedOperations) { OperationResultStatusType resultStatus = pendingOperation.getResultStatus(); PendingOperationExecutionStatusType executionStatus = pendingOperation.getExecutionStatus(); if (OperationResultStatusType.NOT_APPLICABLE.equals(resultStatus)) {