[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