[midPoint] Scripted Hook v4.0 createModificationAdd missing

Pavol Mederly mederly at evolveum.com
Fri Oct 18 21:14:27 CEST 2019


Honestly, these builders (delta, query) are very easily used when 
writing Java code using automatic completion IDE like Eclipse or 
IntelliJ IDEA.

For writing scripts (except for occasional cases like newly-prepared 
IntelliJ IDEA plugin) you unfortunately have to follow examples or the 
API code:


https://github.com/Evolveum/midpoint/blob/master/infra/prism-api/src/main/java/com/evolveum/midpoint/prism/delta/builder/S_ItemEntry.java

https://github.com/Evolveum/midpoint/blob/master/infra/prism-api/src/main/java/com/evolveum/midpoint/prism/delta/builder/S_ValuesEntry.java

https://github.com/Evolveum/midpoint/blob/master/infra/prism-api/src/main/java/com/evolveum/midpoint/prism/delta/builder/S_MaybeDelete.java


Or maybe


https://evolveum.com/downloads/downloads/midpoint/4.0/midpoint-api-4.0-javadoc/com/evolveum/midpoint/prism/delta/builder/S_ItemEntry.html

https://evolveum.com/downloads/downloads/midpoint/4.0/midpoint-api-4.0-javadoc/com/evolveum/midpoint/prism/delta/builder/S_ValuesEntry.html

https://evolveum.com/downloads/downloads/midpoint/4.0/midpoint-api-4.0-javadoc/com/evolveum/midpoint/prism/delta/builder/S_MaybeDelete.html


Best regards,

Pavol Mederly
Software developer
evolveum.com

