public List<PendingOperationType> sortPendingOperations(List<PendingOperationType> pendingOperations) { // Copy to mutable list that is not bound to the prism List<PendingOperationType> sortedList = new ArrayList<>(pendingOperations.size()); sortedList.addAll(pendingOperations); sortedList.sort((o1, o2) -> XmlTypeConverter.compare(o1.getRequestTimestamp(), o2.getRequestTimestamp())); return sortedList; }
private boolean isPropagationTriggered(PendingOperationType pendingOperation, Duration operationGroupingInterval, XMLGregorianCalendar now) { XMLGregorianCalendar requestTimestamp = pendingOperation.getRequestTimestamp(); if (requestTimestamp == null) { return false; } return XmlTypeConverter.isAfterInterval(requestTimestamp, operationGroupingInterval, now); }
public PendingOperationAsserter<R> assertRequestTimestamp(XMLGregorianCalendar start, XMLGregorianCalendar end) { TestUtil.assertBetween("Wrong request timestamp in "+desc(), start, end, pendingOperation.getRequestTimestamp()); return this; }
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; }
if (pendingOperation.getRequestTimestamp() == null) {
private PendingOperationType assertPendingOperation( PrismObject<ShadowType> shadow, PendingOperationType pendingOperation, XMLGregorianCalendar requestStart, XMLGregorianCalendar requestEnd, OperationResultStatusType expectedStatus, 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()); OperationResultStatusType status = pendingOperation.getResultStatus(); assertEquals("Wrong status in pending operation in "+shadow, expectedStatus, status); if (expectedStatus != OperationResultStatusType.IN_PROGRESS) { TestUtil.assertBetween("No completion timestamp in pending operation in "+shadow, completionStart, completionEnd, pendingOperation.getCompletionTimestamp()); } return pendingOperation; }
addPropertyDelta(repoDeltas, containerPath, PendingOperationType.F_RESULT_STATUS, resultStatus, shadow.getDefinition()); addPropertyDelta(repoDeltas, containerPath, PendingOperationType.F_ASYNCHRONOUS_OPERATION_REFERENCE, asynchronousOperationReference, shadow.getDefinition()); if (existingPendingOperation.getRequestTimestamp() == null) {
lastActivityTimestamp = XmlTypeConverter.laterTimestamp(lastActivityTimestamp, pendingOperation.getRequestTimestamp()); lastActivityTimestamp = XmlTypeConverter.laterTimestamp(lastActivityTimestamp, pendingOperation.getLastAttemptTimestamp()); lastActivityTimestamp = XmlTypeConverter.laterTimestamp(lastActivityTimestamp, pendingOperation.getCompletionTimestamp());