/** * Used for assignments and similar objects that do not have separate lifecycle. */ public static boolean isAssignmentValid(AssignmentHolderType focus, AssignmentType assignmentType, XMLGregorianCalendar now, ActivationComputer activationComputer, LifecycleStateModelType focusStateModel) { String focusLifecycleState = focus.getLifecycleState(); if (!activationComputer.lifecycleHasActiveAssignments(focusLifecycleState, focusStateModel)) { return false; } return isValid(assignmentType.getLifecycleState(), assignmentType.getActivation(), now, activationComputer, focusStateModel); }
private <F extends FocusType> void applyAssignmentValueMetadataAdd(LensContext<F> context, PrismContainerValue<AssignmentType> assignmentContainerValue, String desc, XMLGregorianCalendar now, Task task, OperationResult result) throws SchemaException { AssignmentType assignmentType = assignmentContainerValue.asContainerable(); MetadataType metadataType = assignmentType.getMetadata(); if (metadataType == null) { metadataType = new MetadataType(); assignmentType.setMetadata(metadataType); } transplantRequestMetadata(context, metadataType); // This applies the effective status only to assignments that are completely new (whole container is added/replaced) // The effectiveStatus of existing assignments is processed in FocusProcessor.processAssignmentActivation() // We cannot process that here. Because this code is not even triggered when there is no delta. So recompute will not work. ActivationType activationType = assignmentType.getActivation(); ActivationStatusType effectiveStatus = activationComputer.getEffectiveStatus(assignmentType.getLifecycleState(), activationType, null); if (activationType == null) { activationType = new ActivationType(); assignmentType.setActivation(activationType); } activationType.setEffectiveStatus(effectiveStatus); applyCreateMetadata(context, metadataType, now, task); if (LOGGER.isTraceEnabled()) { LOGGER.trace("Adding operational data {} to assignment cval ({}):\nMETADATA:\n{}\nACTIVATION:\n{}", metadataType, desc, assignmentContainerValue.debugDump(1), activationType.asPrismContainerValue().debugDump(1)); } }
repo.setLifecycleState(jaxb.getLifecycleState()); repo.setPolicySituation(RUtil.listToSet(jaxb.getPolicySituation()));
ActivationStatusType expectedEffectiveStatus = activationComputer.getEffectiveStatus(assignmentType.getLifecycleState(), currentActivationType, null); if (currentActivationType == null) { PrismContainerDefinition<ActivationType> activationDef = focusContext.getObjectDefinition().findContainerDefinition(SchemaConstants.PATH_ASSIGNMENT_ACTIVATION);