[TASKMGMT-65] Remove dependency to cglib Created: 08/Nov/22  Updated: 09/May/23  Resolved: 09/May/23

Status: Closed
Project: Task Management
Component/s: None
Affects Version/s: None
Fix Version/s: 2.0.0

Type: Task Priority: Neutral
Reporter: Michael Duerig Assignee: Michael Duerig
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Relates
relates to TASKMGMT-68 Replace Jackrabbit OCM Open
dependency
is depended upon by MGNLWORKFLOW-435 Remove dependency to cglib Closed
relation
is related to MAGNOLIA-8609 Replace cglib with ByteBuddy Closed
Template:
Acceptance criteria:
Empty
Task DoR:
Empty
Date of First Response:
Epic Link: Build on Java 17
Team: Foundation
Work Started:
Approved:
Yes

 Description   

The cglib library is not compatible with Java 17 and we need to get rid of it. As it comes in transitively through jackrabbit-ocm we can either replace or fix the latter:

  • Since jackrabbit-ocm is not supported anymore (last commit is 11 years old). Our safest bet is to replace it with an update technology. However, we need to think about how to maintain backward compatibility since we allow using the jackrabbit-ocm annotations in client code. See e.g. in the workflow module.
  • Probably quicker (but also dirtier) is to replace cglib with byte-buddy in jackrabbit-ocm (maybe even fork it!?).

Implementation note

Due to backward compatibility concerns (the jackrabbit-ocm annotations being exposed through our public API) we might consider fixing this in jackrabbit-ocm first while at the same time deprecating its usage on our side. In a next step we would reimplement the functionality and remove the deprecated jackrabbit-ocm one. This would have the advantage of fixing jackrabbit-ocm being relatively easy (replace cgLib with ByteBuddy) while at the same time giving us and our users some grace period.

Discovery

  • This branch records some experiments performed by mgeljic for reimplementing TasksStore without Jackrabbit OCM. See also this discussion on Slack regarding forces in favour / against implementing a replacement on our side vs. fixing this in Jackrabbit OCM directly.
  • Since TASKMGMT-66, we have our own fork of jackrabbit-ocm. We can use that one to resolve this ticket.


 Comments   
Comment by Michael Duerig [ 06/Dec/22 ]

As discussed yesterday with aichimescu, we will try to fix this in jackrabbit-ocm first by replacing cgLib with ByteBuddy. A prerequisite for this is jackrabbit-ocm having enough tests covering the changes.
If feasible, we introduce a new public API (mainly annotations) under our own control, which just wraps the functionality of jackrabbit-ocm. This makes transitioning away from jackrabbit-ocm less disruptive for our users.

In a later step we can then decide whether and how we want to migrate away from  jackrabbit-ocm .

Comment by Michael Duerig [ 06/Dec/22 ]

aichimescu , I assigned this to me for the work on jackrabbit-ocm.

Generated at Mon Feb 12 11:02:45 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.