@Override public boolean isStatusType(EventStatusType eventStatusType) { boolean allSuccess = true, anySuccess = false, allFailure = true, anyFailure = false, anyInProgress = false; for (ObjectDeltaOperation objectDeltaOperation : getAllExecutedDeltas()) { if (objectDeltaOperation.getExecutionResult() != null) { switch (objectDeltaOperation.getExecutionResult().getStatus()) { case SUCCESS: anySuccess = true; allFailure = false; break; case FATAL_ERROR: allSuccess = false; anyFailure = true; break; case WARNING: anySuccess = true; allFailure = false; break; case HANDLED_ERROR: anySuccess = true; allFailure = false; break; case IN_PROGRESS: allSuccess = false; allFailure = false; anyInProgress = true; break; case NOT_APPLICABLE: break; case PARTIAL_ERROR: allSuccess = false; anyFailure = true; break; case UNKNOWN: allSuccess = false; allFailure = false; break; default: LOGGER.warn("Unknown execution result: " + objectDeltaOperation.getExecutionResult().getStatus()); } } else { allSuccess = false; allFailure = false; anyInProgress = true; } } switch (eventStatusType) { case ALSO_SUCCESS: return anySuccess; case SUCCESS: return allSuccess; case FAILURE: return anyFailure; case ONLY_FAILURE: return allFailure; case IN_PROGRESS: return anyInProgress; default: throw new IllegalStateException("Invalid eventStatusType: " + eventStatusType); } }
public <O extends ObjectType> ObjectDeltaOperation<O> assertHasDelta(String message, int index, ChangeType expectedChangeType, Class<O> expectedClass, OperationResultStatus expextedResult) { ObjectDeltaOperation<O> deltaOp = getExecutionDelta(index, expectedChangeType, expectedClass); assert deltaOp != null : (message==null?"":message+": ")+"Delta for "+expectedClass+" of type "+expectedChangeType+" was not found in audit trail"; if (expextedResult != null) { assertEquals((message==null?"":message+": ")+"Delta for "+expectedClass+" of type "+expectedChangeType+" has unexpected result", deltaOp.getExecutionResult().getStatus(), expextedResult); } return deltaOp; }
OperationResult executionResult = delta.getExecutionResult(); if (executionResult != null) { String message = executionResult.getMessage();
for (ObjectDeltaOperation<? extends ObjectType> executedDelta: executedDeltas) { ObjectDelta<? extends ObjectType> delta = executedDelta.getObjectDelta(); OperationResult deltaResult = executedDelta.getExecutionResult(); DebugUtil.indentDebugDump(sb, 1); sb.append(delta.toString());
@Override public List<ShadowType> getShadowsToActivate(Collection<? extends ModelElementContext> projectionContexts) { List<ShadowType> shadows = new ArrayList<>(); for (ModelElementContext<ShadowType> projectionCtx : projectionContexts) { List<? extends ObjectDeltaOperation> executedShadowDelas = projectionCtx.getExecutedDeltas(); for (ObjectDeltaOperation<ShadowType> shadowDelta : executedShadowDelas) { if (shadowDelta.getExecutionResult().getStatus() == OperationResultStatus.SUCCESS && shadowDelta.getObjectDelta().getChangeType() == ChangeType.ADD) { PrismObject<ShadowType> shadow = shadowDelta.getObjectDelta().getObjectToAdd(); PrismProperty<String> pLifecycleState = shadow.findProperty(ShadowType.F_LIFECYCLE_STATE); if (pLifecycleState != null && !pLifecycleState.isEmpty() && SchemaConstants.LIFECYCLE_PROPOSED .equals(pLifecycleState.getRealValue())) { shadows.add(shadow.asObjectable()); } } } } return shadows; }
for (int i = executedDeltas.size() - 1; i >= 0; i--) { ObjectDeltaOperation<T> currentOdo = executedDeltas.get(i); if (currentOdo.getExecutionResult().isFatalError()) { continue;
public static void toObjectDeltaOperationType(ObjectDeltaOperation delta, ObjectDeltaOperationType odo, DeltaConversionOptions options) throws SchemaException { odo.setObjectDelta(DeltaConvertor.toObjectDeltaType(delta.getObjectDelta(), options)); if (delta.getExecutionResult() != null){ odo.setExecutionResult(delta.getExecutionResult().createOperationResultType()); } if (delta.getObjectName() != null) { odo.setObjectName(new PolyStringType(delta.getObjectName())); } odo.setResourceOid(delta.getResourceOid()); if (delta.getResourceName() != null) { odo.setResourceName(new PolyStringType(delta.getResourceName())); } }
public static LensObjectDeltaOperation fromLensObjectDeltaOperationType(LensObjectDeltaOperationType jaxb, PrismContext prismContext) throws SchemaException { ObjectDeltaOperation odo = DeltaConvertor.createObjectDeltaOperation(jaxb.getObjectDeltaOperation(), prismContext); LensObjectDeltaOperation retval = new LensObjectDeltaOperation(); retval.setObjectDelta(odo.getObjectDelta()); retval.setExecutionResult(odo.getExecutionResult()); retval.setAudited(jaxb.isAudited()); return retval; }
private <O extends ObjectType> boolean isApplicable(ObjectDeltaOperation<? extends ObjectType> lastEventDeltasOperation, PrismObject<O> object, AuditEventRecord lastEvent) { OperationResult executionResult = lastEventDeltasOperation.getExecutionResult(); ObjectDelta<O> objectDelta = (ObjectDelta<O>) lastEventDeltasOperation.getObjectDelta(); if (executionResult != null && executionResult.getStatus() == OperationResultStatus.FATAL_ERROR) { LOGGER.trace("Skipping delta {} in event {} because it is {}", objectDelta, lastEvent.getEventIdentifier(), executionResult.getStatus()); return false; } if (!object.getOid().equals(objectDelta.getOid())) { if (LOGGER.isTraceEnabled()) { LOGGER.trace("Skipping delta {} in event {} because OID does not match ({} vs {})", objectDelta, lastEvent.getEventIdentifier(), object.getOid(), objectDelta.getOid()); } return false; } return true; }
} catch (Exception e) { if (tolerateInconsistencies){ if (delta.getExecutionResult() != null){ delta.getExecutionResult().setMessage("Could not show audit record, bad data in delta: " + delta.getObjectDelta()); } else { OperationResult result = new OperationResult("Create audit event record type");
private <F extends ObjectType> LensObjectDeltaOperation<F> simplifyOperation(ObjectDeltaOperation<F> operation) { LensObjectDeltaOperation<F> rv = new LensObjectDeltaOperation<>(); rv.setObjectDelta(simplifyDelta(operation.getObjectDelta())); rv.setExecutionResult(OperationResult.keepRootOnly(operation.getExecutionResult())); rv.setObjectName(operation.getObjectName()); rv.setResourceName(operation.getResourceName()); rv.setResourceOid(operation.getResourceOid()); return rv; }
public static RObjectDeltaOperation toRepo(RAuditEventRecord record, ObjectDeltaOperation operation, PrismContext prismContext) throws DtoTranslationException { RObjectDeltaOperation auditDelta = new RObjectDeltaOperation(); auditDelta.setRecord(record); try { if (operation.getObjectDelta() != null) { ObjectDelta delta = operation.getObjectDelta(); String xmlDelta = DeltaConvertor.toObjectDeltaTypeXml(delta, DeltaConversionOptions.createSerializeReferenceNames()); byte[] data = RUtil.getByteArrayFromXml(xmlDelta, true); auditDelta.setDelta(data); auditDelta.setDeltaOid(delta.getOid()); auditDelta.setDeltaType(RUtil.getRepoEnumValue(delta.getChangeType(), RChangeType.class)); } if (operation.getExecutionResult() != null) { RUtil.copyResultFromJAXB(SchemaConstantsGenerated.C_OPERATION_RESULT, operation.getExecutionResult().createOperationResultType(), auditDelta, prismContext); } auditDelta.setObjectName(RPolyString.toRepo(operation.getObjectName())); auditDelta.setResourceOid(operation.getResourceOid()); auditDelta.setResourceName(RPolyString.toRepo(operation.getResourceName())); } catch (Exception ex) { throw new DtoTranslationException(ex.getMessage(), ex); } return auditDelta; }
return objectDelta; // nothing found, let us apply our delta if (lastRelated.getExecutionResult().isSuccess() && lastRelated.containsDelta(objectDelta)) { return null; // case 1 - exact match found with SUCCESS result,
Iterator<ObjectDeltaOperation<? extends ObjectType>> i = executedDeltas.iterator(); ObjectDeltaOperation<? extends ObjectType> deltaop1 = i.next(); assertEquals("Unexpected result of first executed deltas", OperationResultStatus.SUCCESS, deltaop1.getExecutionResult().getStatus()); ObjectDeltaOperation<? extends ObjectType> deltaop2 = i.next(); assertEquals("Unexpected result of second executed deltas", OperationResultStatus.FATAL_ERROR, deltaop2.getExecutionResult().getStatus());