[midPoint] ScriptedSQL update attributes
Rodrigo Yanis
ryanis at identicum.com
Thu Jul 6 18:14:28 CEST 2017
Just to clarify, make sure "attr" variable contains a *string *with
the attribute you want to get. That's how we have it configured in our own
implementations and it's working fine.
Also, perhaps add some logging to see the contents of the "attributes"
array:
> *attributes.each{attr, value -> log.info <http://log.info>("Attribute
> received: ${attr} -> ${value}")};*
So you get a better grasp of what's on that array.
Regards,
*Rodrigo Yanis.*
Identicum S.A.
Jorge Newbery 3226
Tel: +54 (11) 4552-3050
ryanis at identicum.com
www.identicum.com
2017-07-06 13:05 GMT-03:00 Rodrigo Yanis <ryanis at identicum.com>:
> Hello Wojciech,
>
> Have you tried something like this?
>
> *attributes?.get("n_family")?.get(0);*
>
> Regards,
>
>
> *Rodrigo Yanis.*
> Identicum S.A.
> Jorge Newbery 3226
> Tel: +54 (11) 4552-3050
> ryanis at identicum.com
> www.identicum.com
>
> 2017-07-06 12:23 GMT-03:00 Wojciech Staszewski <wojciech.staszewski@
> diagnostyka.pl>:
>
>> Hello!
>>
>> I have a resource with ScriptedSQL 1.1.2.0-em3 connector.
>>
>> It worked ok, but from a certain date it gives me an error during
>> attibutes update:
>>
>> switch ( action ) {
>>
>> case "UPDATE":
>> switch ( objectClass ) {
>> case "__ACCOUNT__":
>> for (attr in accountAttrNames) {
>> if (attributes.get(attr) != null) {
>> switch (attr) {
>> case "n_family":
>> def family = attributes.get(attr)?.get(0).t
>> oString();
>> sql.executeUpdate("UPDATE egw_addressbook SET
>> n_family=? WHERE account_id=?",[family,uid]);
>> break;
>> [...]
>>
>>
>>
>>
>> Outbound mapping:
>>
>> <attribute>
>> <c:ref>ri:n_family</c:ref>
>> <outbound>
>> <authoritative>true</authoritative>
>> <exclusive>false</exclusive>
>> <strength>normal</strength>
>> <source>
>> <c:path>familyName</c:path>
>> </source>
>> </outbound>
>> </attribute>
>>
>>
>>
>> The ERROR:
>> ERROR (com.evolveum.midpoint.provisioning.ucf.impl.connid.ConnIdUtil):
>> ConnId Exception java.lang.IndexOutOfBoundsException in
>> connector:97d430f1-d2b0-4487-b60b-4905dc76d2ca(ICF
>> org.forgerock.openicf.connectors.scriptedsql.ScriptedSQLConnector
>> v1.1.2.0.em3): ConnectorSpec(resource:d7a1b38
>> c-07db-42cc-b173-664b6e317871(EGroupWare), name=null,
>> oid=97d430f1-d2b0-4487-b60b-4905dc76d2ca) while updating object
>> identified by ConnId UID '1020': Index: 0, Size: 0
>> ERROR (com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl):
>> Couldn't modify object: unexpected problem: java.lang.IndexOutOfBoundsException:
>> Index: 0, Size: 0
>> ERROR (com.evolveum.midpoint.model.impl.lens.ChangeExecutor): Error
>> executing changes for (account (default) on resource:d7a1b38c-07db-42cc-b173-664b6e317871(EGroupWare)):
>> Internal error: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
>>
>> The value of "n_family" is NULL, although "familyName" of midPoint's user
>> is not null.
>>
>> I tried this (sorry, I'm not a developer):
>>
>> def family = attributes.get(attr)?.get(0).toString();
>> def family = attributes?.get(attr)?.get(0).toString();
>> def family = attributes.get(attr)?.get(0);
>> def family = attributes?.get(attr)?.get(0);
>> def family = attributes.get(attr)?.find { true };
>>
>> as in the example: https://github.com/Evolveum/mi
>> dpoint/blob/master/samples/resources/scriptedsql/CreateScript.groovy
>>
>> all with the same result, that means NULL. What is the correct working
>> syntax?
>>
>> Thanks a lot,
>> Regards,
>> Wojciech Staszewski.
>> _______________________________________________
>> 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/20170706/706a7440/attachment.htm>
More information about the midPoint
mailing list