protected <F extends ObjectType> void assertResolvedResourceRefs(ModelContext<F> context) { for (ModelProjectionContext projectionContext: context.getProjectionContexts()) { assertResolvedResourceRefs(projectionContext.getObjectOld(), "objectOld in "+projectionContext); assertResolvedResourceRefs(projectionContext.getObjectNew(), "objectNew in "+projectionContext); assertResolvedResourceRefs(projectionContext.getPrimaryDelta(), "primaryDelta in "+projectionContext); assertResolvedResourceRefs(projectionContext.getSecondaryDelta(), "secondaryDelta in "+projectionContext); } }
private boolean matches(ModelProjectionContext projCtx) throws ObjectNotFoundException, SchemaException { if (shadowOid != null) { if (!shadowOid.equals(projCtx.getOid())) { return false; } } if (dead != null) { if (dead && !projCtx.getResourceShadowDiscriminator().isTombstone()) { return false; } else if (!dead && projCtx.getResourceShadowDiscriminator().isTombstone()) { return false; } } // TODO: more criteria return true; }
private LensContext contextCopyWithDeltasReplaced(ModelContext context, ObjectTreeDeltas changes) throws SchemaException { Validate.notNull(changes, "changes"); LensContext contextCopy = ((LensContext) context).clone(); contextCopy.replacePrimaryFocusDelta(changes.getFocusChange()); Map<ResourceShadowDiscriminator, ObjectDelta<ShadowType>> changeMap = changes.getProjectionChangeMap(); Collection<ModelProjectionContext> projectionContexts = contextCopy.getProjectionContexts(); for (ModelProjectionContext projectionContext : projectionContexts) { ObjectDelta<ShadowType> projectionDelta = changeMap.get(projectionContext.getResourceShadowDiscriminator()); projectionContext.setPrimaryDelta(projectionDelta); } contextCopy.deleteSecondaryDeltas(); return contextCopy; }
assertNotNull("Null model projection context (default)", accContext); assertEquals("Wrong policy decision (default)", SynchronizationPolicyDecision.KEEP, accContext.getSynchronizationPolicyDecision()); ObjectDelta<ShadowType> accountPrimaryDelta = accContext.getPrimaryDelta(); assertNull("Unexpected account primary delta (default)", accountPrimaryDelta); ObjectDelta<ShadowType> accountSecondaryDelta = accContext.getSecondaryDelta(); assertNotNull("No account secondary delta (default)", accountSecondaryDelta); PrismAsserts.assertModifications(accountSecondaryDelta, 1); assertNotNull("Null model projection context (red)", accContext); assertEquals("Wrong policy decision", SynchronizationPolicyDecision.KEEP, accContext.getSynchronizationPolicyDecision()); accountPrimaryDelta = accContext.getPrimaryDelta(); assertNull("Unexpected account primary delta (red)", accountPrimaryDelta); accountSecondaryDelta = accContext.getSecondaryDelta(); assertNotNull("No account secondary delta (red)", accountSecondaryDelta); PrismAsserts.assertModifications(accountSecondaryDelta, 1); assertEquals("Wrong policy decision", SynchronizationPolicyDecision.KEEP, accContext.getSynchronizationPolicyDecision()); accountPrimaryDelta = accContext.getPrimaryDelta(); assertNull("Unexpected account primary delta (blue)", accountPrimaryDelta); accountSecondaryDelta = accContext.getSecondaryDelta(); PrismAsserts.assertModifications(accountSecondaryDelta, 1); PrismAsserts.assertPropertyDelete(accountSecondaryDelta,
assertNotNull("Null model projection context", accContext); ObjectDelta<ShadowType> accountPrimaryDelta = accContext.getPrimaryDelta(); assertNull("Unexpected account primary delta", accountPrimaryDelta); ObjectDelta<ShadowType> accountSecondaryDelta = accContext.getSecondaryDelta(); assertEquals(ChangeType.MODIFY, accountSecondaryDelta.getChangeType());
assertNotNull("Null model projection context", accContext); assertEquals("Wrong policy decision", SynchronizationPolicyDecision.ADD, accContext.getSynchronizationPolicyDecision()); ObjectDelta<ShadowType> accountPrimaryDelta = accContext.getPrimaryDelta(); assertEquals(ChangeType.ADD, accountPrimaryDelta.getChangeType()); PrismObject<ShadowType> accountToAddPrimary = accountPrimaryDelta.getObjectToAdd(); assertEquals(getDummyResourceObject().getOid(), resourceRef.getOid()); ObjectDelta<ShadowType> accountSecondaryDelta = accContext.getSecondaryDelta(); assertEquals(ChangeType.MODIFY, accountSecondaryDelta.getChangeType()); PropertyDelta<String> fullNameDelta = accountSecondaryDelta.findPropertyDelta( PrismObject<ShadowType> accountNew = accContext.getObjectNew(); IntegrationTestTools.assertIcfsNameAttribute(accountNew, "jack"); IntegrationTestTools.assertAttribute(accountNew, dummyResourceCtl.getAttributeFullnameQName(), "Jack Sparrow");
public <O extends ObjectType> ObjectTreeDeltas<O> extractTreeDeltasFromModelContext(ModelContext<O> modelContext) { ObjectTreeDeltas<O> objectTreeDeltas = new ObjectTreeDeltas<>(modelContext.getPrismContext()); if (modelContext.getFocusContext() != null && modelContext.getFocusContext().getPrimaryDelta() != null) { objectTreeDeltas.setFocusChange(modelContext.getFocusContext().getPrimaryDelta().clone()); } for (ModelProjectionContext projectionContext : modelContext.getProjectionContexts()) { if (projectionContext.getPrimaryDelta() != null) { objectTreeDeltas.addProjectionChange(projectionContext.getResourceShadowDiscriminator(), projectionContext.getPrimaryDelta()); } } return objectTreeDeltas; }
PrismObject<ShadowType> projObj = projectionContext.getObjectNew(); if (projObj == null) { projObj = projectionContext.getObjectOld();
if (projectionContext.getPrimaryDelta() != null && !projectionContext.getPrimaryDelta().isEmpty()) { projectionContext.addPrimaryDelta(entry.getValue()); } else { projectionContext.setPrimaryDelta(entry.getValue());
public ProjectionContextAsserter<RA> assertNoPrimaryDelta() { assertNull("Unexpected primary delta in "+desc(), projectionContext.getPrimaryDelta()); return this; }
protected void fillDeltas(ModelContext<UserType> modelContext, List<ObjectDelta<? extends ObjectType>> primaryDeltas, List<ObjectDelta<? extends ObjectType>> secondaryDeltas) throws SchemaException { if (modelContext != null) { if (modelContext.getFocusContext() != null) { addIgnoreNull(primaryDeltas, modelContext.getFocusContext().getPrimaryDelta()); addIgnoreNull(secondaryDeltas, modelContext.getFocusContext().getSecondaryDelta()); } for (ModelProjectionContext projCtx : modelContext.getProjectionContexts()) { addIgnoreNull(primaryDeltas, projCtx.getPrimaryDelta()); addIgnoreNull(secondaryDeltas, projCtx.getExecutableDelta()); } } display("primary deltas", primaryDeltas); display("secondary deltas", secondaryDeltas); }
assertNotNull("Null model projection context", accContext); assertEquals("Wrong policy decision", SynchronizationPolicyDecision.DELETE, accContext.getSynchronizationPolicyDecision()); ObjectDelta<ShadowType> accountPrimaryDelta = accContext.getPrimaryDelta(); assertEquals(ChangeType.DELETE, accountPrimaryDelta.getChangeType());
private List<ApprovalRequest<AssociationAdditionType>> getApprovalRequests(ModelContext<?> modelContext, PrimaryChangeProcessorConfigurationType wfConfigurationType, ObjectTreeDeltas changes, Task taskFromModel, OperationResult result) { List<ApprovalRequest<AssociationAdditionType>> requests = new ArrayList<>(); PcpAspectConfigurationType config = primaryChangeAspectHelper.getPcpAspectConfigurationType(wfConfigurationType, this); Set<Map.Entry<ResourceShadowDiscriminator, ObjectDelta<ShadowType>>> entries = changes.getProjectionChangeMapEntries(); for (Map.Entry<ResourceShadowDiscriminator, ObjectDelta<ShadowType>> entry : entries) { ObjectDelta<ShadowType> delta = entry.getValue(); if (delta.isAdd()) { requests.addAll(getApprovalRequestsFromShadowAdd(config, entry.getValue(), entry.getKey(), modelContext, taskFromModel, result)); } else if (delta.isModify()) { ModelProjectionContext projectionContext = modelContext.findProjectionContext(entry.getKey()); requests.addAll(getApprovalRequestsFromShadowModify( config, projectionContext.getObjectOld(), entry.getValue(), entry.getKey(), modelContext, taskFromModel, result)); } else { // no-op } } return requests; }
public ShadowAsserter<ProjectionContextAsserter<RA>> objectNew() { ShadowAsserter<ProjectionContextAsserter<RA>> shadowAsserter = new ShadowAsserter<ProjectionContextAsserter<RA>>( projectionContext.getObjectNew(), this, "object new in "+desc()); copySetupTo(shadowAsserter); return shadowAsserter; }
public ProjectionContextAsserter<RA> assertNoSecondaryDelta() { assertNull("Unexpected secondary delta in "+desc(), projectionContext.getSecondaryDelta()); return this; }
private ObjectTreeDeltas associationAdditionToDelta(ModelContext<?> modelContext, AssociationAdditionType addition, String objectOid) throws SchemaException { ObjectTreeDeltas changes = new ObjectTreeDeltas(prismContext); ResourceShadowDiscriminator shadowDiscriminator = ResourceShadowDiscriminator.fromResourceShadowDiscriminatorType(addition.getResourceShadowDiscriminator()); String projectionOid = modelContext.findProjectionContext(shadowDiscriminator).getOid(); ObjectDelta<ShadowType> objectDelta = prismContext.deltaFor(ShadowType.class) .item(ShadowType.F_ASSOCIATION).add(addition.getAssociation().clone()) .asObjectDelta(projectionOid); changes.addProjectionChange(shadowDiscriminator, objectDelta); return changes; }
assertNotNull("Null model projection context (default)", accContext); assertEquals("Wrong policy decision (default)", SynchronizationPolicyDecision.ADD, accContext.getSynchronizationPolicyDecision()); ObjectDelta<ShadowType> accountPrimaryDelta = accContext.getPrimaryDelta(); assertNotNull("No account primary delta (default)", accountPrimaryDelta); PrismAsserts.assertIsAdd(accountPrimaryDelta); ObjectDelta<ShadowType> accountSecondaryDelta = accContext.getSecondaryDelta(); assertNotNull("No account secondary delta (default)", accountSecondaryDelta); PrismAsserts.assertModifications(accountSecondaryDelta, 9); assertEquals("Wrong policy decision", SynchronizationPolicyDecision.ADD, accContext.getSynchronizationPolicyDecision()); accountPrimaryDelta = accContext.getPrimaryDelta(); assertNotNull("No account primary delta (default)", accountPrimaryDelta); PrismAsserts.assertIsAdd(accountPrimaryDelta); accountSecondaryDelta = accContext.getSecondaryDelta(); assertNotNull("No account secondary delta (red)", accountSecondaryDelta); PrismAsserts.assertModifications(accountSecondaryDelta, 9); assertEquals("Wrong policy decision", SynchronizationPolicyDecision.ADD, accContext.getSynchronizationPolicyDecision()); accountPrimaryDelta = accContext.getPrimaryDelta(); assertNotNull("No account primary delta (default)", accountPrimaryDelta); PrismAsserts.assertIsAdd(accountPrimaryDelta); accountSecondaryDelta = accContext.getSecondaryDelta(); assertNotNull("No account secondary delta (default)", accountSecondaryDelta); PrismAsserts.assertModifications(accountSecondaryDelta, 10);
assertNotNull("Null model projection context", accContext); ObjectDelta<ShadowType> accountPrimaryDelta = accContext.getPrimaryDelta(); assertNull("Unexpected account primary delta", accountPrimaryDelta); ObjectDelta<ShadowType> accountSecondaryDelta = accContext.getSecondaryDelta(); assertEquals(ChangeType.MODIFY, accountSecondaryDelta.getChangeType());
public ObjectDeltaAsserter<ShadowType, ProjectionContextAsserter<RA>> primaryDelta() { ObjectDeltaAsserter<ShadowType, ProjectionContextAsserter<RA>> deltaAsserter = new ObjectDeltaAsserter<>( projectionContext.getPrimaryDelta(), this, "primary delta in "+desc()); copySetupTo(deltaAsserter); return deltaAsserter; }
public ShadowAsserter<ProjectionContextAsserter<RA>> objectOld() { ShadowAsserter<ProjectionContextAsserter<RA>> shadowAsserter = new ShadowAsserter<ProjectionContextAsserter<RA>>( projectionContext.getObjectOld(), this, "object old in "+desc()); copySetupTo(shadowAsserter); return shadowAsserter; }