Skip to content

Commit

Permalink
Merge branch 'feature/query-expressions'
Browse files Browse the repository at this point in the history
  • Loading branch information
tonydamage committed Jan 18, 2022
2 parents 061e5d4 + ef22821 commit 4db7bd0
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 4db7bd0

Please sign in to comment.