struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <>
Subject [jira] [Commented] (WW-4827) Not fully initialized ObjectFactory tries to create beans
Date Tue, 01 Aug 2017 17:08:00 GMT


ASF GitHub Bot commented on WW-4827:

Github user aleksandr-m commented on the issue:
    Nope, #155 doesn't seem have any effect.
    Add following files to project, run under *nix, execute some action which lead to the
JSP,  `localizedTextProvider` should not be `null` in system outs. ;
        <s:bean var="d" name="java.util.Date" />
        <s:property value="#d" />
    public class DateConverter extends StrutsTypeConverter {
        private LocalizedTextProvider localizedTextProvider;
        public void setLocalizedTextProvider(LocalizedTextProvider localizedTextProvider)
            this.localizedTextProvider = localizedTextProvider;
        public Object convertFromString(Map context, String[] values, Class toClass) {
            System.out.println("DateConverter.convertFromString() localizedTextProvider="
            return null;
        public String convertToString(Map context, Object obj) {
            System.out.println("DateConverter.convertToString() localizedTextProvider=" +
            return "";

> Not fully initialized ObjectFactory tries to create beans
> ---------------------------------------------------------
>                 Key: WW-4827
>                 URL:
>             Project: Struts 2
>          Issue Type: Bug
>    Affects Versions: 2.5.12
>            Reporter: Aleksandr Mashchenko
>            Priority: Critical
>             Fix For: 2.5.13
> 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
> Proposed solution moves Container injection from method to constructor in ObjectFactory
> The downside is it isn't backward-compatible, custom object factories must be updated.

This message was sent by Atlassian JIRA

View raw message