You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Feb 26, 2023. It is now read-only.
Repository navigation
This repository was archived by the owner on Feb 26, 2023. It is now read-only.
Bean with @RootContext Activity in a singleton #674
When a bean with a field @RootContext Activity activity is injected in another bean with the singleton scope, the field is null, because by design singleton doesn't store ref to activities, in order to avoid memory leaks.
Having an activity field null leads to hard to find bugs, especially for AA beginners.
I think AA should prevent such case, by throwing an exception like IllegalStateException. If the user want to inject the activity in @RootContext, there must be a good reason for that, and so we must warn him he can't do that if the bean is injected in a signleton bean.
MySingletonBean takes the Activity and stored the ApplicationContext from it
MyBean takes the ApplicationContext and doesn't inject the context because we want an Activity
Dunno what we should do for this. Throwing an exception will be a pain in the ass if the developer needs to do this. Moreover, it'll break the API, as we just not setting the field right now.
@DayS Yes it is exactly the situation you described. I'm not sure if it's really tricky, that just happened to me multiple times (or maybe a I have strange way to use AA!)
What I really dislike in this issue is the fact that an annotated field is not injected silently. But you're right it'll break the API to throw an exception. But I don't have a better solution for now...
When a bean with a field
@RootContext Activity activityis injected in another bean with the singleton scope, the field is null, because by design singleton doesn't store ref to activities, in order to avoid memory leaks.Having an activity field null leads to hard to find bugs, especially for AA beginners.
I think AA should prevent such case, by throwing an exception like
IllegalStateException. If the user want to inject the activity in@RootContext, there must be a good reason for that, and so we must warn him he can't do that if the bean is injected in a signleton bean.WDYT?