Tomas,
A clarification for point 3:
On 1/19/2024 5:02 AM, Tomas Langer wrote:
*Ad 3 - Provider implementation must be public with public constructor*
-------------------------------------
Details:
Provider implementations are not supposed to be visible to users - they
are not public API of my module (the fact that I provide a service is
part of my public API).
Right now there is only one option to work around this, and it only
works in JPMS, and in my opinion it brings in even more problems - put
the provider implementation in an un-exported package.
The problem with this approach is that now the provider implementation
MUST use only public methods of my module, thus creating even more
public APIs, where if I just put it in my exported package, I can use
package private methods of my other classes to implement the service (so
I pay the price of having one public class with one public constructor
agains multiple public classes and public methods). Also the "hiding" in
unexported package is lost when on classpath anyway...
I don't understand what you mean by "the provider implementation MUST
use only public methods of my module". You have an arrangement of
modules and packages in mind that I simply cannot see -- please share it.
Alex