Save This Page
Home » cactus-1.8.0-src » org.apache.cactus.integration.ant.util » [javadoc | source]
    1   /* 
    2    * ========================================================================
    3    * 
    4    * Copyright 2003 The Apache Software Foundation.
    5    *
    6    * Licensed under the Apache License, Version 2.0 (the "License");
    7    * you may not use this file except in compliance with the License.
    8    * You may obtain a copy of the License at
    9    * 
   10    *   http://www.apache.org/licenses/LICENSE-2.0
   11    * 
   12    * Unless required by applicable law or agreed to in writing, software
   13    * distributed under the License is distributed on an "AS IS" BASIS,
   14    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   15    * See the License for the specific language governing permissions and
   16    * limitations under the License.
   17    * 
   18    * ========================================================================
   19    */
   20   package org.apache.cactus.integration.ant.util;
   21   
   22   import org.apache.commons.logging.Log;
   23   import org.apache.tools.ant.Project;
   24   import org.apache.tools.ant.Target;
   25   import org.apache.tools.ant.Task;
   26   
   27   /**
   28    * Support class that lets classes log to Ant using the Commons Logging API. 
   29    * 
   30    * This is not intended to be a general solution, rather as a thin separation
   31    * layer to not have to pass around full-blown Ant <code>Project</code>, 
   32    * <code>Target</code> or <code>Task</code> objects just to enable logging.
   33    * 
   34    * Note that as there is no log level in Commons-Logging that corresponds to
   35    * Ant's <em>VERBOSE</em> level (the level between <em>INFO</em> and
   36    * <em>DEBUG</em>), the <em>TRACE</em> level of Commons-Logging gets mapped to
   37    * <em>VERBOSE</em>, which is probably inappropriate for components that do not
   38    * know they are using the <code>AntLog</code> class. 
   39    * 
   40    * @version $Id: AntLog.java,v 1.6 2004/02/29 10:19:57 vmassol Exp $
   41    */
   42   public final class AntLog implements Log
   43   {
   44   
   45       // Constants ---------------------------------------------------------------
   46   
   47       /**
   48        * Singleton log implementation that simply ignores all log requests.
   49        */
   50       public static final Log NULL = new Log()
   51       {
   52   
   53           // Log Implementation --------------------------------------------------
   54   
   55           /**
   56            * @see org.apache.commons.logging.Log#isFatalEnabled()
   57            */
   58           public boolean isFatalEnabled()
   59           {
   60               return false;
   61           }
   62   
   63           /**
   64            * @see org.apache.commons.logging.Log#fatal(Object)
   65            */
   66           public void fatal(Object theMessage)
   67           {
   68               // do nothing
   69           }
   70   
   71           /**
   72            * @see org.apache.commons.logging.Log#fatal(Object, Throwable)
   73            */
   74           public void fatal(Object theMessage, Throwable theThrowable)
   75           {
   76               // do nothing
   77           }
   78   
   79           /**
   80            * @see org.apache.commons.logging.Log#isErrorEnabled()
   81            */
   82           public boolean isErrorEnabled()
   83           {
   84               return false;
   85           }
   86   
   87           /**
   88            * @see org.apache.commons.logging.Log#error(Object)
   89            */
   90           public void error(Object theMessage)
   91           {
   92               // do nothing
   93           }
   94   
   95           /**
   96            * @see org.apache.commons.logging.Log#error(Object, Throwable)
   97            */
   98           public void error(Object theMessage, Throwable theThrowable)
   99           {
  100               // do nothing
  101           }
  102   
  103           /**
  104            * @see org.apache.commons.logging.Log#isWarnEnabled()
  105            */
  106           public boolean isWarnEnabled()
  107           {
  108               return false;
  109           }
  110   
  111           /**
  112            * @see org.apache.commons.logging.Log#warn(Object)
  113            */
  114           public void warn(Object theMessage)
  115           {
  116               // do nothing
  117           }
  118   
  119           /**
  120            * @see org.apache.commons.logging.Log#warn(Object, Throwable)
  121            */
  122           public void warn(Object theMessage, Throwable theThrowable)
  123           {
  124               // do nothing
  125           }
  126   
  127           /**
  128            * @see org.apache.commons.logging.Log#isInfoEnabled()
  129            */
  130           public boolean isInfoEnabled()
  131           {
  132               return false;
  133           }
  134   
  135           /**
  136            * @see org.apache.commons.logging.Log#info(Object)
  137            */
  138           public void info(Object theMessage)
  139           {
  140               // do nothing
  141           }
  142   
  143           /**
  144            * @see org.apache.commons.logging.Log#info(Object, Throwable)
  145            */
  146           public void info(Object theMessage, Throwable theThrowable)
  147           {
  148               // do nothing
  149           }
  150   
  151           /**
  152            * @see org.apache.commons.logging.Log#isDebugEnabled()
  153            */
  154           public boolean isDebugEnabled()
  155           {
  156               return false;
  157           }
  158   
  159           /**
  160            * @see org.apache.commons.logging.Log#debug(Object)
  161            */
  162           public void debug(Object theMessage)
  163           {
  164               // do nothing
  165           }
  166   
  167           /**
  168            * @see org.apache.commons.logging.Log#debug(Object, Throwable)
  169            */
  170           public void debug(Object theMessage, Throwable theThrowable)
  171           {
  172               // do nothing
  173           }
  174   
  175           /**
  176            * @see org.apache.commons.logging.Log#isTraceEnabled()
  177            */
  178           public boolean isTraceEnabled()
  179           {
  180               return false;
  181           }
  182   
  183           /**
  184            * @see org.apache.commons.logging.Log#trace(Object)
  185            */
  186           public void trace(Object theMessage)
  187           {
  188               // do nothing
  189           }
  190   
  191           /**
  192            * @see org.apache.commons.logging.Log#trace(Object, Throwable)
  193            */
  194           public void trace(Object theMessage, Throwable theThrowable)
  195           {
  196               // do nothing
  197           }
  198   
  199       };
  200   
  201       // Instance Variables ------------------------------------------------------
  202   
  203       /**
  204        * The Ant project.
  205        */
  206       private Project project;
  207   
  208       /**
  209        * The current target, or <code>null</code> if used outside of a target.
  210        */
  211       private Target target;
  212   
  213       /**
  214        * The task, or <code>null</code> if not used by a task.
  215        */
  216       private Task task;
  217   
  218       // Constructors ------------------------------------------------------------
  219   
  220       /**
  221        * Constructor.
  222        * 
  223        * @param theTask The Ant task
  224        */
  225       public AntLog(Task theTask)
  226       {
  227           this.project = theTask.getProject();
  228           this.task = theTask;
  229       }
  230   
  231       /**
  232        * Constructor.
  233        * 
  234        * @param theTarget The current target
  235        */
  236       public AntLog(Target theTarget)
  237       {
  238           this.project = theTarget.getProject();
  239           this.target = theTarget;
  240       }
  241   
  242       /**
  243        * Constructor.
  244        * 
  245        * @param theProject The Ant project
  246        */
  247       public AntLog(Project theProject)
  248       {
  249           this.project = theProject;
  250       }
  251   
  252       // Log Implementation ------------------------------------------------------
  253   
  254       /**
  255        * @see org.apache.commons.logging.Log#isFatalEnabled()
  256        */
  257       public boolean isFatalEnabled()
  258       {
  259           return true;
  260       }
  261   
  262       /**
  263        * @see org.apache.commons.logging.Log#fatal(Object)
  264        */
  265       public void fatal(Object theMessage)
  266       {
  267           log(theMessage, null, Project.MSG_ERR);
  268       }
  269   
  270       /**
  271        * @see org.apache.commons.logging.Log#fatal(Object, Throwable)
  272        */
  273       public void fatal(Object theMessage, Throwable theThrowable)
  274       {
  275           log(theMessage, theThrowable, Project.MSG_ERR);
  276       }
  277   
  278       /**
  279        * @see org.apache.commons.logging.Log#isErrorEnabled()
  280        */
  281       public boolean isErrorEnabled()
  282       {
  283           return true;
  284       }
  285   
  286       /**
  287        * @see org.apache.commons.logging.Log#error(Object)
  288        */
  289       public void error(Object theMessage)
  290       {
  291           log(theMessage, null, Project.MSG_ERR);
  292       }
  293   
  294       /**
  295        * @see org.apache.commons.logging.Log#error(Object, Throwable)
  296        */
  297       public void error(Object theMessage, Throwable theThrowable)
  298       {
  299           log(theMessage, theThrowable, Project.MSG_ERR);
  300       }
  301   
  302       /**
  303        * @see org.apache.commons.logging.Log#isWarnEnabled()
  304        */
  305       public boolean isWarnEnabled()
  306       {
  307           return true;
  308       }
  309   
  310       /**
  311        * @see org.apache.commons.logging.Log#warn(Object)
  312        */
  313       public void warn(Object theMessage)
  314       {
  315           log(theMessage, null, Project.MSG_WARN);
  316       }
  317   
  318       /**
  319        * @see org.apache.commons.logging.Log#warn(Object, Throwable)
  320        */
  321       public void warn(Object theMessage, Throwable theThrowable)
  322       {
  323           log(theMessage, theThrowable, Project.MSG_WARN);
  324       }
  325   
  326       /**
  327        * @see org.apache.commons.logging.Log#isInfoEnabled()
  328        */
  329       public boolean isInfoEnabled()
  330       {
  331           return true;
  332       }
  333   
  334       /**
  335        * @see org.apache.commons.logging.Log#info(Object)
  336        */
  337       public void info(Object theMessage)
  338       {
  339           log(theMessage, null, Project.MSG_INFO);
  340       }
  341   
  342       /**
  343        * @see org.apache.commons.logging.Log#info(Object, Throwable)
  344        */
  345       public void info(Object theMessage, Throwable theThrowable)
  346       {
  347           log(theMessage, theThrowable, Project.MSG_INFO);
  348       }
  349   
  350       /**
  351        * @see org.apache.commons.logging.Log#isDebugEnabled()
  352        */
  353       public boolean isDebugEnabled()
  354       {
  355           return true;
  356       }
  357   
  358       /**
  359        * @see org.apache.commons.logging.Log#debug(Object)
  360        */
  361       public void debug(Object theMessage)
  362       {
  363           log(theMessage, null, Project.MSG_DEBUG);
  364       }
  365   
  366       /**
  367        * @see org.apache.commons.logging.Log#debug(Object, Throwable)
  368        */
  369       public void debug(Object theMessage, Throwable theThrowable)
  370       {
  371           log(theMessage, theThrowable, Project.MSG_DEBUG);
  372       }
  373   
  374       /**
  375        * @see org.apache.commons.logging.Log#isTraceEnabled()
  376        */
  377       public boolean isTraceEnabled()
  378       {
  379           return true;
  380       }
  381   
  382       /**
  383        * @see org.apache.commons.logging.Log#trace(Object)
  384        */
  385       public void trace(Object theMessage)
  386       {
  387           log(theMessage, null, Project.MSG_VERBOSE);
  388       }
  389   
  390       /**
  391        * @see org.apache.commons.logging.Log#trace(Object, Throwable)
  392        */
  393       public void trace(Object theMessage, Throwable theThrowable)
  394       {
  395           log(theMessage, theThrowable, Project.MSG_VERBOSE);
  396       }
  397   
  398       // Private Methods ---------------------------------------------------------
  399   
  400       /**
  401        * Helper method to log to a certain Ant log level.
  402        * 
  403        * @param theMessage The log message
  404        * @param theThrowable The excecption to be logged, or <code>null</code>
  405        * @param theLogLevel The Ant log level
  406        */
  407       private void log(Object theMessage, Throwable theThrowable, int theLogLevel)
  408       {
  409           String message = String.valueOf(theMessage);
  410           if (theThrowable != null)
  411           {
  412               message += " (" + theThrowable.getMessage() + ")";
  413           }
  414           if (this.task != null)
  415           {
  416               this.project.log(this.task, message, theLogLevel);
  417           }
  418           else if (this.target != null)
  419           {
  420               this.project.log(this.target, message, theLogLevel);
  421           }
  422           else
  423           {
  424               this.project.log(message, theLogLevel);
  425           }
  426       }
  427   
  428   }

Save This Page
Home » cactus-1.8.0-src » org.apache.cactus.integration.ant.util » [javadoc | source]