[cdi-dev] [JBoss JIRA] (CDI-527) allow proxying of classes with non-private final methods

Mark Struberg (JIRA) issues at jboss.org
Mon Jan 4 03:38:00 EST 2016


    [ https://issues.jboss.org/browse/CDI-527?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13144342#comment-13144342 ] 

Mark Struberg commented on CDI-527:
-----------------------------------

Happy new year!

I think there is an agreement that we shall not remove the non-proxyable rules in general (Option B). 
Option A. is purely an educational thing. 
We might write some blog about it but we should not pollute the spec with long explanations.
Those should go into a side letter instead.


But I also grok Emilys statement and have a possible solution for it. 
We could enhance the beans.xml.

{code}
<beans>
  <allowProxying>
    <class>com.acme.MyClassWithFinalMethods</class>
  </allowProxying>
</beans>
{code}

It would be in the chapter 5 sense of BDA of course. 
Otherwise it would make no sense at all as y'ou would have to re-package the jar again.
Means having a jar with the above in an EARs /lib folder would allow it for the whole EAR.
If it's just in an WAR WEB-INF/lib/ jar inside an EAR then it would only allow it for this very WAR in the EAR.

The container could log out a WARNING if it finds such entries.
Something like "Class XxxYyyy explicitly declared as proxyable despite having final methods!"


> allow proxying of classes with non-private final methods
> --------------------------------------------------------
>
>                 Key: CDI-527
>                 URL: https://issues.jboss.org/browse/CDI-527
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>          Components: Beans
>    Affects Versions: 1.2.Final
>            Reporter: Mark Struberg
>            Assignee: Mark Struberg
>             Fix For: 2.0 (proposed)
>
>
> Currently we explicitly disallow proxying of classes with non-private final methods. 
> EJB _does_ allow this. And there are a few final methods in the JDK and other libs. E.g. HashMap#initHashSeedAsNeeded. Currently we cannot have a producer method for it.
> We might rethink our decision and allow it. Probably with an own annotation like @AllowProxying which disables this check for certain cases (subclass managed-beans or producers).



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the cdi-dev mailing list