Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Jan 18, 2022
2 parents 88f4570 + 4db7bd0 commit 6ebcbf4
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ public PrismContext createPrismContext() throws SchemaException, IOException {
context.setParsingMigrator(new MidpointParsingMigrator());
context.setValueMetadataFactory(new MidpointValueMetadataFactory(context));
context.setProvenanceEquivalenceStrategy(MidpointProvenanceEquivalenceStrategy.INSTANCE);
context.registerQueryExpressionFactory(new PrismQueryExpressionSupport());
return context;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.evolveum.midpoint.schema;

import java.util.Map;

import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.prism.ExpressionWrapper;
import com.evolveum.midpoint.prism.query.PrismQueryExpressionFactory;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ScriptExpressionEvaluatorType;
import com.google.common.base.Strings;

public class PrismQueryExpressionSupport implements PrismQueryExpressionFactory {

private static final QName SCRIPT = new QName(ExpressionType.COMPLEX_TYPE.getNamespaceURI(), "script");
private static final QName EXPRESSION = new QName(ExpressionType.COMPLEX_TYPE.getNamespaceURI(), "expression");
@Override
public ExpressionWrapper parseScript(Map<String, String> namespaceContext, String language, String script) {
ExpressionType expressionT = new ExpressionType();
var scriptValue = new ScriptExpressionEvaluatorType();
if (!Strings.isNullOrEmpty(language)) {
scriptValue.setLanguage(language);
}
scriptValue.setCode(script);
expressionT.expressionEvaluator(new JAXBElement<>(SCRIPT, ScriptExpressionEvaluatorType.class, scriptValue));
return new ExpressionWrapper(EXPRESSION, expressionT);
}
}

0 comments on commit 6ebcbf4

Please sign in to comment.