On 18.10.2019 21:06, Pavol Mederly wrote:
>
> Hello Keith,
>
>
> yes, I'll be glad to do that. The deltas have been traditionally 
> created using ContainerDelta.xyz methods, now migrated to 
> prismContext.deltaFactory().container().xyz methods almost in 1:1 way. 
> This is what Nico has used. This API is fully functional, but - in my 
> opinion - quite complicated.
>
>
> Therefore, about 4 years ago, the /delta builder/ was created as a 
> simple yet powerful mechanism for easy creation of deltas - both 
> object deltas and item deltas. It uses a fluent API to construct them, 
> like
>
>
> prismContext.deltaFor(CaseType.class)
> .item(CaseType.F_STATE).replace(SchemaConstants.CASE_STATE_CLOSED)
> .item(CaseType.F_CLOSE_TIMESTAMP).replace(now)
>                 .asItemDeltas()
>
>
> There are numerous examples of this API throughout midPoint source 
> code: about 360 usages in production code and about 260 usages in test 
> code. But I am afraid I still didn't had the time to write a 
> documentation. Anyway, I am quite sure the interface is really 
> self-explanatory and simple.
>
>
> In midPoint 4.0 the interface of obtaining the delta builder was 
> slightly changed from (e.g.) |DeltaBuilder.deltaFor(UserType.class, 
> prismContext)| to |prismContext.deltaFor(UserType.class)|; however, 
> the rest of API is still the same.
>
>
> As the comparison of these two is concerned, I think the delta builder 
> is the way to go in 99 percent of cases. Maybe if you'd need something 
> really high-performant (squeezing out fractions of microseconds, 
> figurately speaking), you could go for the original way.
>
>
> Maybe someone could supplement or correct me :)
>
>
> (Well, actually, we'd be grateful for any comments of both delta and 
> query builder API; or midPoint internal APIs in general.)
>
>
> Best regards and nice weekend!
>
> Pavol Mederly
> Software developer
> evolveum.com
> On 18.10.2019 18:16, Keith Hazelton wrote:
>> Could someone at Evolveum send a few sentences to the list about 
>> problems for which the Prism construct is the best solution? Are 
>> there any caveats about its use?
>>
>>            Regards, Keith (hazelton at internet2.edu)
>> ------------------------------------------------------------------------
>> *From:* Keith Hazelton <keith.hazelton at wisc.edu>
>> *Sent:* Friday, October 18, 2019 12:24 AM
>> *To:* Keith Hazelton <hazelton at internet2.edu>
>> *Subject:* FW: [midPoint] Scripted Hook v4.0 createModificationAdd 
>> missing
>> *
>> *
>> ------------------------------------------------------------------------
>> *From:* midPointOn Behalf OfNico
>> *Sent:* Friday, October 18, 2019 12:23:35 AM (UTC-06:00) Central Time 
>> (US & Canada)
>> *To:* midPoint General Discussion
>> *Subject:* Re: [midPoint] Scripted Hook v4.0 createModificationAdd 
>> missing
>>
>> Hi Pavol,
>> thanks for the link. I have get it working now.
>> This is what i changed:
>> Old pre v4.0:
>> assignmentDelta = 
>> ContainerDelta.createModificationAdd(UserType.F_ASSIGNMENT, UserType, 
>> prismContext, assignment);
>> New:
>> assignmentDelta = 
>> prismContext.deltaFactory().container().createModificationAdd(UserType.F_ASSIGNMENT, 
>> UserType,assignment)
>>
>> Kind regards
>> Nico Pätzelt
>>
>> Am Do., 17. Okt. 2019 um 10:59 Uhr schrieb Pavol Mederly 
>> <mederly at evolveum.com <mailto:mederly at evolveum.com>>:
>>
>>     Hello Nico,
>>
>>     you're right. The wiki should be (eventually) updated.
>>
>>     In the meanwhile please see
>>     https://wiki.evolveum.com/display/midPoint/Prism+API+migration+notes.
>>     For delta creation, the delta builder is the correct way to go.
>>
>>     Best regards,
>>
>>     Pavol Mederly
>>     Software developer
>>     evolveum.com  <http://evolveum.com>
>>
>>     On 16.10.2019 13:29, Nico wrote:
>>>     Hello,
>>>
>>>     i have updated our midpoint testsystem from 3.8 to 3.9 and now
>>>     to 4.0.
>>>     And now i have an error occurs in the scripted hook section.
>>>
>>>     I have looked up the example:
>>>     https://wiki.evolveum.com/display/midPoint/Scripting+Hooks
>>>
>>>     Here it says:
>>>     |||assignmentDelta =
>>>     ContainerDelta.createModificationAdd(UserType.F_ASSIGNMENT,
>>>     UserType.class, prismContext, assignment);|
>>>     |modelContext.getFocusContext().swallowToPrimaryDelta(assignmentDelta);|
>>>     |
>>>     |
>>>     |This is not working anymore in 4.0. I checked the docs at
>>>     https://evolveum.com/downloads/midpoint/4.0/midpoint-api-4.0-javadoc/com/evolveum/midpoint/prism/delta/ContainerDelta.html
>>>
>>>     |
>>>     |but the method createModificationAdd is missing.|
>>>     |
>>>     |
>>>     |So i can't get it running. Maybe someone can give me a tipp?
>>>     The wiki article need's to be updated too i think.|
>>>     |
>>>     |
>>>     |Kind regards
>>>     |
>>>     |Nico Pätzelt
>>>     |
>>>     |
>>>     |
>>>     |
>>>     |
>>>
>>>     _______________________________________________
>>>     midPoint mailing list
>>>     midPoint at lists.evolveum.com  <mailto:midPoint at lists.evolveum.com>
>>>     http://lists.evolveum.com/mailman/listinfo/midpoint
>>     _______________________________________________
>>     midPoint mailing list
>>     midPoint at lists.evolveum.com <mailto:midPoint at lists.evolveum.com>
>>     http://lists.evolveum.com/mailman/listinfo/midpoint
>>
>>
>> _______________________________________________
>> midPoint mailing list
>> midPoint at lists.evolveum.com
>> 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/20191018/418ed60a/attachment.htm>


More information about the midPoint mailing list