[midPoint] Parsing Dates in Inbound Mapping

Mencel, Matt mr-mencel at wiu.edu
Tue Aug 23 19:52:46 CEST 2016


Ah so now it's getting a bit crazy.  Apparently I have to convert it to an
XMLGregorianCalendar type to put something in a dateTime attribute.

This is probably not the right way, but when I tried this Groovy couldn't
find the XMLGregorianCalendar class.

<attribute>
<ref>ri:birthdate</ref>
<displayName>DOB</displayName>
<inbound>
<target>
<path>$user/extension/birthDate</path>
</target>
<expression>
           <script>
               <language>
http://midpoint.evolveum.com/xml/ns/public/expression/language#Groovy
</language>
               <code>
                   <!-- Date.parse('yyyymmdd', input) -->
GregorianCalendar c = new GregorianCalendar(); c.setTime(input);
XMLGregorianCalendar date2 =
DatatypeFactory.newInstance().newXMLGregorianCalendar(c);
               </code>
           </script>
       </expression>
</inbound>
</attribute>

So is everyone just storing dates as strings in Midpoint?

Matt

On Tue, Aug 23, 2016 at 12:24 PM, Pavol Mederly <mederly at evolveum.com>
wrote:

> That's the usual process ;)
>
> It seems that midPoint doesn't support xsd:date, only xsd:dateTime.
>
> Best regards,
>
> Pavol Mederly
> Software developerevolveum.com
>
> On 23.08.2016 19:20, Mencel, Matt wrote:
>
> OK, that changed the error at least.  :)
>
> 2016-08-23 12:17:19,231 [] [midPointScheduler_Worker-6] ERROR
> (com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeResultHandler):
> Import of object shadow:4c7c2ce9-9041-46da-b8c3-a57be022ce18(902073705)
> from resource:0d6babea-6896-11e6-9d38-0050569aa9d2(CSV TEADVS) failed:
> java.lang.RuntimeException: No type mapping for XSD type {
> http://www.w3.org/2001/XMLSchema}date({.../common/
> common-3}input=PPV(String:19850405); ) in expression in mapping in
> inbound expression for {http://midpoint.evolveum.com/
> xml/ns/public/resource/instance-3}birthdate in
> resource:0d6babea-6896-11e6-9d38-0050569aa9d2(CSV TEADVS)
> com.evolveum.midpoint.util.exception.SystemException:
> java.lang.RuntimeException: No type mapping for XSD type {
> http://www.w3.org/2001/XMLSchema}date({.../common/
> common-3}input=PPV(String:19850405); ) in expression in mapping in
> inbound expression for {http://midpoint.evolveum.com/
> xml/ns/public/resource/instance-3}birthdate in
> resource:0d6babea-6896-11e6-9d38-0050569aa9d2(CSV TEADVS)
>         at com.evolveum.midpoint.model.impl.sync.
> SynchronizationServiceImpl.notifyChange(SynchronizationServiceImpl.java:316)
> ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.provisioning.impl.
> ChangeNotificationDispatcherImpl.notifyChange(
> ChangeNotificationDispatcherImpl.java:148) ~[provisioning-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.sync.
> SynchronizeAccountResultHandler.handleObjectInternal(
> SynchronizeAccountResultHandler.java:203) ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.sync.
> SynchronizeAccountResultHandler.handleObject(
> SynchronizeAccountResultHandler.java:128) ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.util.
> AbstractSearchIterativeResultHandler.processRequest(
> AbstractSearchIterativeResultHandler.java:327) [model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.util.
> AbstractSearchIterativeResultHandler.handle(AbstractSearchIterativeResultHandler.java:189)
> [model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.provisioning.impl.
> ProvisioningServiceImpl$4.handle(ProvisioningServiceImpl.java:1184)
> [provisioning-impl-3.4.jar:na]
>         at com.evolveum.midpoint.provisioning.impl.ShadowCache$2.handle(ShadowCache.java:831)
> [provisioning-impl-3.4.jar:na]
>         at com.evolveum.midpoint.provisioning.impl.
> ResourceObjectConverter$3.handle(ResourceObjectConverter.java:1102)
> [provisioning-impl-3.4.jar:na]
>         at com.evolveum.midpoint.provisioning.ucf.impl.
> ConnectorInstanceIcfImpl$2.handle(ConnectorInstanceIcfImpl.java:2316)
> [provisioning-impl-3.4.jar:na]
>         at org.identityconnectors.framework.impl.api.
> SearchResultsHandlerLoggingProxy.handle(SearchResultsHandlerLoggingProxy.java:64)
> [connector-framework-internal-1.4.3.0-SNAPSHOT.jar:na]
>         at org.identityconnectors.framework.impl.api.StreamHandlerUtil$
> ObjectStreamHandlerAdapter.handle(StreamHandlerUtil.java:101)
> [connector-framework-internal-1.4.3.0-SNAPSHOT.jar:na]
>         at org.identityconnectors.framework.impl.api.
> BufferedResultsProxy.invoke(BufferedResultsProxy.java:262)
> [connector-framework-internal-1.4.3.0-SNAPSHOT.jar:na]
>         at org.identityconnectors.framework.impl.api.
> DelegatingTimeoutProxy.invoke(DelegatingTimeoutProxy.java:94)
> [connector-framework-internal-1.4.3.0-SNAPSHOT.jar:na]
>         at com.sun.proxy.$Proxy170.search(Unknown Source) [na:na]
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[na:1.8.0_101]
>         at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:62) ~[na:1.8.0_101]
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_101]
>         at java.lang.reflect.Method.invoke(Method.java:498)
> ~[na:1.8.0_101]
>         at org.identityconnectors.framework.impl.api.LoggingProxy.invoke(LoggingProxy.java:83)
> [connector-framework-internal-1.4.3.0-SNAPSHOT.jar:na]
>         at com.sun.proxy.$Proxy170.search(Unknown Source) [na:na]
>         at org.identityconnectors.framework.impl.api.
> AbstractConnectorFacade.search(AbstractConnectorFacade.java:177)
> [connector-framework-internal-1.4.3.0-SNAPSHOT.jar:na]
>         at com.evolveum.midpoint.provisioning.ucf.impl.
> ConnectorInstanceIcfImpl.search(ConnectorInstanceIcfImpl.java:2412)
> [provisioning-impl-3.4.jar:na]
>         at com.evolveum.midpoint.provisioning.impl.
> ResourceObjectConverter.searchResourceObjects(
> ResourceObjectConverter.java:1112) [provisioning-impl-3.4.jar:na]
>         at com.evolveum.midpoint.provisioning.impl.ShadowCache.
> searchObjectsIterative(ShadowCache.java:838)
> [provisioning-impl-3.4.jar:na]
>         at com.evolveum.midpoint.provisioning.impl.ShadowCache.
> searchObjectsIterative(ShadowCache.java:763)
> [provisioning-impl-3.4.jar:na]
>         at com.evolveum.midpoint.provisioning.impl.
> ProvisioningServiceImpl.searchObjectsIterative(
> ProvisioningServiceImpl.java:1232) [provisioning-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.ModelObjectResolver.
> searchIterative(ModelObjectResolver.java:224) [model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.util.
> AbstractSearchIterativeTaskHandler.runInternal(
> AbstractSearchIterativeTaskHandler.java:239) [model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.util.
> AbstractSearchIterativeTaskHandler.run(AbstractSearchIterativeTaskHandler.java:155)
> [model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.task.quartzimpl.execution.
> JobExecutor.executeHandler(JobExecutor.java:479)
> [task-quartz-impl-3.4.jar:na]
>         at com.evolveum.midpoint.task.quartzimpl.execution.
> JobExecutor.executeSingleTask(JobExecutor.java:300)
> [task-quartz-impl-3.4.jar:na]
>         at com.evolveum.midpoint.task.quartzimpl.execution.
> JobExecutor.execute(JobExecutor.java:164) [task-quartz-impl-3.4.jar:na]
>         at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
> [quartz-2.1.3.jar:na]
>         at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
> [quartz-2.1.3.jar:na]
> Caused by: java.lang.RuntimeException: No type mapping for XSD type {
> http://www.w3.org/2001/XMLSchema}date({.../common/
> common-3}input=PPV(String:19850405); ) in expression in mapping in
> inbound expression for {http://midpoint.evolveum.com/
> xml/ns/public/resource/instance-3}birthdate in
> resource:0d6babea-6896-11e6-9d38-0050569aa9d2(CSV TEADVS)
>         at com.evolveum.midpoint.model.common.expression.evaluator.
> AbstractValueTransformationExpressionEvaluator$1.process(
> AbstractValueTransformationExpressionEvaluator.java:434)
> ~[model-common-3.4.jar:na]
>         at com.evolveum.midpoint.model.common.expression.evaluator.
> AbstractValueTransformationExpressionEvaluator$1.process(
> AbstractValueTransformationExpressionEvaluator.java:352)
> ~[model-common-3.4.jar:na]
>         at com.evolveum.midpoint.util.MiscUtil.carthesian(MiscUtil.java:367)
> ~[util-3.4.jar:na]
>         at com.evolveum.midpoint.util.MiscUtil.carthesian(MiscUtil.java:357)
> ~[util-3.4.jar:na]
>         at com.evolveum.midpoint.model.common.expression.evaluator.
> AbstractValueTransformationExpressionEvaluator.evaluateRelativeExpression(
> AbstractValueTransformationExpressionEvaluator.java:442)
> ~[model-common-3.4.jar:na]
>         at com.evolveum.midpoint.model.common.expression.evaluator.
> AbstractValueTransformationExpressionEvaluator.evaluate(
> AbstractValueTransformationExpressionEvaluator.java:114)
> ~[model-common-3.4.jar:na]
>         at com.evolveum.midpoint.model.common.expression.Expression.evaluate(Expression.java:133)
> ~[model-common-3.4.jar:na]
>         at com.evolveum.midpoint.model.common.mapping.Mapping.
> evaluateExpression(Mapping.java:985) ~[model-common-3.4.jar:na]
>         at com.evolveum.midpoint.model.common.mapping.Mapping.evaluate(Mapping.java:520)
> ~[model-common-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.lens.projector.
> MappingEvaluator.evaluateMapping(MappingEvaluator.java:95)
> ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.lens.projector.
> InboundProcessor.evaluateInboundMapping(InboundProcessor.java:490)
> ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.lens.projector.
> InboundProcessor.processInboundExpressionsForProjection(InboundProcessor.java:319)
> ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.lens.projector.
> InboundProcessor.processInboundFocal(InboundProcessor.java:186)
> ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.lens.projector.
> InboundProcessor.processInbound(InboundProcessor.java:128)
> ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.lens.projector.FocusProcessor.
> processFocusFocus(FocusProcessor.java:212) ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.lens.projector.
> FocusProcessor.processFocus(FocusProcessor.java:146)
> ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.lens.projector.Projector.
> projectInternal(Projector.java:208) ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.lens.projector.Projector.project(Projector.java:106)
> ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.lens.Clockwork.click(Clockwork.java:302)
> ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.lens.Clockwork.run(Clockwork.java:214)
> ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.sync.
> SynchronizationServiceImpl.reactToChange(SynchronizationServiceImpl.java:766)
> ~[model-impl-3.4.jar:na]
>         at com.evolveum.midpoint.model.impl.sync.
> SynchronizationServiceImpl.notifyChange(SynchronizationServiceImpl.java:299)
> ~[model-impl-3.4.jar:na]
>         ... 34 common frames omitted
> Caused by: java.lang.IllegalArgumentException: No type mapping for XSD
> type {http://www.w3.org/2001/XMLSchema}date
>         at com.evolveum.midpoint.prism.xml.XsdTypeMapper.toJavaType(XsdTypeMapper.java:184)
> ~[prism-3.4.jar:na]
>         at com.evolveum.midpoint.prism.xml.XsdTypeMapper.toJavaType(XsdTypeMapper.java:173)
> ~[prism-3.4.jar:na]
>         at com.evolveum.midpoint.model.common.expression.script.
> jsr223.Jsr223ScriptEvaluator.evaluate(Jsr223ScriptEvaluator.java:129)
> ~[model-common-3.4.jar:na]
>         at com.evolveum.midpoint.model.common.expression.script.
> ScriptExpression.evaluate(ScriptExpression.java:111)
> ~[model-common-3.4.jar:na]
>         at com.evolveum.midpoint.model.common.expression.script.
> ScriptExpressionEvaluator.transformSingleValue(ScriptExpressionEvaluator.java:60)
> ~[model-common-3.4.jar:na]
>         at com.evolveum.midpoint.model.common.expression.evaluator.
> AbstractValueTransformationExpressionEvaluator$1.process(
> AbstractValueTransformationExpressionEvaluator.java:422)
> ~[model-common-3.4.jar:na]
>         ... 55 common frames omitted
>
> On Tue, Aug 23, 2016 at 12:14 PM, Pavol Mederly <mederly at evolveum.com>
> wrote:
>
>> Hello Matt,
>>
>> I assume you get something like "unknown variable 'birthdate'" exception.
>> When creating inbound mappings, you refer to the incoming value (from the
>> resource) via "input" variable.
>>
>> So your line should be something like Date.parse(..., input).
>>
>> Best regards,
>>
>> Pavol Mederly
>> Software developerevolveum.com
>>
>> On 23.08.2016 19:10, Mencel, Matt wrote:
>>
>> So in my CSV I have a birthday field stored as a string value like so...
>> '20160822'.  I've created a DOB field in my custom schema of type date...
>>
>>             <xsd:element name="birthDate" type="xsd:date" minOccurs="0"
>> maxOccurs="1">
>>                 <xsd:annotation>
>>                     <xsd:appinfo>
>>                         <a:indexed>false</a:indexed>
>>                         <a:displayName>DOB</a:displayName>
>>                         <a:displayOrder>130</a:displayOrder>
>>                     </xsd:appinfo>
>>                 </xsd:annotation>
>>             </xsd:element>
>>
>> and am trying to parse the string to the date field using the following
>> in my mapping...which doesn't work at the moment.
>>
>> <attribute>
>> <ref>ri:birthdate</ref>
>> <displayName>DOB</displayName>
>> <inbound>
>> <target>
>> <path>$user/extension/birthDate</path>
>> </target>
>> <expression>
>>            <script>
>>                <language>http://midpoint.evo
>> lveum.com/xml/ns/public/expression/language#Groovy</language>
>>                <code>
>>                    Date.parse('yyyymmdd', birthdate)
>>                </code>
>>            </script>
>>        </expression>
>> </inbound>
>> </attribute>
>>
>> Do I need to do the script in the user object template instead?
>>
>> Thanks,
>> Matt
>>
>>
>> _______________________________________________
>> midPoint mailing listmidPoint at lists.evolveum.comhttp://lists.evolveum.com/mailman/listinfo/midpoint
>>
>> _______________________________________________ midPoint mailing list
>> midPoint at lists.evolveum.com http://lists.evolveum.com/mail
>> man/listinfo/midpoint
>
> _______________________________________________
> midPoint mailing listmidPoint at lists.evolveum.comhttp://lists.evolveum.com/mailman/listinfo/midpoint
>
>
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20160823/ead56cfd/attachment.htm>


More information about the midPoint mailing list