[jbossts-issues] [JBoss JIRA] Closed: (JBTM-641) com.arjuna.common.util.logging.LogFactory#loadFactory does not handle properly null argument

Jonathan Halliday (JIRA) jira-events at lists.jboss.org
Tue Nov 24 07:15:29 EST 2009


     [ https://jira.jboss.org/jira/browse/JBTM-641?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Halliday closed JBTM-641.
----------------------------------

    Resolution: Done


> com.arjuna.common.util.logging.LogFactory#loadFactory does not handle properly null argument
> --------------------------------------------------------------------------------------------
>
>                 Key: JBTM-641
>                 URL: https://jira.jboss.org/jira/browse/JBTM-641
>             Project: JBoss Transaction Manager
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: JTS
>    Affects Versions: 4.8.0
>         Environment: standalone (J2SE) use of   jbossts-jta-4.8.0.GA.zip
>            Reporter: Jacques-Olivier Goussard
>            Assignee: Jonathan Halliday
>             Fix For: 4.9.0
>
>
> com.arjuna.common.util.logging.LogFactory#setupLogSystem makes calls to 
> com.arjuna.common.util.logging.LogFactory#loadFactory("com.arjuna.common.internal.util.logging.jakarta.JakartaLogFactory", null) when the jakarta log system is selected.
> When the logger class name argument is nullm the loadfactory will try to instanciate the "com.arjuna.common.internal.util.logging.jakarta.JakartaLogFactory" class with a no-arg constructor and this class does NOT have a 
> no-arg ctor.
>     private static LogFactoryInterface loadFactory(String classname, String arg) throws LogConfigurationException
>     {
>         try {
>             Class factoryClass = Thread.currentThread().getContextClassLoader().loadClass(classname);
>             LogFactoryInterface logFactoryInterface = null;
>             if(arg == null) {
>           // THIS WILL FAIL AS "com.arjuna.common.internal.util.logging.jakarta.JakartaLogFactory" AS NO SUCH CTOR
>                 logFactoryInterface = (LogFactoryInterface)factoryClass.newInstance();
>             } else {
>                 Constructor ctor = factoryClass.getConstructor(new Class[] { String.class});
>                 logFactoryInterface = (LogFactoryInterface)ctor.newInstance(arg);
>             }
>             return logFactoryInterface;
>         } catch (Exception e) {
>             throw new LogConfigurationException(e);
>         }
>     }
> Proposed fix: The fix is to simply always forward the argument to the String arg ctor - with a null arg, the JakartaLogFactory will properly
> use the default logger from commons.logging
>     private static LogFactoryInterface loadFactory(String classname, String arg) throws LogConfigurationException
>     {
>         try {
>             Class factoryClass = Thread.currentThread().getContextClassLoader().loadClass(classname);
>             LogFactoryInterface logFactoryInterface = null;
>             Constructor ctor = factoryClass.getConstructor(new Class[] { String.class});
>             logFactoryInterface = (LogFactoryInterface)ctor.newInstance(arg);
>             return logFactoryInterface;
>         } catch (Exception e) {
>             throw new LogConfigurationException(e);
>         }
>     }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jbossts-issues mailing list