private boolean needsRetry(PendingOperationType pendingOperation) { return PendingOperationExecutionStatusType.EXECUTING.equals(pendingOperation.getExecutionStatus()) && pendingOperation.getAttemptNumber() != null; }
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()); }
if (!executionStatus.equals(operation.getExecutionStatus())) { return false;
ItemPath containerPath = pendingOperation.asPrismContainerValue().getPath(); if (!opState.getExecutionStatus().equals(pendingOperation.getExecutionStatus())) { PropertyDelta<PendingOperationExecutionStatusType> executionStatusDelta = createPendingOperationDelta(containerDefinition, containerPath, PendingOperationType.F_EXECUTION_STATUS, opState.getExecutionStatus()); shadowChanges.add(executionStatusDelta); if (opState.getExecutionStatus().equals(PendingOperationExecutionStatusType.EXECUTING) && pendingOperation.getOperationStartTimestamp() == null) { PropertyDelta<XMLGregorianCalendar> timestampDelta = createPendingOperationDelta(containerDefinition, containerPath, PendingOperationType.F_OPERATION_START_TIMESTAMP, now); if (opState.getExecutionStatus().equals(PendingOperationExecutionStatusType.COMPLETED) && pendingOperation.getCompletionTimestamp() == null) { PropertyDelta<XMLGregorianCalendar> completionTimestampDelta = createPendingOperationDelta(containerDefinition, containerPath, PendingOperationType.F_COMPLETION_TIMESTAMP, now);
List<PendingOperationType> pendingOperations = shadow.asObjectable().getPendingOperation(); for (PendingOperationType pendingOperation: pendingOperations) { if (expectedExecutionStatus != null && !expectedExecutionStatus.equals(pendingOperation.getExecutionStatus())) { continue;
private PendingOperationType createPendingOperation( ObjectDelta<ShadowType> requestDelta, ProvisioningOperationState<? extends AsynchronousOperationResult> opState, String asyncOperationReference) throws SchemaException { ObjectDeltaType deltaType = DeltaConvertor.toObjectDeltaType(requestDelta); PendingOperationType pendingOperation = new PendingOperationType(); pendingOperation.setType(opState.getOperationType()); pendingOperation.setDelta(deltaType); XMLGregorianCalendar now = clock.currentTimeXMLGregorianCalendar(); pendingOperation.setRequestTimestamp(now); if (PendingOperationExecutionStatusType.EXECUTING.equals(opState.getExecutionStatus())) { pendingOperation.setOperationStartTimestamp(now); } pendingOperation.setExecutionStatus(opState.getExecutionStatus()); pendingOperation.setResultStatus(opState.getResultStatusType()); if (opState.getAttemptNumber() != null) { pendingOperation.setAttemptNumber(opState.getAttemptNumber()); pendingOperation.setLastAttemptTimestamp(now); } if (asyncOperationReference != null) { pendingOperation.setAsynchronousOperationReference(asyncOperationReference); } else { pendingOperation.setAsynchronousOperationReference(opState.getAsynchronousOperationReference()); } return pendingOperation; }
if (PendingOperationExecutionStatusType.COMPLETED.equals(executionStatus) && ProvisioningUtil.isOverPeriod(now, gracePeriod, pendingOperation)) {