cziegeler    02/02/05 03:39:30

  Modified:    .        changes.xml
               src/java/org/apache/cocoon/transformation
                        LogTransformer.java
  Log:
  Minor rewrite of LogTransformer
  
  Revision  Changes    Path
  1.101     +5 -1      xml-cocoon2/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/changes.xml,v
  retrieving revision 1.100
  retrieving revision 1.101
  diff -u -r1.100 -r1.101
  --- changes.xml       5 Feb 2002 11:12:12 -0000       1.100
  +++ changes.xml       5 Feb 2002 11:39:29 -0000       1.101
  @@ -4,7 +4,7 @@
   
   <!--
     History of Cocoon changes
  -  $Id: changes.xml,v 1.100 2002/02/05 11:12:12 cziegeler Exp $
  +  $Id: changes.xml,v 1.101 2002/02/05 11:39:29 cziegeler Exp $
   -->
   
   <changes title="History of Changes">
  @@ -31,6 +31,10 @@
    </devs>
   
    <release version="@version@" date="@date@">
  +  <action dev="CZ" type="update">
  +    Minor rewrite of the LogTransformer. The logfile is now resolved using
  +    the standard source resolver. The component is now recycled properly.
  +  </action>
     <action dev="CZ" type="update">
       Minor rewrite of the SQLTransformer. Removed several parameters tests
       and the use of Properties objects - instead the Parameters object
  
  
  
  1.5       +80 -76    
