vmassol     01/06/18 13:23:36

  Modified:    cactus/conf/sample/build/servlet22 build.properties.sample
               cactus/conf/sample/build/servlet23 build.properties.sample
               cactus/conf/sample/build/share build-share.xml
               cactus/docs/framework/xdocs changes.xml
               cactus/src/framework/share/org/apache/commons/cactus/util/log
                        BaseLog.java Log.java LogService.java
  Added:       cactus/src/framework/share/org/apache/commons/cactus/util/log
                        BaseLogDummy.java
  Log:
  make it so that Log4j is only mandatory for building Cactus from the source and 
optional for end users. If they dont provide a log4j jar file then no log will be 
generated by everything else will run fine
  
  Revision  Changes    Path
  1.5       +8 -1      
jakarta-commons/cactus/conf/sample/build/servlet22/build.properties.sample
  
  Index: build.properties.sample
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/cactus/conf/sample/build/servlet22/build.properties.sample,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- build.properties.sample   2001/06/18 12:53:34     1.4
  +++ build.properties.sample   2001/06/18 20:23:05     1.5
  @@ -6,7 +6,14 @@
   cactus.jar = ../lib/commons-cactus.jar
   cactus.ant.jar = ../lib/commons-cactus-ant.jar
   junit.jar = f:/applis/jakarta-ant-1.4alpha/lib/junit.jar
  -log4j.jar = ../lib/log4j-core.jar
  +
  +# You have 2 options. Define a property named "log4j.jar" and point it to the
  +# log4j jar file. In that case, Cactus will generate log files (named
  +# cactus_server.log and cactus_client.log). the second option is not to define
  +# a "log4j.jar" property and not provide the log4j jar. In that case nothing
  +# will be logged but everything will still run.
  +
  +#log4j.jar = ../lib/log4j-core.jar
   
   # Servlet engine locations for the tests
   
  
  
  
  1.4       +8 -1      
jakarta-commons/cactus/conf/sample/build/servlet23/build.properties.sample
  
  Index: build.properties.sample
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/cactus/conf/sample/build/servlet23/build.properties.sample,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- build.properties.sample   2001/06/17 13:33:28     1.3
  +++ build.properties.sample   2001/06/18 20:23:13     1.4
  @@ -6,7 +6,14 @@
   cactus.jar = ../lib/commons-cactus.jar
   cactus.ant.jar = ../lib/commons-cactus-ant.jar
   junit.jar = f:/applis/jakarta-ant-1.4alpha/lib/junit.jar
  -log4j.jar = ../lib/log4j-core.jar
  +
  +# You have 2 options. Define a property named "log4j.jar" and point it to the
  +# log4j jar file. In that case, Cactus will generate log files (named
  +# cactus_server.log and cactus_client.log). the second option is not to define
  +# a "log4j.jar" property and not provide the log4j jar. In that case nothing
  +# will be logged but everything will still run.
  +
  +#log4j.jar = ../lib/log4j-core.jar
   
   # Servlet engine locations for the tests
   
  
  
  
  1.3       +0 -1      jakarta-commons/cactus/conf/sample/build/share/build-share.xml
  
  Index: build-share.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/cactus/conf/sample/build/share/build-share.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- build-share.xml   2001/06/18 08:17:34     1.2
  +++ build-share.xml   2001/06/18 20:23:18     1.3
  @@ -117,7 +117,6 @@
           <echo message="servlet.jar = ${servlet.jar}"/>
           <echo message="cactus.jar = ${cactus.jar}"/>
           <echo message="junit.jar = ${junit.jar}"/>
  -        <echo message="log4j.jar = ${log4j.jar}"/>
           <echo message="cactus.ant.jar = ${cactus.ant.jar}"/>
   
           <!-- Filters -->
  
  
  
  1.22      +4 -3      jakarta-commons/cactus/docs/framework/xdocs/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/cactus/docs/framework/xdocs/changes.xml,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- changes.xml       2001/06/18 19:31:26     1.21
  +++ changes.xml       2001/06/18 20:23:23     1.22
  @@ -35,9 +35,10 @@
         </action>
         <action dev="VMA" type="add">
           Added logging facility to Cactus, using the Log4j logging framework.
  -        Note that according to the result of the message I posted on
  -        <code>jakarta-commons</code>, this function may be deleted or
  -        implemented differently in the 1.2 version of Cactus.
  +        In order to make it easy on end users, Log4j is only required when
  +        building Cactus from the sources. It is however optional when running
  +        Cactus tests. If the log4j jar is present logs will be generated and if
  +        not, then no log will be generated.
         </action>
         <action dev="VMA" type="fix" due-to="Bob Davison" 
due-to-email="[EMAIL PROTECTED]">
           (<link href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1612";>
  
  
  
  1.2       +0 -14     
jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/util/log/BaseLog.java
  
  Index: BaseLog.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/util/log/BaseLog.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BaseLog.java      2001/06/17 13:40:42     1.1
  +++ BaseLog.java      2001/06/18 20:23:28     1.2
  @@ -56,7 +56,6 @@
   import java.util.*;
   
   import org.apache.log4j.Category;
  -import org.apache.log4j.Appender;
   
   /**
    * Wrapper around the Log4j <code>Category</code> class. A category is
  @@ -204,17 +203,4 @@
           return category.isDebugEnabled();
       }
   
  -    /**
  -     * Special method that returns the Log4j root <code>Appender</code>. This
  -     * method is useful for unit testing, where you can define a test
  -     * <code>Appender</code> and use it to verify the result of a log.
  -     *
  -     * @param theAppenderName the name of the <code>Appender</code> to return.
  -     *        It is the name defined in the log properties file.
  -     * @return the root appender or null if not found
  -     */
  -    public Appender getRootAppender(String theAppenderName)
  -    {
  -        return category.getRoot().getAppender(theAppenderName);
  -    }
   }
  
  
  
  1.2       +0 -2      
jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/util/log/Log.java
  
  Index: Log.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/util/log/Log.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Log.java  2001/06/17 13:40:42     1.1
  +++ Log.java  2001/06/18 20:23:29     1.2
  @@ -53,8 +53,6 @@
    */
   package org.apache.commons.cactus.util.log;
   
  -import org.apache.log4j.Category;
  -
   /**
    * Interface for logging implementation classes
    */
  
  
  
  1.2       +26 -2     
jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/util/log/LogService.java
  
  Index: LogService.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/util/log/LogService.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LogService.java   2001/06/17 13:40:42     1.1
  +++ LogService.java   2001/06/18 20:23:30     1.2
  @@ -76,6 +76,11 @@
       private boolean isInitialized = false;
   
       /**
  +     * Is Log4j in the classpath ?
  +     */
  +    private boolean isLog4jInClasspath = false;
  +
  +    /**
        * The singleton's unique instance
        */
       private static LogService instance;
  @@ -85,6 +90,16 @@
        */
       private LogService()
       {
  +        // Check if Log4j is in the classpath. If not, use a dummy
  +        // implementation that does nothing. This is to make it easy on user
  +        // who do not want to have to download log4j and put it in their
  +        // classpath !
  +        isLog4jInClasspath = true;
  +        try {
  +            Class aClass = Class.forName("org.apache.log4j.PropertyConfigurator");
  +        } catch (ClassNotFoundException e) {
  +            isLog4jInClasspath = false;
  +        }
       }
   
       /**
  @@ -107,8 +122,12 @@
       public void init(String theFileName)
       {
           URL url = LogService.class.getResource(theFileName);
  -        PropertyConfigurator.configure(url);
   
  +        if (isLog4jInClasspath) {
  +            // Initialize Log4j
  +            PropertyConfigurator.configure(url);
  +        }
  +
           isInitialized = true;
       }
   
  @@ -128,8 +147,13 @@
           Log log = (Log)logCategories.get(theCategoryName);
   
           if (log == null) {
  +
  +            if (isLog4jInClasspath) {
  +                log = new BaseLog(theCategoryName);
  +            } else {
  +                log = new BaseLogDummy(theCategoryName);
  +            }
   
  -            log = new BaseLog(theCategoryName);
               logCategories.put(theCategoryName, log);
   
           }
  
  
  
  1.1                  
jakarta-commons/cactus/src/framework/share/org/apache/commons/cactus/util/log/BaseLogDummy.java
  
  Index: BaseLogDummy.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Ant", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.commons.cactus.util.log;
  
  import java.util.*;
  
  /**
   * Dummy class that logs nothing.
   */
  public class BaseLogDummy implements Log
  {
      /**
       * @param theCategoryName the category's name. Usually, it is the full
       *        name of the class being logged, including the package name
       */
      public BaseLogDummy(String theCategoryName)
      {
      }
  
      /**
       * Log a DEBUG level message.
       *
       * @param theMessage the message to log
       */
      public void debug(String theMessage)
      {
      }
  
      /**
       * Log a DEBUG level message along with an exception
       *
       * @param theMessage the message to log
       * @param theThrowable the exception to log
       */
      public void debug(String theMessage, Throwable theThrowable)
      {
      }
  
      /**
       * Log an ERROR level message.
       *
       * @param theMessage the message to log
       */
      public void error(String theMessage)
      {
      }
  
      /**
       * Log an ERROR level message along with an exception
       *
       * @param theMessage the message to log
       * @param theThrowable the exception to log
       */
      public void error(String theMessage, Throwable theThrowable)
      {
      }
  
      /**
       * Log an ERROR level exception only
       *
       * @param theMessage the message to log
       * @param theThrowable the exception to log
       */
      public void error(Throwable theThrowable)
      {
      }
  
      /**
       * Log an INFO level message.
       *
       * @param theMessage the message to log
       */
      public void info(String theMessage)
      {
      }
  
      /**
       * Log an INFO level message along with an exception
       *
       * @param theMessage the message to log
       * @param theThrowable the exception to log
       */
      public void info(String theMessage, Throwable theThrowable)
      {
      }
  
      /**
       * Log a WARNING level message.
       *
       * @param theMessage the message to log
       */
      public void warn(String theMessage)
      {
      }
  
      /**
       * Log a WARNING level message along with an exception
       *
       * @param theMessage the message to log
       * @param theThrowable the exception to log
       */
      public void warn(String theMessage, Throwable theThrowable)
      {
      }
  
      /**
       * Used to log a message when entering a method.
       *
       * @param theMessage the message to log
       */
      public void entry(String theMessage)
      {
      }
  
      /**
       * Used to log a message when exiting a method.
       *
       * @param theMessage the message to log
       */
      public void exit(String theMessage)
      {
      }
  
      /**
       * @return true if the Log4j priority level is debugging
       */
      public boolean isDebugEnabled()
      {
          return false;
      }
  
  }
  
  
  

Reply via email to