[
https://issues.apache.org/jira/browse/WW-4827?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Aleksandr Mashchenko updated WW-4827:
-------------------------------------
Description:
This leads to issues when properties aren't injected in some cases, for example
in custom type converters.
The problem happens when {{ObjectFactory}} tries to create a bean in the same
time not being fully initialized itself (e.g. {{ConverterFactory}} injected
before {{Container}}).
The issue happens more often under linux (all the time basically) than under
windows, so it cannot be reproduced 100%. This behavior boils down to the fact
that {{clazz.getDeclaredMethods()}} is used to get methods which needs to be
injected and {{clazz.getDeclaredMethods()}} returned elements are - _The
elements in the array returned are not sorted and are not in any particular
order._
Proposed solution moves Container injection from method to constructor in
ObjectFactory -
https://github.com/aleksandr-m/struts/commit/6f91d0776a545c911ca4f2875ed9976614711ef9.
The downside is it isn't backward-compatible, custom object factories must be
updated.
was:
This leads to issues when properties aren't injected in some cases, for example
in custom type converters.
The problem happens when {{ObjectFactory}} tries to create a bean in the same
time not being fully initialized itself ({{setConverterFactory}} is called
before {{setContainer}}).
The issue happens more often under linux (all the time basically) than under
windows, so it cannot be reproduced 100%. This behavior boils down to the fact
that {{clazz.getDeclaredMethods()}} is used to get methods which needs to be
injected and {{clazz.getDeclaredMethods()}} returned elements are - _The
elements in the array returned are not sorted and are not in any particular
order._
Proposed solution moves Container injection from method to constructor in
ObjectFactory -
https://github.com/aleksandr-m/struts/commit/6f91d0776a545c911ca4f2875ed9976614711ef9.
The downside is it isn't backward-compatible, custom object factories must be
updated.
> Not fully initialized ObjectFactory tries to create beans
> ---------------------------------------------------------
>
> Key: WW-4827
> URL: https://issues.apache.org/jira/browse/WW-4827
> Project: Struts 2
> Issue Type: Bug
> Affects Versions: 2.5.12
> Reporter: Aleksandr Mashchenko
> Priority: Critical
>
> This leads to issues when properties aren't injected in some cases, for
> example in custom type converters.
> The problem happens when {{ObjectFactory}} tries to create a bean in the same
> time not being fully initialized itself (e.g. {{ConverterFactory}} injected
> before {{Container}}).
> The issue happens more often under linux (all the time basically) than under
> windows, so it cannot be reproduced 100%. This behavior boils down to the
> fact that {{clazz.getDeclaredMethods()}} is used to get methods which needs
> to be injected and {{clazz.getDeclaredMethods()}} returned elements are -
> _The elements in the array returned are not sorted and are not in any
> particular order._
> Proposed solution moves Container injection from method to constructor in
> ObjectFactory -
> https://github.com/aleksandr-m/struts/commit/6f91d0776a545c911ca4f2875ed9976614711ef9.
> The downside is it isn't backward-compatible, custom object factories must be
> updated.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)