private <AH extends AssignmentHolderType, T extends AssignmentHolderType> void collectMappingsFromTemplate(LensContext<AH> context,
List<FocalMappingSpec> mappings, ObjectTemplateType objectTemplateType, String contextDesc, Task task, OperationResult result)
throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException, PolicyViolationException, SecurityViolationException, ConfigurationException, CommunicationException {
if (objectTemplateType == null) {
return;
}
LOGGER.trace("Collecting mappings from {}", objectTemplateType);
for (ObjectReferenceType includeRef: objectTemplateType.getIncludeRef()) {
PrismObject<ObjectTemplateType> includeObject = includeRef.asReferenceValue().getObject();
if (includeObject == null) {
ObjectTemplateType includeObjectType = modelObjectResolver.resolve(includeRef, ObjectTemplateType.class,
null, "include reference in "+objectTemplateType + " in " + contextDesc, task, result);
includeObject = includeObjectType.asPrismObject();
includeRef.asReferenceValue().setObject(includeObject);
}
LOGGER.trace("Including template {}", includeObject);
ObjectTemplateType includeObjectType = includeObject.asObjectable();
collectMappingsFromTemplate(context, mappings, includeObjectType, "include "+includeObject+" in "+objectTemplateType + " in " + contextDesc, task, result);
}
collectMappings(mappings, objectTemplateType);
}