Dan Haywood created ISIS-780:
--------------------------------

             Summary: @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: Core
    Affects Versions: core-1.4.0
            Reporter: Dan Haywood
            Assignee: Dan Haywood
             Fix For: core-1.4.2


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
(v6.2#6252)

Reply via email to