You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Aleksandr Mashchenko (JIRA)" <ji...@apache.org> on 2017/07/27 20:24:02 UTC

[jira] [Updated] (WW-4827) Not fully initialized ObjectFactory tries to create beans

     [ 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)