[midPoint] Error with inbound mapping in latest build.
Ivan Noris
ivan.noris at evolveum.com
Thu Jun 19 23:20:13 CEST 2014
Hi Deepak,
this is strange, by looking at:
> I fiddled around and changed it to this :
>
> <ref>ri:orgdesc</ref>
> <inbound>
> <expression>
> <script>
> <code>
> return input?.split("/")?.last()
> </code>
> </script>
> </expression>
> <target>
>
> <path>$user/extension/apos:aposUnitAttributes</path>
> </target>
> </inbound>
it should never fail on NPE because of the "?." operators...
> And it fails. The error is :
>
> Caused by:
> com.evolveum.midpoint.util.exception.ExpressionEvaluationException:
> java.lang.NullPointerException: Cannot invoke method last() on null
> object expression in mapping in inbound expression for
> {http://midpoint.evolveum.com/xml/ns/public/resource/instance-3}orgdesc
> in resource:036f0100-2fe8-49e1-a8fd-5548374f8703(APOS CSV Feeder
> Resource Definition)
> at
> com.evolveum.midpoint.model.common.expression.script.jsr223.Jsr223ScriptEvaluator.evaluate(Jsr223ScriptEvaluator.java:124)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.script.ScriptExpression.evaluate(ScriptExpression.java:108)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.script.ScriptExpressionEvaluator.transformSingleValue(ScriptExpressionEvaluator.java:58)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractValueTransformationExpressionEvaluator$1.process(AbstractValueTransformationExpressionEvaluator.java:420)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> ... 50 common frames omitted
> Caused by: javax.script.ScriptException: java.lang.NullPointerException:
> Cannot invoke method last() on null object
> at
> org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:323)
> ~[groovy-1.8.6.jar:1.8.6]
> at
> org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:41)
> ~[groovy-1.8.6.jar:1.8.6]
> at javax.script.CompiledScript.eval(CompiledScript.java:92)
> ~[na:1.7.0_45]
> at
> com.evolveum.midpoint.model.common.expression.script.jsr223.Jsr223ScriptEvaluator.evaluate(Jsr223ScriptEvaluator.java:122)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> ... 53 common frames omitted
> Caused by: java.lang.NullPointerException: Cannot invoke method last()
> on null object
> at
> org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:77)
> ~[groovy-1.8.6.jar:1.8.6]
> at
> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45)
> ~[groovy-1.8.6.jar:1.8.6]
> at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
> ~[groovy-1.8.6.jar:1.8.6]
> at
> org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:32)
> ~[groovy-1.8.6.jar:1.8.6]
> at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
> ~[groovy-1.8.6.jar:1.8.6]
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
> ~[groovy-1.8.6.jar:1.8.6]
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
> ~[groovy-1.8.6.jar:1.8.6]
> at Script4.run(Script4.groovy:3) ~[na:na]
> at
> org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320)
> ~[groovy-1.8.6.jar:1.8.6]
> ... 56 common frames omitted
>
> I actually have another installation of Midpoint 3.0 where this is
> running and working correctly (I haven't touched this mapping in ages).
>
> Is there anything that could break this in the latest version?
>
> Thanks!
>
> BR/deepak
Please turn on your mapping and expression tracing (on Logging
configuration page in standard loggers) and then try to RESTART your
midpoint (application server). I'm trying to differentiate if this could
be some strange expression caching bug (there was something similar in
April).
Related to this: have you enhanced this expression (in Groovy) by the
"?." operators, or have you used them in this specific expression since
the very beginning?
(because the last() method should not be called on null object at all in
this setup)
This is still just my wild guess; coleagues are already trying to
replicate this.
Regards,
Ivan
--
Ing. Ivan Noris
Senior Identity Management Engineer
evolveum.com
___________________________________________
"Idem per idem - semper idem Vix."
More information about the midPoint
mailing list