[weld-issues] [JBoss JIRA] (WELD-2632) Allow unwrapping of a proxied object
Title: Message Title Martin Kouba resolved as Rejected Weld / WELD-2632 Allow unwrapping of a proxied object Change By: Martin Kouba Status: Open Resolved Resolution: Rejected Add Comment This message was sent by Atlassian Jira (v7.13.8#713008-sha1:1606a5c) ___ weld-issues mailing list weld-issues@lists.jboss.org https://lists.jboss.org/mailman/listinfo/weld-issues
[weld-issues] [JBoss JIRA] (WELD-2632) Allow unwrapping of a proxied object
Title: Message Title Martin Kouba commented on WELD-2632 Re: Allow unwrapping of a proxied object however, doing it at injection point is probably the wrong place, so how about at producer: This is not possible. Client proxies are required to ensure proper functionality for normal scoped beans. That's why "unwrapping proxy" is a corner case that should require some extra handling from the client (injection site). It would probably make more sense to start this discussion at the spec level. Feel free to create a spec issue here: https://github.com/eclipse-ee4j/cdi/issues. Add Comment This message was sent by Atlassian Jira (v7.13.8#713008-sha1:1606a5c) ___ weld-issues mailing list weld-issues@lists.jboss.org https://lists.jboss.org/mailman/listinfo/weld-issues
[weld-issues] [JBoss JIRA] (WELD-2632) Allow unwrapping of a proxied object
Title: Message Title Klemen Ferjancic commented on WELD-2632 Re: Allow unwrapping of a proxied object Yes, that works, I am just unhappy by the need to write wrappers/utility code instead of using JPA interface as intended. A few more thoughts @AllowUnwrap @Inject private EntityManager em however, doing it at injection point is probably the wrong place, so how about at producer: @AllowUnwrap @Produces @RequestScoped public EntityManager getEntityManager(){} As a bonus, weld behaviour could be codified in the spec and this would allow a developer override. No other code changes needed when using JPA or similar use cases. I'm sure it is a bit more complicated that that and I also understand this is a rather narrow use case to merit an introduction of a new annotation/funcitonality in CDI. It seems cleaner and doable though. It would probably make more sense to start this discussion at the spec level. Feel free to close the issue as needed. Add Comment This message was sent by Atlassian Jira (v7.13.8#713008-sha1:1606a5c) ___
[weld-issues] [JBoss JIRA] (WELD-2632) Allow unwrapping of a proxied object
Title: Message Title Martin Kouba commented on WELD-2632 Re: Allow unwrapping of a proxied object Since Weld 3.x you can cast a client proxy instance to org.jboss.weld.proxy.WeldClientProxy and obtain the contextual instance via proxy.getMetadata().getContextualInstance(). I believe that this approach is "good enough" for similar use cases. Add Comment This message was sent by Atlassian Jira (v7.13.8#713008-sha1:1606a5c) ___ weld-issues mailing list weld-issues@lists.jboss.org https://lists.jboss.org/mailman/listinfo/weld-issues
[weld-issues] [JBoss JIRA] (WELD-2632) Allow unwrapping of a proxied object
Title: Message Title Klemen Ferjancic updated an issue Weld / WELD-2632 Allow unwrapping of a proxied object Change By: Klemen Ferjancic This is a revival of https://issues.redhat.com/browse/WELD-2245 and [https://hibernate.atlassian.net/browse/HHH-11020] for reconsideration.I am not asking for change in default behaviour but to give developer the power to override it.The setup with injected EntityManager and unwrapping the instance is quite common so I don't think it is fair to require custom workarounds for this. I understand the logic why Weld is safeguarding this to prevent escape from proxy but there are use cases like this one in JPA where you do actually want the underlying instance. I think there should be a way to tell Weld to let us do this while keeping the defaults.Something like (making this up on the fly):{color:#9e880d}@JustLetMeUnwrap{color}{color:#00}Session session {color}= em.unwrap(Session.class); ..or any developer convenient way to override the default behaviour when needed. This would also appear to be a blind spot in JPA/CDI interop at the spec level so clarification there would also be welcome. Add Comment This message was sent by Atlassian Jira (v7.13.8#713008-sha1:1606a5c)
[weld-issues] [JBoss JIRA] (WELD-2632) Allow unwrapping of a proxied object
Title: Message Title Klemen Ferjancic created an issue Weld / WELD-2632 Allow unwrapping of a proxied object Issue Type: Feature Request Assignee: Unassigned Created: 24/Jul/20 9:28 AM Priority: Minor Reporter: Klemen Ferjancic This is a revival of https://issues.redhat.com/browse/WELD-2245 and https://hibernate.atlassian.net/browse/HHH-11020 for reconsideration. I am not asking for change in default behaviour but to give developer the power to override it. The setup with injected EntityManager and unwrapping the instance is quite common so I don't think it is fair to require custom workarounds for this. I understand the logic why Weld is safeguarding this to prevent escape from proxy but there are use cases like this one in JPA where you do actually want the underlying instance. I think there should be a way to tell Weld to let us do this while keeping the defaults. Something like (making this up on the fly): @JustLetMeUnwrapSession session = em.unwrap(Session.class); ..or any developer convenient way to override the default behaviour when needed. This would also appear to be a blind spot in JPA/CDI interop at the spec level so clarification there would also be welcome. Add Comment