rsitze      2002/10/17 16:00:04

  Modified:    logging/src/test/org/apache/commons/logging
                        AbstractLogTest.java
               logging/src/java/org/apache/commons/logging LogFactory.java
  Log:
  Bugzilla Defect 10825 [thanks for the patch & the education!]
  Added real text & exceptions to tests.. it's harder to read :-(
  
  Revision  Changes    Path
  1.3       +12 -12    
jakarta-commons/logging/src/test/org/apache/commons/logging/AbstractLogTest.java
  
  Index: AbstractLogTest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/logging/src/test/org/apache/commons/logging/AbstractLogTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AbstractLogTest.java      11 Oct 2002 05:02:59 -0000      1.2
  +++ AbstractLogTest.java      17 Oct 2002 23:00:04 -0000      1.3
  @@ -86,29 +86,29 @@
                
                assertNotNull(log);
                
  -             log.debug(null);
  +             log.debug("debug statement");
                
  -             log.debug(null, null);
  +             log.debug("debug statement w/ null exception", new RuntimeException());
                
  -             log.error(null);
  +             log.error("error statement");
                
  -             log.error(null, null);
  +             log.error("error statement w/ null exception", new RuntimeException());
                
  -             log.fatal(null);
  +             log.fatal("fatal statement");
                
  -             log.fatal(null, null);
  +             log.fatal("fatal statement w/ null exception", new RuntimeException());
                
  -             log.info(null);
  +             log.info("info statement");
                
  -             log.info(null, null);
  +             log.info("info statement w/ null exception", new RuntimeException());
                
  -             log.trace(null);
  +             log.trace("trace statement");
                
  -             log.trace(null, null);
  +             log.trace("trace statement w/ null exception", new RuntimeException());
                
  -             log.warn(null);
  +             log.warn("warn statement");
                
  -             log.warn(null, null);
  +             log.warn("warn statement w/ null exception", new RuntimeException());
                
        }    
   }
  
  
  
  1.13      +27 -22    
jakarta-commons/logging/src/java/org/apache/commons/logging/LogFactory.java
  
  Index: LogFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/logging/src/java/org/apache/commons/logging/LogFactory.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- LogFactory.java   30 Aug 2002 03:23:34 -0000      1.12
  +++ LogFactory.java   17 Oct 2002 23:00:04 -0000      1.13
  @@ -534,29 +534,34 @@
       {
           
           try {
  -            if (classLoader == null)
  -                classLoader = LogFactory.class.getClassLoader();
  -
               Class clazz = null;
  -            try {
  -                // first the thread class loader
  -                clazz = classLoader.loadClass(factoryClass);
  -            } catch (ClassNotFoundException ex) {
  -                // if this failed (i.e. no implementation is
  -                // found in the webapp), try the caller's loader
  -                // if we haven't already...
  -                if (classLoader != LogFactory.class.getClassLoader()) {
  -                    classLoader = LogFactory.class.getClassLoader();
  -                    clazz = classLoader.loadClass(factoryClass);
  +            if (classLoader != null) {
  +                try {
  +                    // first the given class loader param (thread class loader)
  +                    return 
(LogFactory)classLoader.loadClass(factoryClass).newInstance();
  +                } catch (ClassNotFoundException ex) {
  +                    if (classLoader == LogFactory.class.getClassLoader()) {
  +                        // Nothing more to try, onwards.
  +                        throw ex;
  +                    }
  +                    // ignore exception, continue
                   }
               }
  -            
  -            LogFactory factory = (LogFactory)clazz.newInstance();
  -            
  -            return factory;
  +
  +            /* At this point, either classLoader == null, OR
  +             * classLoader was unable to load factoryClass..
  +             * try the class loader that loaded this class:
  +             * LogFactory.getClassLoader().
  +             * 
  +             * Notes:
  +             * a) LogFactory.class.getClassLoader() may return 'null'
  +             *    if LogFactory is loaded by the bootstrap classloader.
  +             * b) The Java endorsed library mechanism is instead
  +             *    Class.forName(factoryClass);
  +             */
  +            return (LogFactory)Class.forName(factoryClass).newInstance();
           } catch (Exception e) {
               throw new LogConfigurationException(e);
           }
  -
       }
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>

Reply via email to