Skip to content

Commit

Permalink
MID-7708:fix for using function library in script for column of expor…
Browse files Browse the repository at this point in the history
…ted report row
  • Loading branch information
skublik committed Mar 7, 2022
1 parent 74a37b1 commit df7135a
Showing 1 changed file with 4 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,6 @@ public class ReportServiceImpl implements ReportService {
@Autowired @Qualifier("cacheRepositoryService") private RepositoryService repositoryService;
@Autowired private AuditService auditService;
@Autowired private ModelAuditService modelAuditService;
@Autowired private FunctionLibrary logFunctionLibrary;
@Autowired private FunctionLibrary basicFunctionLibrary;
@Autowired private FunctionLibrary midpointFunctionLibrary;
@Autowired private SecurityEnforcer securityEnforcer;
@Autowired private ScriptExpressionFactory scriptExpressionFactory;
@Autowired private ArchetypeManager archetypeManager;
Expand Down Expand Up @@ -106,13 +103,14 @@ public Collection<? extends PrismValue> evaluateScript(PrismObject<ReportType> r
expressionType.setObjectVariableMode(defaultScriptConfiguration == null ? ObjectVariableModeType.OBJECT : defaultScriptConfiguration.getObjectVariableMode());
}
context.setExpressionType(expressionType);
context.setFunctions(createFunctionLibraries());
context.setObjectResolver(objectResolver);

ScriptExpression scriptExpression = scriptExpressionFactory.createScriptExpression(
expressionType, context.getOutputDefinition(), context.getExpressionProfile(), expressionFactory, context.getContextDescription(),
context.getResult());

scriptExpression.setFunctions(createFunctionLibraries(scriptExpression.getFunctions()));

ModelExpressionThreadLocalHolder.pushExpressionEnvironment(new ExpressionEnvironment<>(context.getTask(), context.getResult()));
try {
return scriptExpression.evaluate(context);
Expand All @@ -125,17 +123,15 @@ public Collection<? extends PrismValue> evaluateScript(PrismObject<ReportType> r
}
}

private Collection<FunctionLibrary> createFunctionLibraries() {
private Collection<FunctionLibrary> createFunctionLibraries(Collection<FunctionLibrary> originalFunctions) {
FunctionLibrary midPointLib = new FunctionLibrary();
midPointLib.setVariableName("report");
midPointLib.setNamespace("http://midpoint.evolveum.com/xml/ns/public/function/report-3");
ReportFunctions reportFunctions = new ReportFunctions(prismContext, schemaService, model, taskManager, modelAuditService);
midPointLib.setGenericFunctions(reportFunctions);

Collection<FunctionLibrary> functions = new ArrayList<>();
functions.add(basicFunctionLibrary);
functions.add(logFunctionLibrary);
functions.add(midpointFunctionLibrary);
functions.addAll(originalFunctions);
functions.add(midPointLib);
return functions;
}
Expand Down

0 comments on commit df7135a

Please sign in to comment.