public static ObjectDeltaType toObjectDeltaType(ObjectDelta<? extends ObjectType> objectDelta) throws SchemaException { return toObjectDeltaType(objectDelta, null); }
public ObjectDeltaWavesType toObjectDeltaWavesType() throws SchemaException { ObjectDeltaWavesType objectDeltaWavesType = new ObjectDeltaWavesType(); for (int i = 0; i < waves.size(); i++) { ObjectDelta wave = waves.get(i); if (wave != null) { ObjectDeltaWaveType objectDeltaWaveType = new ObjectDeltaWaveType(); objectDeltaWaveType.setNumber(i); objectDeltaWaveType.setDelta(DeltaConvertor.toObjectDeltaType(wave)); objectDeltaWavesType.getWave().add(objectDeltaWaveType); } } return objectDeltaWavesType; }
@Override public ObjectDeltaType getResourceDelta(ModelContext context, String resourceOid) throws SchemaException { List<ObjectDelta<ShadowType>> deltas = new ArrayList<>(); for (Object modelProjectionContextObject : context.getProjectionContexts()) { LensProjectionContext lensProjectionContext = (LensProjectionContext) modelProjectionContextObject; if (lensProjectionContext.getResourceShadowDiscriminator() != null && resourceOid.equals(lensProjectionContext.getResourceShadowDiscriminator().getResourceOid())) { deltas.add(lensProjectionContext.getDelta()); // union of primary and secondary deltas } } ObjectDelta<ShadowType> sum = ObjectDeltaCollectionsUtil.summarize(deltas); return DeltaConvertor.toObjectDeltaType(sum); }
public ObjectTreeDeltasType toObjectTreeDeltasType() throws SchemaException { ObjectTreeDeltasType jaxb = new ObjectTreeDeltasType(); if (getFocusChange() != null) { jaxb.setFocusPrimaryDelta(DeltaConvertor.toObjectDeltaType(getFocusChange())); } Set<Map.Entry<ResourceShadowDiscriminator, ObjectDelta<ShadowType>>> entries = (Set<Map.Entry<ResourceShadowDiscriminator, ObjectDelta<ShadowType>>>) getProjectionChangeMapEntries(); for (Map.Entry<ResourceShadowDiscriminator, ObjectDelta<ShadowType>> entry : entries) { ProjectionObjectDeltaType projChange = new ProjectionObjectDeltaType(); projChange.setResourceShadowDiscriminator(entry.getKey().toResourceShadowDiscriminatorType()); projChange.setPrimaryDelta(DeltaConvertor.toObjectDeltaType(entry.getValue())); jaxb.getProjectionPrimaryDelta().add(projChange); } return jaxb; }
public static String toObjectDeltaTypeXml(ObjectDelta<? extends ObjectType> delta, DeltaConversionOptions options) throws SchemaException, JAXBException { Validate.notNull(delta.getPrismContext(), "ObjectDelta without prismContext cannot be converted to XML"); ObjectDeltaType objectDeltaType = toObjectDeltaType(delta, options); SerializationOptions serializationOptions = new SerializationOptions(); serializationOptions.setSerializeReferenceNames(DeltaConversionOptions.isSerializeReferenceNames(options)); return delta.getPrismContext().xmlSerializer().options(serializationOptions).serializeRealValue(objectDeltaType, SchemaConstants.T_OBJECT_DELTA); }
@Test(enabled = false) public void testTaskExtensionDeleteDelta() throws Exception { System.out.println("===[ testTaskExtensionDeleteDelta ]===="); // GIVEN PrismObject oldTask = PrismTestUtil.parseObject( new File(TEST_DIR, "task-old.xml")); PrismObject newTask = PrismTestUtil.parseObject( new File(TEST_DIR, "task-new.xml")); ObjectDelta<TaskType> delta = oldTask.diff(newTask, EquivalenceStrategy.LITERAL_IGNORE_METADATA); System.out.println("Delta:"); System.out.println(delta.debugDump()); final QName CUSTOM_OBJECT = new QName("http://delta.example.com", "object"); PrismContext context = getPrismContext(); // WHEN ObjectDeltaType xmlDelta = toObjectDeltaType(delta); // THEN Map<String, Object> properties = new HashMap<>(); String result = PrismTestUtil.serializeJaxbElementToString(new JAXBElement<>(CUSTOM_OBJECT, Object.class, xmlDelta)); assertNotNull(result); }
private void roundTrip(ObjectDelta delta) throws Exception { ObjectDeltaType deltaType = DeltaConvertor.toObjectDeltaType(delta); System.out.println("Serialized to bean"); System.out.println(deltaType); String xml = getPrismContext().xmlSerializer().serializeRealValue(deltaType, new QName("aDelta")); System.out.println("Serialized to XML"); System.out.println(xml); ObjectDeltaType deltaTypeParsed = getPrismContext().parserFor(xml).parseRealValue(); System.out.println("Parsed from XML to bean"); System.out.println(deltaTypeParsed); ObjectDelta deltaParsed = DeltaConvertor.createObjectDelta(deltaTypeParsed, getPrismContext()); System.out.println("Parsed from XML to bean to delta"); System.out.println(deltaParsed); assertTrue("Deltas (native) do not match", delta.equivalent(deltaParsed)); // note: comparing beans is problematic because e.g. item paths are not equal ({common-3}name vs {c=common-3}c:name) } }
@Override protected String createTicketModify(ObjectClassComplexTypeDefinition objectClass, PrismObject<ShadowType> shadow, Collection<? extends ResourceAttribute<?>> identifiers, String resourceOid, Collection<Operation> changes, OperationResult result) throws ObjectNotFoundException, CommunicationException, GenericFrameworkException, SchemaException, ObjectAlreadyExistsException, ConfigurationException { LOGGER.debug("Creating case to modify account {}:\n{}", identifiers, DebugUtil.debugDump(changes, 1)); if (InternalsConfig.isSanityChecks()) { if (MiscUtil.hasDuplicates(changes)) { throw new SchemaException("Duplicated changes: "+changes); } } Collection<ItemDelta> changeDeltas = changes.stream() .filter(change -> change != null) .map(change -> ((PropertyModificationOperation)change).getPropertyDelta()) .collect(Collectors.toList()); ObjectDelta<? extends ShadowType> objectDelta = getPrismContext().deltaFactory().object() .createModifyDelta("", changeDeltas, ShadowType.class); ObjectDeltaType objectDeltaType = DeltaConvertor.toObjectDeltaType(objectDelta); objectDeltaType.setOid(shadow.getOid()); String shadowName = shadow.getName().toString(); String description = "Please modify resource account: "+shadowName; PrismObject<CaseType> acase = addCase(description, resourceOid, shadow.getOid(), objectDeltaType, result); return acase.getOid(); }
@SuppressWarnings({ "unchecked", "raw" }) ObjectDelta<? extends ObjectType> additionalDeltaCasted = ((ObjectDelta<? extends ObjectType>) additionalDelta); ObjectDeltaType objectDeltaType = DeltaConvertor.toObjectDeltaType(additionalDeltaCasted); String xmlDelta = prismContext.xmlSerializer() .serializeRealValue(objectDeltaType, SchemaConstants.T_OBJECT_DELTA);
@Override protected String createTicketAdd(PrismObject<? extends ShadowType> object, Collection<Operation> additionalOperations, OperationResult result) throws CommunicationException, GenericFrameworkException, SchemaException, ObjectAlreadyExistsException, ConfigurationException { LOGGER.debug("Creating case to add account\n{}", object.debugDump(1)); ObjectDelta<? extends ShadowType> objectDelta = DeltaFactory.Object.createAddDelta(object); ObjectDeltaType objectDeltaType = DeltaConvertor.toObjectDeltaType(objectDelta); String shadowName; if (object.getName() != null) { shadowName = object.getName().toString(); } else { shadowName = getShadowIdentifier(ShadowUtil.getPrimaryIdentifiers(object)); } String description = "Please create resource account: "+shadowName; PrismObject<CaseType> acase = addCase(description, ShadowUtil.getResourceOid(object.asObjectable()), shadowName, objectDeltaType, result); return acase.getOid(); }
void storeIntoLensElementContextType(LensElementContextType lensElementContextType, boolean reduced) throws SchemaException { if (objectOld != null) { if (reduced) { lensElementContextType.setObjectOldRef(ObjectTypeUtil.createObjectRef(objectOld, getPrismContext())); } else { lensElementContextType.setObjectOld(objectOld.asObjectable()); } } if (objectNew != null) { if (reduced) { lensElementContextType.setObjectNewRef(ObjectTypeUtil.createObjectRef(objectNew, getPrismContext())); } else { lensElementContextType.setObjectNew(objectNew.asObjectable()); } } lensElementContextType.setPrimaryDelta(primaryDelta != null ? DeltaConvertor.toObjectDeltaType(primaryDelta) : null); for (LensObjectDeltaOperation<?> executedDelta : executedDeltas) { lensElementContextType.getExecutedDeltas().add(LensContext.simplifyExecutedDelta(executedDelta).toLensObjectDeltaOperationType()); } lensElementContextType.setObjectTypeClass(objectTypeClass != null ? objectTypeClass.getName() : null); lensElementContextType.setOid(oid); lensElementContextType.setIteration(iteration); lensElementContextType.setIterationToken(iterationToken); lensElementContextType.setSynchronizationIntent(synchronizationIntent != null ? synchronizationIntent.toSynchronizationIntentType() : null); }
for (ObjectDelta<?> delta : deltas) { deltasBeans.add(DeltaConvertor.toObjectDeltaType((ObjectDelta<? extends com.evolveum.prism.xml.ns._public.types_3.ObjectType>) delta));
void addToPrismContainer(PrismContainer<LensProjectionContextType> lensProjectionContextTypeContainer, boolean reduced) throws SchemaException { LensProjectionContextType lensProjectionContextType = lensProjectionContextTypeContainer.createNewValue().asContainerable(); super.storeIntoLensElementContextType(lensProjectionContextType, reduced); lensProjectionContextType.setSyncDelta(syncDelta != null ? DeltaConvertor.toObjectDeltaType(syncDelta) : null); lensProjectionContextType.setSecondaryDelta(secondaryDelta != null ? DeltaConvertor.toObjectDeltaType(secondaryDelta) : null); lensProjectionContextType.setWave(wave); lensProjectionContextType.setResourceShadowDiscriminator(resourceShadowDiscriminator != null ? resourceShadowDiscriminator.toResourceShadowDiscriminatorType() : null); lensProjectionContextType.setFullShadow(fullShadow); lensProjectionContextType.setIsAssigned(isAssigned); lensProjectionContextType.setIsAssignedOld(isAssignedOld); lensProjectionContextType.setIsActive(isActive); lensProjectionContextType.setIsLegal(isLegal); lensProjectionContextType.setIsLegalOld(isLegalOld); lensProjectionContextType.setIsExists(isExists); lensProjectionContextType.setSynchronizationPolicyDecision(synchronizationPolicyDecision != null ? synchronizationPolicyDecision.toSynchronizationPolicyDecisionType() : null); lensProjectionContextType.setDoReconciliation(doReconciliation); lensProjectionContextType.setSynchronizationSituationDetected(synchronizationSituationDetected); lensProjectionContextType.setSynchronizationSituationResolved(synchronizationSituationResolved); if (!reduced) { lensProjectionContextType.setAccountPasswordPolicy(accountPasswordPolicy); } lensProjectionContextType.setSyncAbsoluteTrigger(syncAbsoluteTrigger); }
ObjectDeltaType objectDeltaType = toObjectDeltaType(objectDelta);
private <A extends AsynchronousOperationResult> void recordRequestedPendingOperationDelta(ProvisioningContext ctx, PrismObject<ShadowType> shadow, ObjectDelta<ShadowType> pendingDelta, ProvisioningOperationState<A> opState, String readVersion, OperationResult parentResult) throws SchemaException, ObjectNotFoundException, PreconditionViolationException { ObjectDeltaType pendingDeltaType = DeltaConvertor.toObjectDeltaType(pendingDelta);
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())); } }
rv.setCurrentToProvided(DeltaConvertor.toObjectDeltaType(DiffUtil.diff(current, provided))); rv.setProvidedToCurrent(DeltaConvertor.toObjectDeltaType(DiffUtil.diff(provided, current)));
ObjectDeltaType objectDeltaType = toObjectDeltaType(objectDelta);
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; }