[midPoint] ScriptedSQL update attributes

Wojciech Staszewski wojciech.staszewski at diagnostyka.pl
Thu Jul 6 19:48:41 CEST 2017


Thank you for the array logging code.
Unfortunately the array looks like it was empty:

(org.forgerock.openicf.misc.scriptedcommon.ScriptedConnector): method:
null msg:Attribute received: n_family -> []

Hmmmm....


W dniu 06.07.2017 o 18:14, Rodrigo Yanis pisze:
> 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 <mailto:ryanis at identicum.com>
> www.identicum.com <http://www.identicum.com/>
>
> 2017-07-06 13:05 GMT-03:00 Rodrigo Yanis <ryanis at identicum.com
> <mailto: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 <mailto:ryanis at identicum.com>
>     www.identicum.com <http://www.identicum.com/>
>
>     2017-07-06 12:23 GMT-03:00 Wojciech Staszewski
>     <wojciech.staszewski at diagnostyka.pl
>     <mailto:wojciech.staszewski at 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).toString();
>                                 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:d7a1b38c-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/midpoint/blob/master/samples/resources/scriptedsql/CreateScript.groovy
>         <https://github.com/Evolveum/midpoint/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 <mailto:midPoint at lists.evolveum.com>
>         http://lists.evolveum.com/mailman/listinfo/midpoint
>         <http://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/20170706/d6133867/attachment.htm>


More information about the midPoint mailing list