diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionVariables.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionVariables.java index e1fd4ab14d0..dd1714a7449 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionVariables.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionVariables.java @@ -15,6 +15,7 @@ */ package com.evolveum.midpoint.model.common.expression; +import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.schema.util.SchemaDebugUtil; import com.evolveum.midpoint.util.DOMUtil; import com.evolveum.midpoint.util.DebugDumpable; @@ -24,6 +25,8 @@ import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; + import org.apache.commons.lang.StringUtils; import org.w3c.dom.Element; @@ -158,6 +161,21 @@ public T get(QName name, Class type) throws SchemaException { throw new SchemaException("Expected type "+type.getSimpleName()+" in variable "+name+", but found type "+object.getClass()); } + public PrismObject getObjectNew(QName name) throws SchemaException { + Object object = get(name); + if (object == null) { + return null; + } + if (object instanceof PrismObject) { + return (PrismObject) object; + } + if (object instanceof ObjectDeltaObject) { + ObjectDeltaObject odo = (ObjectDeltaObject)object; + return odo.getNewObject(); + } + throw new SchemaException("Expected object in variable "+name+", but found type "+object.getClass()); + } + public Set> entrySet() { return variables.entrySet(); } diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluator.java index 9ae21ed745c..7281e0a6933 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluator.java @@ -186,11 +186,11 @@ private PrismObject getObject(ExpressionEvaluationCont if (variables == null) { return null; } - PrismObject object = variables.get(ExpressionConstants.VAR_PROJECTION, PrismObject.class); + PrismObject object = variables.getObjectNew(ExpressionConstants.VAR_PROJECTION); if (object != null) { return object; } - object = variables.get(ExpressionConstants.VAR_FOCUS, PrismObject.class); + object = variables.getObjectNew(ExpressionConstants.VAR_FOCUS); return object; }