[weld-dev] javax.el.ExpressionFactory has final methods! CDI doesn't allow that
Martin Kouba
mkouba at redhat.com
Wed Oct 21 09:57:42 EDT 2015
Dne 21.10.2015 v 13:54 Emily Jiang napsal(a):
> doh. You were right that the OWB-616 was for a different issue rather
> than the one I am interested.
>
> Do you have any suggestions about working around the unproxiable
> Hashtable issue?
Well, the spec only requires the injection points to be validated, or
rather the required bean types to be proxyable. So if you inject/use Map
interface instead of Hashtable, the validation should pass.
>
> On Wed, Oct 21, 2015 at 12:38 PM, Martin Kouba <mkouba at redhat.com
> <mailto:mkouba at redhat.com>> wrote:
>
> Dne 21.10.2015 v 13:20 Emily Jiang napsal(a):
>
> Thanks Martin!
> The new final method on the Hashtable is
>
> final boolean initHashSeedAsNeeded(int capacity)
>
>
> I see. This package-private method was added in JDK7.
>
>
> The change went as part of the following bug fix:
>
> [1] http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8006593
>
> As for the OWB-616 jira, I did not look at the actual fix, but I
> assume
> the fix by the following comments. I might be wrong here.
>
> <https://issues.apache.org/jira/browse/OWB-616#>
> Mark Struberg
> <https://issues.apache.org/jira/secure/ViewProfile.jspa?name=struberg>
> added a comment - 01/Oct/11 19:12
>
> I now changed the checks to allow private final and public/protected
> static final methods.
>
>
> Mark does not talk about non-static package-private methods, right?
> He talks about private final and public/protected static final =>
> should work in Weld too.
>
> If non-static package-private methods are allowed than the spec is
> violated. Unfortunately, it seems there's no tck test for this.
>
>
>
> Thanks
>
> Emily
>
>
> On Wed, Oct 21, 2015 at 11:50 AM, Martin Kouba
> <mkouba at redhat.com <mailto:mkouba at redhat.com>
> <mailto:mkouba at redhat.com <mailto:mkouba at redhat.com>>> wrote:
>
> Hi Emily,
>
> commments inline.
>
> Dne 21.10.2015 v 11:02 Emily Jiang napsal(a):
>
> CDI specification does not allow proxying a class with
> non-private final
> methods. The java.util.Hashtable class has a
> non-private final method added to the class in later
> versions
> of Java, so a CDI application that previously worked
> may break
> when updating the Java level.
>
>
> Just for the record: what's the name of the method?
>
>
> This issue was logged in CDI-527.
>
> OpenWebBeans fixed this via the jira
> (https://issues.apache.org/jira/browse/OWB-616).
>
>
> OWB-616 does not fix CDI-527 but CDI-159, i.e. a private final
> method does not cause a deployment problem. This works in
> Weld too.
> On the other hand, CDI-527 is still an open issue so we
> can't simply
> fix it. In theory, we could add a new feature of a non-portable
> mode. But non-portable mode is not intended to be commonly
> used.
> It's kind of a workaround.
>
>
> Can Weld fix this in the 2.3 or 2.2 trunk?
>
>
> --
> Thanks
> Emily
> =================
> Emily Jiang
> ejiang at apache.org <mailto:ejiang at apache.org>
> <mailto:ejiang at apache.org <mailto:ejiang at apache.org>>
> <mailto:ejiang at apache.org <mailto:ejiang at apache.org>
> <mailto:ejiang at apache.org <mailto:ejiang at apache.org>>>
>
>
> _______________________________________________
> weld-dev mailing list
> weld-dev at lists.jboss.org <mailto:weld-dev at lists.jboss.org>
> <mailto:weld-dev at lists.jboss.org <mailto:weld-dev at lists.jboss.org>>
> https://lists.jboss.org/mailman/listinfo/weld-dev
>
>
> --
> Martin Kouba
> Software Engineer
> Red Hat, Czech Republic
>
>
>
>
> --
> Thanks
> Emily
> =================
> Emily Jiang
> ejiang at apache.org <mailto:ejiang at apache.org>
> <mailto:ejiang at apache.org <mailto:ejiang at apache.org>>
>
>
> --
> Martin Kouba
> Software Engineer
> Red Hat, Czech Republic
>
>
>
>
> --
> Thanks
> Emily
> =================
> Emily Jiang
> ejiang at apache.org <mailto:ejiang at apache.org>
--
Martin Kouba
Software Engineer
Red Hat, Czech Republic
More information about the weld-dev
mailing list