-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move jakarta.el-api related method to new BeanManager subclass? #613
Comments
The core profile seems to include EL, so that dependency shouldn't be an issue? |
I am not sure it does... The website and the issue for it both list different parts. |
Ah I forgot about that divergence. I only looked at the first link. If the core profile doesn't include EL, exclusion should be possible, but I agree it's not nice. |
The release plan is out of date as that was the plan before we knew what CDI Lite would support. The Core Profile specification does not list EL as a supported tech. It says it is not required, and the platform api project gives the core profile dependencies as: <!-- Core Profile -->
<!-- Theoretically these versions could be different from Web Profile -->
<jakarta.json-api.cp.version>2.1.0</jakarta.json-api.cp.version>
<jakarta.json.bind-api.cp.version>3.0.0</jakarta.json.bind-api.cp.version>
<jakarta.annotation-api.cp.version>2.1.0</jakarta.annotation-api.cp.version>
<jakarta.inject.cp.version>2.0.1</jakarta.inject.cp.version>
<jakarta.interceptor-api.cp.version>2.1.0</jakarta.interceptor-api.cp.version>
<jakarta.enterprise.cdi-api.cp.version>4.0.1</jakarta.enterprise.cdi-api.cp.version>
<jakarta.inject.cp.version>2.0.1</jakarta.inject.cp.version>
<jakarta.ws.rs-api.cp.version>3.1.0</jakarta.ws.rs-api.cp.version> This is where the optional dependency on EL is introduced because the jakarta-core-api jar is rebuilt from the source dependencies, and this requires EL due to the BeanManager usage. EL is excluded from the required compile scope dependency on CDI, but then a provided optional dependency has to be added to be able to compile the jakarta-core-api jar. |
I see. So ATM we seem to have two methods on
Plus an entry in
In an ideal world, we'd have CDI Lite JAR and then CDI Full JAR (which depends in Lite as well as EL API) but we've been to that rabbit hole before and there wasn't an agreement on how to do that without breaking everything.
@Ladicek which approach did you mean? |
I meant EL should be a compile-only dependency of CDI in the Core profile, and the Core profile "uberPOM" should add an exclusion of EL to the CDI dependency. Of course, Maven doesn't really have a concept of compile-only scope, but there are workarounds (optional, provided scope). |
Ah ok, I thought you were talking about solution on CDI spec level. |
We discussed this during CDI meeting with the following notes:
|
We discussed this briefly on the CDI call today and there's a pretty straightforward way:
An open question is: should that new interface extend |
Isn't it easier to just have separate artefacts for CDI lite and CDI full. CDI lite doesn't contain than any reference to EL classes and BeanManager can keep the EL one a-since as part of Web profile, EL is already available. See also #640 |
EL API has very little usage in CDI - two methods altogether IIRC. Separating that would be fairly easy. I've also added comment to #640 (comment) |
I drafted a solution for this here: #644 |
So today's discussion brought up the idea of a 4.1 release with deprecation of the BM method, and removal in 5.0. The question that came up is whether there is some restriction on whether a platform release could skip over the 4.1 release, in which case the 11 core platform would never see a deprecation of the BM method. |
The core profile cannot cleanly separate a dependency on jakarta.el-api from the dependency on jakarta.enterprise.cdi-api because of the usage in BeanManager#{getELResolver, wrapExpressionFactory}. We need to think about how factor out this dependency.
The text was updated successfully, but these errors were encountered: