You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Daniel Keir Haywood (Jira)" <ji...@apache.org> on 2020/03/19 14:20:00 UTC

[jira] [Assigned] (ISIS-780) @Inject on field and @RequestScoped are incompatible - use a MetaModelValidator to detect

     [ https://issues.apache.org/jira/browse/ISIS-780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Keir Haywood reassigned ISIS-780:
----------------------------------------

    Fix Version/s:     (was: 2.3.0)
                   2.0.0-M3
         Assignee: Daniel Keir Haywood

Addressed by moving to Spring Boot

> @Inject on field and @RequestScoped are incompatible - use a MetaModelValidator to detect
> -----------------------------------------------------------------------------------------
>
>                 Key: ISIS-780
>                 URL: https://issues.apache.org/jira/browse/ISIS-780
>             Project: Isis
>          Issue Type: Improvement
>          Components: Isis Core
>    Affects Versions: core-1.4.0
>            Reporter: Daniel Keir Haywood
>            Assignee: Daniel Keir Haywood
>            Priority: Major
>             Fix For: 2.0.0-M3
>
>
> Our support for @RequestScoped annotation is home-grown; we create a Javassist proxy for the service, which then delegates to dynamically created instances of the actual service bound on a thread-local.
> The Javassist proxy automatically forwards all method calls to the underlying service for the current thread.  
> If the request-scoped service has other services injected into it via methods (ie setXxx(...) or injectXxx(...), then these method calls are forwarded just like any other, and everything works fine.
> However, if the request-scoped service has its other services injected via a field annotated with @RequestScoped, then the service will be injected into the Javassist proxy and the underlying service will get a null pointer.
> One day we might replace our home-grown injection with a more sophisticated third-party library (eg a CDI impl?) that can handle the above.  But until such time, as a workaround we should fail-fast: detect the situation and through an exception on start-up.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)