xml-cocoon2/src/java/org/apache/cocoon/transformation/LogTransformer.java
  
  Index: LogTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/transformation/LogTransformer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LogTransformer.java       4 Feb 2002 14:08:34 -0000       1.4
  +++ LogTransformer.java       5 Feb 2002 11:39:30 -0000       1.5
  @@ -54,9 +54,9 @@
    */
   package org.apache.cocoon.transformation;
   
  -import org.apache.avalon.excalibur.pool.Poolable;
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.cocoon.ProcessingException;
  +import org.apache.cocoon.environment.Source;
   import org.apache.cocoon.environment.SourceResolver;
   import org.xml.sax.Attributes;
   import org.xml.sax.Locator;
  @@ -89,66 +89,73 @@
    * <br>
    * This transformations main purpose is debugging.
    *
  + * @author <a href="mailto:[EMAIL PROTECTED]";>Carsten Ziegeler</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Giacomo Pati</a>
    *         (PWR Organisation &amp; Entwicklung)
  - * @version CVS $Id: LogTransformer.java,v 1.4 2002/02/04 14:08:34 cziegeler Exp $
  + * @version CVS $Id: LogTransformer.java,v 1.5 2002/02/05 11:39:30 cziegeler Exp $
    *
    */
  -public class LogTransformer extends AbstractTransformer implements Poolable {
  -    /** Wether we are forwarding XML data or not. */
  -    private boolean canReset=true;
  -
  -    private String lf = System.getProperty("line.separator", "\n");
  -
  -    /** true if filename is valid and writeable */
  -    private boolean isValid = true;
  -    /** filename for log file */
  -    private String logfilename = null;
  -    /** log file */
  -    private FileWriter logfile = null;
  -    /** should we append content to the log file */
  -    private boolean append = false;
  +public class LogTransformer
  +  extends AbstractTransformer {
  +
  +    private static String lf = System.getProperty("line.separator", "\n");
   
  -    /** BEGIN SitemapComponent methods **/
  +    /** log file */
  +    private FileWriter logfile;
   
  +    /**
  +     * Setup
  +     */
       public void setup(SourceResolver resolver, Map objectModel,
  -                      String source, Parameters parameters)
  -            throws ProcessingException, SAXException, IOException {
  -        if (logfile == null) {
  -            String appends = parameters.getParameter("append", null);
  -            logfilename = parameters.getParameter("logfile", null);
  -            if ("yes".equals(appends)) {
  -                append = true;
  -            } else {
  -                append = false;
  -            }
  +                      String src, Parameters parameters)
  +    throws ProcessingException, SAXException, IOException {
  +        final boolean append = parameters.getParameterAsBoolean("append", false);
  +        final String  logfilename = parameters.getParameter("logfile", null);
  +
  +        // Check for null, use System.out if logfile is not specified.
  +        if ( null != logfilename ) {
  +            Source source = null;
               try {
  -                // Check for null, use System.out if logfile is not specified.
  -                if(logfilename != null)
  -                    logfile = new FileWriter(logfilename, append );
  -                else
  -                    logfile = new FileWriter(java.io.FileDescriptor.out);
  -            } catch (IOException e) {
  -                getLogger().debug("LogTransformer", e);
  -                isValid = false;
  -                throw e;
  +                source = resolver.resolve( logfilename );
  +                final String systemId = source.getSystemId();
  +                if ( systemId.startsWith("file:") ) {
  +                    this.logfile = new FileWriter(systemId.substring(5), append );
  +                } else {
  +                    throw new ProcessingException("The logfile parameter must point 
to a file: " + logfilename);
  +                }
  +            } finally {
  +                if (source != null) source.recycle();
               }
  +        } else {
  +            this.logfile = new FileWriter(java.io.FileDescriptor.out);
           }
  +
           Date date = new Date();
           StringBuffer logEntry = new StringBuffer();
           logEntry.append ( "---------------------------- [" );
           logEntry.append ( date.toString() );
           logEntry.append ( "] ----------------------------" );
  -        log("setup", logEntry.toString());
  +        this.log("setup", logEntry.toString());
       }
   
  -    /** END SitemapComponent methods **/
  +    /**
  +     * Recycle
  +     */
  +    public void recycle() {
  +        super.recycle();
  +        try {
  +            if (this.logfile != null) logfile.close();
  +        } catch (Exception e) {
  +            this.getLogger().debug("LogTransformer.recycle()", e);
  +        }
  +        this.logfile = null;
  +    }
   
       /**
        * Receive an object for locating the origin of SAX document events.
        */
       public void setDocumentLocator(Locator locator) {
  -        log("setDocumentLocator","");
  +        this.log("setDocumentLocator","");
           if (super.contentHandler!=null) {
               super.contentHandler.setDocumentLocator(locator);
           }
  @@ -159,12 +166,10 @@
        */
       public void startDocument()
       throws SAXException {
  -        log("startDocument", "");
  +        this.log("startDocument", "");
           if (super.contentHandler!=null) {
               super.contentHandler.startDocument();
           }
  -
  -        this.canReset=false;
       }
   
       /**
  @@ -172,12 +177,10 @@
        */
       public void endDocument()
       throws SAXException {
  -        log ("endDocument", "");
  +        this.log ("endDocument", "");
           if (super.contentHandler!=null) {
               super.contentHandler.endDocument();
           }
  -
  -        this.canReset=true;
       }
   
       /**
  @@ -185,7 +188,7 @@
        */
       public void startPrefixMapping(String prefix, String uri)
       throws SAXException {
  -        log ("startPrefixMapping", "prefix="+prefix+",uri="+uri);
  +        this.log ("startPrefixMapping", "prefix="+prefix+",uri="+uri);
           if (super.contentHandler!=null) {
               super.contentHandler.startPrefixMapping(prefix,uri);
           }
  @@ -196,7 +199,7 @@
        */
       public void endPrefixMapping(String prefix)
       throws SAXException {
  -        log ("endPrefixMapping", "prefix="+prefix);
  +        this.log ("endPrefixMapping", "prefix="+prefix);
           if (super.contentHandler!=null) {
               super.contentHandler.endPrefixMapping(prefix);
           }
  @@ -207,9 +210,9 @@
        */
       public void startElement(String uri, String loc, String raw, Attributes a)
       throws SAXException {
  -        log ("startElement", "uri="+uri+",local="+loc+",raw="+raw);
  +        this.log ("startElement", "uri="+uri+",local="+loc+",raw="+raw);
           for (int i = 0; i < a.getLength(); i++) {
  -            log ("            ", new Integer(i+1).toString()
  +            this.log ("            ", new Integer(i+1).toString()
                    +". uri="+a.getURI(i)
                    +",local="+a.getLocalName(i)
                    +",qname="+a.getQName(i)
  @@ -227,7 +230,7 @@
        */
       public void endElement(String uri, String loc, String qname)
       throws SAXException {
  -        log ("endElement", "uri="+uri+",local="+loc+",qname="+qname);
  +        this.log ("endElement", "uri="+uri+",local="+loc+",qname="+qname);
           if (super.contentHandler!=null) {
               super.contentHandler.endElement(uri,loc,qname);
           }
  @@ -238,7 +241,7 @@
        */
       public void characters(char ch[], int start, int len)
       throws SAXException {
  -        log ("characters", new String(ch,start,len));
  +        this.log ("characters", new String(ch,start,len));
           if (super.contentHandler!=null) {
               super.contentHandler.characters(ch,start,len);
           }
  @@ -249,7 +252,7 @@
        */
       public void ignorableWhitespace(char ch[], int start, int len)
       throws SAXException {
  -        log ("ignorableWhitespace", new String(ch,start,len));
  +        this.log ("ignorableWhitespace", new String(ch,start,len));
           if (super.contentHandler!=null) {
               super.contentHandler.ignorableWhitespace(ch,start,len);
           }
  @@ -271,7 +274,7 @@
        */
       public void skippedEntity(String name)
       throws SAXException {
  -        log ("skippedEntity", "name="+name);
  +        this.log ("skippedEntity", "name="+name);
           if (super.contentHandler!=null) {
               super.contentHandler.skippedEntity(name);
           }
  @@ -282,7 +285,7 @@
        */
       public void startDTD(String name, String publicId, String systemId)
       throws SAXException {
  -        log ("startDTD", "name="+name+",publicId="+publicId+",systemId="+systemId);
  +        this.log ("startDTD", 
"name="+name+",publicId="+publicId+",systemId="+systemId);
           if (super.lexicalHandler!=null) {
               super.lexicalHandler.startDTD(name,publicId,systemId);
           }
  @@ -293,7 +296,7 @@
        */
       public void endDTD()
       throws SAXException {
  -        log ("endDTD", "");
  +        this.log ("endDTD", "");
           if (super.lexicalHandler!=null) {
               super.lexicalHandler.endDTD();
           }
  @@ -304,7 +307,7 @@
        */
       public void startEntity(String name)
       throws SAXException {
  -        log ("startEntity", "name="+name);
  +        this.log ("startEntity", "name="+name);
           if (super.lexicalHandler!=null) {
               super.lexicalHandler.startEntity(name);
           }
  @@ -315,7 +318,7 @@
        */
       public void endEntity(String name)
       throws SAXException {
  -        log ("endEntity", "name="+name);
  +        this.log ("endEntity", "name="+name);
           if (super.lexicalHandler!=null) {
               super.lexicalHandler.endEntity(name);
           }
  @@ -326,7 +329,7 @@
        */
       public void startCDATA()
       throws SAXException {
  -        log ("startCDATA", "");
  +        this.log ("startCDATA", "");
           if (super.lexicalHandler!=null) {
               super.lexicalHandler.startCDATA();
           }
  @@ -337,7 +340,7 @@
        */
       public void endCDATA()
       throws SAXException {
  -        log ("endCDATA", "");
  +        this.log ("endCDATA", "");
           if (super.lexicalHandler!=null) {
               super.lexicalHandler.endCDATA();
           }
  @@ -348,7 +351,7 @@
        */
       public void comment(char ch[], int start, int len)
       throws SAXException {
  -        log ("comment", new String(ch,start,len));
  +        this.log ("comment", new String(ch,start,len));
           if (super.lexicalHandler!=null) {
               super.lexicalHandler.comment(ch,start,len);
           }
  @@ -358,21 +361,22 @@
        * Report to logfile.
        */
       private void log (String location, String description) {
  -        if (isValid) {
  -            StringBuffer logEntry = new StringBuffer();
  -            logEntry.append ( "[" );
  -            logEntry.append ( location );
  -            logEntry.append ( "] " );
  -            logEntry.append ( description );
  -            logEntry.append ( lf );
  -            getLogger().info(logEntry.toString());
  -            synchronized (logfile) {
  -                try {
  -                    logfile.write( logEntry.toString(), 0, logEntry.length());
  -                    logfile.flush();
  -                }
  -                catch(IOException ioe) { getLogger().debug("LogTransformer.log", 
ioe); }
  -            }
  +        StringBuffer logEntry = new StringBuffer();
  +        logEntry.append ( "[" );
  +        logEntry.append ( location );
  +        logEntry.append ( "] " );
  +        logEntry.append ( description );
  +        logEntry.append ( lf );
  +        final String text = logEntry.toString();
  +        if ( this.getLogger().isInfoEnabled() ) {
  +            getLogger().info( text );
  +        }
  +        try {
  +            logfile.write( text, 0, text.length());
  +            logfile.flush();
  +        }
  +        catch(IOException ioe) {
  +            this.getLogger().debug("LogTransformer.log", ioe);
           }
       }
   
  @@ -381,7 +385,7 @@
        */
       public void destroy() {
           try {
  -            logfile.close();
  +            if (this.logfile != null) logfile.close();
           } catch (Exception e) {getLogger().debug("LogTransformer.destroy()", e);}
       }
   }
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to