ContainerDelta<PendingOperationType> pendingOperationDelta =containerDefinition.createEmptyDelta(ShadowType.F_PENDING_OPERATION); PendingOperationType pendingOperation = createPendingOperation(requestDelta, opState, null); pendingOperationDelta.addValuesToAdd(pendingOperation.asPrismContainerValue());
private void removeTrigger(PrismObject<ObjectType> object, PrismContainerValue<TriggerType> triggerCVal, Task task, PrismContainerDefinition<TriggerType> triggerContainerDef) { ContainerDelta<TriggerType> triggerDelta = triggerContainerDef.createEmptyDelta(F_TRIGGER); triggerDelta.addValuesToDelete(triggerCVal.clone()); Collection<? extends ItemDelta> modifications = MiscSchemaUtil.createCollection(triggerDelta); // This is detached result. It will not take part of the task result. We do not really care. OperationResult result = new OperationResult(TriggerScannerTaskHandler.class.getName()+".removeTrigger"); try { repositoryService.modifyObject(object.getCompileTimeClass(), object.getOid(), modifications, result); result.computeStatus(); task.recordObjectActionExecuted(object, ChangeType.MODIFY, null); } catch (ObjectNotFoundException e) { // Object is gone. Ergo there are no triggers left. Ergo the trigger was removed. // Ergo this is not really an error. task.recordObjectActionExecuted(object, ChangeType.MODIFY, e); LOGGER.trace("Unable to remove trigger from {}: {} (but this is probably OK)", object, e.getMessage(), e); } catch (SchemaException | ObjectAlreadyExistsException e) { task.recordObjectActionExecuted(object, ChangeType.MODIFY, e); LOGGER.error("Unable to remove trigger from {}: {}", object, e.getMessage(), e); } catch (Throwable t) { task.recordObjectActionExecuted(object, ChangeType.MODIFY, t); throw t; } finally { task.markObjectActionExecutedBoundary(); // maybe OK (absolute correctness is not quite important here) } }
PrismObjectDefinition<AH> objectDefinition = focusContext.getObjectDefinition(); PrismContainerDefinition<TriggerType> triggerContDef = objectDefinition.findContainerDefinition(ObjectType.F_TRIGGER); ContainerDelta<TriggerType> triggerDelta = triggerContDef.createEmptyDelta(ObjectType.F_TRIGGER); PrismContainerValue<TriggerType> triggerCVal = triggerContDef.createValue(); triggerDelta.addValueToAdd(triggerCVal);
if (currentActivationType == null) { PrismContainerDefinition<ActivationType> activationDef = focusContext.getObjectDefinition().findContainerDefinition(SchemaConstants.PATH_ASSIGNMENT_ACTIVATION); ContainerDelta<ActivationType> activationDelta = activationDef.createEmptyDelta( ItemPath.create(FocusType.F_ASSIGNMENT, assignmentType.getId(), AssignmentType.F_ACTIVATION)); ActivationType newActivationType = new ActivationType();
ContainerDelta<TriggerType> triggerDelta = triggerContDef.createEmptyDelta(ObjectType.F_TRIGGER); PrismContainerValue<TriggerType> triggerCVal = triggerContDef.createValue(); triggerDelta.addValueToAdd(triggerCVal);