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; }
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; }