[
https://issues.apache.org/jira/browse/JDO-846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17928831#comment-17928831
]
Craig L Russell edited comment on JDO-846 at 6/10/25 5:36 PM:
--------------------------------------------------------------
The javax.transaction.Synchronization interface has only two trivial methods:
beforeCompletion and afterCompletion. In order to use these, the user must
provide a class that implements the Synchronization interface. And the build
process needs to declare a dependency on the jar files containing the
interfaces.
We could remove the need for either javax or jakarta by providing an
org.apache.jdo.Synchronization with the two methods. Then we would remove the
import of javax.transaction.Synchronization. This would be a breaking change.
And there would be a need for code changes in user code to change the import
statements.
The usage of the Synchronization interface was changed from javax (or jakarta)
where any number of Synchronizations could be registered via
registerSynchronization. And there is no method that returns the list of
Synchronization objects that have been registered. Instead, a single
synchronization can be registered, and that instance can be obtained via
getSynchronization, which is not a feature of javax or jakarta.
The callback afterCompletion(int status) also needs attention. The status value
is defined by javax.transaction.Status which would still be needed unless we
also defined our own org.apache.jdo.Status values.
If we did define org.apache.jdo interfaces and classes, there would still be
the Intellectual Property issue. We would have to copy the contents of the
Synchronization and Status code files potentially while keeping the license, or
modifying the code and using the ASF 2.0 license. Neither of these options is
appealing.
To summarize, it appears that there is little to be gained by doing anything at
this point. We can revisit this issue if something happens in future, such as
incompatible changes to the javax or jakarta Synchronization interfaces.
was (Author: clr):
The javax.transaction.Synchronization interface has only two trivial methods:
beforeCompletion and afterCompletion. In order to use these, the user must
provide a class that implements the Synchronization interface.
We could remove the need for either javax or jakarta by providing an
org.apache.Synchronization with the two methods. Then we would remove the
import of javax.transaction.Synchronization. This would be a breaking change
but there would not be any code changes in user code except for changing the
import statement.
> Check upgrade references from javax to jakarta
> ----------------------------------------------
>
> Key: JDO-846
> URL: https://issues.apache.org/jira/browse/JDO-846
> Project: JDO
> Issue Type: Task
> Components: api, tck
> Affects Versions: JDO 3.2.1
> Reporter: Michael Bouschen
> Priority: Major
>
> The following packages switched from javax to jakarta:
> * javax.persistence
> * javax.transaction
> We should check whether we can support both packes.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)