Aleksandr Mashchenko created WW-4827:
----------------------------------------
Summary: 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 ({{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.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
|