public static ExtensionType collectExtensions(AssignmentPathType path, int startAt, ModelService modelService, Task task, OperationResult result)
throws SchemaException, ConfigurationException, ObjectNotFoundException, CommunicationException,
SecurityViolationException, ExpressionEvaluationException {
ExtensionType rv = new ExtensionType(modelService.getPrismContext());
PrismContainerValue<?> pcv = rv.asPrismContainerValue();
PrismObject<? extends ObjectType> lastTarget = null;
for (int i = startAt; i < path.getSegment().size(); i++) {
AssignmentPathSegmentType segment = path.getSegment().get(i);
AssignmentType assignment = getAssignment(segment, lastTarget, modelService, task, result);
if (assignment != null && assignment.getExtension() != null) {
ObjectTypeUtil.mergeExtension(pcv, assignment.getExtension().asPrismContainerValue());
}
PrismObject<? extends ObjectType> target = getAssignmentTarget(segment, modelService, task, result);
if (target != null && target.getExtension() != null) {
ObjectTypeUtil.mergeExtension(pcv, target.getExtensionContainerValue());
}
lastTarget = target;
}
return rv;
}