[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