Author: vgritsenko
Date: Thu May  5 11:28:46 2005
New Revision: 168368

URL: http://svn.apache.org/viewcvs?rev=168368&view=rev
Log:
AbstractSAXTransformer:
  - implement Disposable
  - group methods by interface
  - add method findPrefixMapping
Call super.recycle last.
Call super.dispose.

Modified:
    
cocoon/trunk/src/java/org/apache/cocoon/transformation/AbstractSAXTransformer.java
    
cocoon/trunk/src/java/org/apache/cocoon/transformation/CIncludeTransformer.java
    cocoon/trunk/src/java/org/apache/cocoon/transformation/JPathTransformer.java
    
cocoon/trunk/src/java/org/apache/cocoon/transformation/SimpleFormTransformer.java
    
cocoon/trunk/src/java/org/apache/cocoon/transformation/SourceWritingTransformer.java

Modified: 
cocoon/trunk/src/java/org/apache/cocoon/transformation/AbstractSAXTransformer.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/transformation/AbstractSAXTransformer.java?rev=168368&r1=168367&r2=168368&view=diff
==============================================================================
--- 
cocoon/trunk/src/java/org/apache/cocoon/transformation/AbstractSAXTransformer.java
 (original)
+++ 
cocoon/trunk/src/java/org/apache/cocoon/transformation/AbstractSAXTransformer.java
 Thu May  5 11:28:46 2005
@@ -15,15 +15,8 @@
  */
 package org.apache.cocoon.transformation;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Stack;
-
 import org.apache.avalon.excalibur.pool.Recyclable;
+import org.apache.avalon.framework.activity.Disposable;
 import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
@@ -31,9 +24,8 @@
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.avalon.framework.service.Serviceable;
+
 import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.util.ClassUtils;
-import org.apache.cocoon.util.TraxErrorHandler;
 import org.apache.cocoon.environment.Context;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
@@ -41,11 +33,14 @@
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.cocoon.transformation.helpers.ParametersRecorder;
 import org.apache.cocoon.transformation.helpers.TextRecorder;
+import org.apache.cocoon.util.ClassUtils;
+import org.apache.cocoon.util.TraxErrorHandler;
 import org.apache.cocoon.xml.IncludeXMLConsumer;
 import org.apache.cocoon.xml.SaxBuffer;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.apache.cocoon.xml.XMLUtils;
 import org.apache.cocoon.xml.dom.DOMBuilder;
+
 import org.apache.excalibur.source.SourceParameters;
 import org.apache.excalibur.xml.sax.XMLizable;
 import org.w3c.dom.Document;
@@ -57,8 +52,15 @@
 import org.xml.sax.SAXException;
 import org.xml.sax.ext.LexicalHandler;
 
-import javax.xml.transform.sax.SAXTransformerFactory;
 import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Stack;
 
 /**
  * This class is the basis for all transformers. It provides various useful
@@ -102,9 +104,8 @@
  * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  * @version $Id$
 */
-public abstract class AbstractSAXTransformer
-        extends AbstractTransformer
-        implements Serviceable, Configurable, Recyclable {
+public abstract class AbstractSAXTransformer extends AbstractTransformer
+                                             implements Serviceable, 
Configurable, Recyclable, Disposable {
 
     /**
      * Empty immutable attributes (for performance). Use them
@@ -227,6 +228,16 @@
      */
     private String ourPrefix;
 
+    //
+    // Lifecycle
+    //
+
+    /* (non-Javadoc)
+     * @see 
org.apache.avalon.framework.service.Serviceable#service(ServiceManager)
+     */
+    public void service(ServiceManager manager) throws ServiceException {
+        this.manager = manager;
+    }
 
     /* (non-Javadoc)
      * @see Configurable#configure(Configuration)
@@ -293,8 +304,6 @@
      * @see org.apache.avalon.excalibur.pool.Recyclable#recycle()
      */
     public void recycle() {
-        super.recycle();
-
         this.namespaceURI = null;
         this.objectModel = null;
         this.request = null;
@@ -307,20 +316,32 @@
         this.source = null;
         this.namespaces.clear();
         this.ourPrefix = null;
+
+        super.recycle();
     }
 
-    /* (non-Javadoc)
-     * @see 
org.apache.avalon.framework.service.Serviceable#service(ServiceManager)
+    public void dispose() {
+        this.manager = null;
+    }
+
+    //
+    // SAX ContentHandler methods
+    //
+
+    /**
+     * Process the SAX event.
+     * @see ContentHandler#setDocumentLocator
      */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
+    public void setDocumentLocator(Locator locator) {
+        if (this.ignoreEventsCount == 0) {
+            super.setDocumentLocator(locator);
+        }
     }
 
     /**
-     *  Process the SAX event. A new document is processed. The hook (method)
-     *  <code>setupTransforming()</code> is invoked.
-     *
-     *  @see org.xml.sax.ContentHandler#startDocument()
+     * Process the SAX event. A new document is processed. The hook method
+     * [EMAIL PROTECTED] #setupTransforming} is invoked.
+     * @see ContentHandler#startDocument
      */
     public void startDocument()
     throws SAXException {
@@ -341,8 +362,8 @@
     }
 
     /**
-     *  Process the SAX event. The processing of the document is finished.
-     *  @see org.xml.sax.ContentHandler#endDocument()
+     * Process the SAX event. The processing of the document is finished.
+     * @see org.xml.sax.ContentHandler#endDocument
      */
     public void endDocument()
     throws SAXException {
@@ -353,8 +374,68 @@
 
     /**
      * Process the SAX event.
-     * The namespace of the event is checked. If it is the defined namespace
-     * for this transformer the startTransformingElement() hook is called.
+     * @see org.xml.sax.ContentHandler#startPrefixMapping
+     */
+    public void startPrefixMapping(String prefix, String uri)
+    throws SAXException {
+        if (prefix != null) {
+            this.namespaces.add(new String[] {prefix, uri});
+        }
+        if (namespaceURI.equals(uri)) {
+            this.ourPrefix = prefix;
+        }
+        if (this.ignoreEventsCount == 0) {
+            super.startPrefixMapping(prefix, uri);
+        }
+    }
+
+    /**
+     * Process the SAX event.
+     * @see org.xml.sax.ContentHandler#endPrefixMapping
+     */
+    public void endPrefixMapping(String prefix)
+    throws SAXException {
+
+        if (prefix != null) {
+            // Find and remove the namespace prefix
+            boolean found = false;
+            for (int i = this.namespaces.size() - 1; i >= 0; i--) {
+                final String[] prefixAndUri = (String[]) 
this.namespaces.get(i);
+                if (prefixAndUri[0].equals(prefix)) {
+                    this.namespaces.remove(i);
+                    found = true;
+                    break;
+                }
+            }
+            if (!found) {
+                throw new SAXException("Namespace for prefix '" + prefix + "' 
not found.");
+            }
+
+            if (prefix.equals(this.ourPrefix)) {
+                // Reset our current prefix
+                this.ourPrefix = null;
+
+                // Now search if we have a different prefix for our namespace
+                for (int i = this.namespaces.size() - 1; i >= 0; i--) {
+                    final String[] prefixAndUri = (String[]) 
this.namespaces.get(i);
+                    if (namespaceURI.equals(prefixAndUri[1])) {
+                        this.ourPrefix = prefixAndUri[0];
+                        break;
+                    }
+                }
+            }
+        }
+
+        if (this.ignoreEventsCount == 0) {
+            super.endPrefixMapping(prefix);
+        }
+    }
+
+    /**
+     * Process the SAX event. The namespace of the event is checked.
+     * If it is the defined namespace for this transformer,
+     * the [EMAIL PROTECTED] #startTransformingElement} hook is called.
+     * @see org.xml.sax.ContentHandler#startElement
      */
     public void startElement(String uri,
                              String name,
@@ -378,9 +459,10 @@
     }
 
     /**
-     * Process the SAX event.
-     * The namespace of the event is checked. If it is the defined namespace
-     * for this transformer the endTransformingElement() hook is called.
+     * Process the SAX event. The namespace of the event is checked.
+     * If it is the defined namespace for this transformer,
+     * the [EMAIL PROTECTED] #endTransformingElement} hook is called.
+     * @see org.xml.sax.ContentHandler#endElement
      */
     public void endElement(String uri, String name, String raw)
     throws SAXException {
@@ -402,6 +484,7 @@
 
     /**
      * Process the SAX event.
+     * @see org.xml.sax.ContentHandler#characters
      */
     public void characters(char[] p0, int p1, int p2)
     throws SAXException {
@@ -419,6 +502,7 @@
 
     /**
      * Process the SAX event.
+     * @see org.xml.sax.ContentHandler#ignorableWhitespace
      */
     public void ignorableWhitespace(char[] p0, int p1, int p2)
     throws SAXException {
@@ -427,6 +511,99 @@
         }
     }
 
+    /**
+     * Process the SAX event.
+     * @see ContentHandler#processingInstruction
+     */
+    public void processingInstruction(String target, String data)
+    throws SAXException {
+        if (this.ignoreEventsCount == 0) {
+            super.processingInstruction(target, data);
+        }
+    }
+
+    /**
+     * Process the SAX event.
+     * @see ContentHandler#skippedEntity
+     */
+    public void skippedEntity(String name)
+    throws SAXException {
+        if (this.ignoreEventsCount == 0) {
+            super.skippedEntity(name);
+        }
+    }
+
+    //
+    // SAX LexicalHandler methods
+    //
+
+    /**
+     * @see LexicalHandler#startDTD
+     */
+    public void startDTD(String name, String public_id, String system_id)
+    throws SAXException {
+        if (this.ignoreEventsCount == 0) {
+            super.startDTD(name, public_id, system_id);
+        }
+    }
+
+    /**
+     * @see LexicalHandler#endDTD
+     */
+    public void endDTD() throws SAXException {
+        if (this.ignoreEventsCount == 0) {
+            super.endDTD();
+        }
+    }
+
+    /**
+     * @see LexicalHandler#startEntity
+     */
+    public void startEntity (String name)
+    throws SAXException {
+        if (this.ignoreEventsCount == 0) {
+            super.startEntity(name);
+        }
+    }
+
+    /**
+     * @see LexicalHandler#endEntity
+     */
+    public void endEntity (String name)
+    throws SAXException {
+        if (this.ignoreEventsCount == 0) {
+            super.endEntity(name);
+        }
+    }
+
+    /**
+     * @see LexicalHandler#startCDATA
+     */
+    public void startCDATA() throws SAXException {
+        if (this.ignoreEventsCount == 0) {
+            super.startCDATA();
+        }
+    }
+
+    /**
+     * @see LexicalHandler#endCDATA
+     */
+    public void endCDATA() throws SAXException {
+        if (this.ignoreEventsCount == 0) {
+            super.endCDATA();
+        }
+    }
+
+    /**
+     * @see LexicalHandler#comment
+     */
+    public void comment(char ary[], int start, int length)
+    throws SAXException {
+        if (this.ignoreEventsCount == 0) {
+            super.comment(ary, start, length);
+        }
+    }
+
 
     /*
      * Recording of events.
@@ -678,9 +855,9 @@
         return fragment;
     }
 
-    // ************
+    //
     // Hooks
-    // ************
+    //
 
     /**
      * Setup the transformation of an xml document.
@@ -858,26 +1035,6 @@
     }
 
     /**
-     * SAX Event handling
-     */
-    public void startEntity (String name)
-    throws SAXException {
-        if (this.ignoreEventsCount == 0) {
-            super.startEntity(name);
-        }
-    }
-
-    /**
-     * SAX Event handling
-     */
-    public void endEntity (String name)
-    throws SAXException {
-        if (this.ignoreEventsCount == 0) {
-            super.endEntity(name);
-        }
-    }
-
-    /**
      * Send all start prefix mapping events to the current content handler
      */
     protected void sendStartPrefixMapping()
@@ -902,135 +1059,18 @@
     }
 
     /**
-     * SAX Event handling
-     */
-    public void setDocumentLocator(Locator locator) {
-        if (this.ignoreEventsCount == 0) {
-            super.setDocumentLocator(locator);
-        }
-    }
-
-    /**
-     * SAX Event handling
-     */
-    public void startPrefixMapping(String prefix, String uri)
-    throws SAXException {
-        if (prefix != null) {
-            this.namespaces.add(new String[] {prefix, uri});
-        }
-        if (namespaceURI.equals(uri)) {
-            this.ourPrefix = prefix;
-        }
-        if (this.ignoreEventsCount == 0) {
-            super.startPrefixMapping(prefix, uri);
-        }
-    }
-
-    /**
-     * SAX Event handling
+     * Find prefix mapping for the given namespace URI.
+     * @return Prefix mapping or null if no prefix defined
      */
-    public void endPrefixMapping(String prefix)
-    throws SAXException {
-
-        if (prefix != null) {
-            // Find and remove the namespace prefix
-            boolean found = false;
-            for (int i = this.namespaces.size() - 1; i >= 0; i--) {
-                final String[] prefixAndUri = (String[]) 
this.namespaces.get(i);
-                if (prefixAndUri[0].equals(prefix)) {
-                    this.namespaces.remove(i);
-                    found = true;
-                    break;
-                }
-            }
-            if (!found) {
-                throw new SAXException("Namespace for prefix '" + prefix + "' 
not found.");
-            }
-
-            if (prefix.equals(this.ourPrefix)) {
-                // Reset our current prefix
-                this.ourPrefix = null;
-
-                // Now search if we have a different prefix for our namespace
-                for (int i = this.namespaces.size() - 1; i >= 0; i--) {
-                    final String[] prefixAndUri = (String[]) 
this.namespaces.get(i);
-                    if (namespaceURI.equals(prefixAndUri[1])) {
-                        this.ourPrefix = prefixAndUri[0];
-                        break;
-                    }
-                }
+    protected String findPrefixMapping(String uri) {
+        final int l = this.namespaces.size();
+        for (int i = 0; i < l; i++) {
+            String[] prefixAndUri = (String[]) this.namespaces.get(i);
+            if (prefixAndUri[1].equals(uri)) {
+                return prefixAndUri[0];
             }
         }
 
-        if (this.ignoreEventsCount == 0) {
-            super.endPrefixMapping(prefix);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.xml.sax.ContentHandler#processingInstruction(java.lang.String, 
java.lang.String)
-     */
-    public void processingInstruction(String target, String data)
-    throws SAXException {
-        if (this.ignoreEventsCount == 0) {
-            super.processingInstruction(target, data);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.xml.sax.ContentHandler#skippedEntity(java.lang.String)
-     */
-    public void skippedEntity(String name)
-    throws SAXException {
-        if (this.ignoreEventsCount == 0) {
-            super.skippedEntity(name);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.xml.sax.ext.LexicalHandler#startDTD(java.lang.String, 
java.lang.String, java.lang.String)
-     */
-    public void startDTD(String name, String public_id, String system_id)
-    throws SAXException {
-        if (this.ignoreEventsCount == 0) {
-            super.startDTD(name, public_id, system_id);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.xml.sax.ext.LexicalHandler#endDTD()
-     */
-    public void endDTD() throws SAXException {
-        if (this.ignoreEventsCount == 0) {
-            super.endDTD();
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.xml.sax.ext.LexicalHandler#startCDATA()
-     */
-    public void startCDATA() throws SAXException {
-        if (this.ignoreEventsCount == 0) {
-            super.startCDATA();
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.xml.sax.ext.LexicalHandler#endCDATA()
-     */
-    public void endCDATA() throws SAXException {
-        if (this.ignoreEventsCount == 0) {
-            super.endCDATA();
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.xml.sax.ext.LexicalHandler#comment(char[], int, int)
-     */
-    public void comment(char ary[], int start, int length)
-    throws SAXException {
-        if (this.ignoreEventsCount == 0) {
-            super.comment(ary, start, length);
-        }
+        return null;
     }
 }

Modified: 
cocoon/trunk/src/java/org/apache/cocoon/transformation/CIncludeTransformer.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/transformation/CIncludeTransformer.java?rev=168368&r1=168367&r2=168368&view=diff
==============================================================================
--- 
cocoon/trunk/src/java/org/apache/cocoon/transformation/CIncludeTransformer.java 
(original)
+++ 
cocoon/trunk/src/java/org/apache/cocoon/transformation/CIncludeTransformer.java 
Thu May  5 11:28:46 2005
@@ -221,10 +221,11 @@
      * @see org.apache.avalon.framework.activity.Disposable#dispose()
      */
     public void dispose() {
-        if ( null != this.manager ) {
-            this.manager.release( this.cacheManager );
+        if (null != this.manager) {
+            this.manager.release(this.cacheManager);
             this.manager = null;
         }
+        super.dispose();
     }
 
     /**
@@ -239,7 +240,7 @@
             this.manager.release( this.recorder );
             this.recorder = null;
         }
-        super.recycle();
+
         this.configurationParameters = null;
         this.resourceParameters = null;
         if (getLogger().isDebugEnabled()) {
@@ -248,6 +249,8 @@
             this.startTime = 0;
         }
         this.filter = null;
+
+        super.recycle();
     }
 
     public void startTransformingElement(String uri, String name, String raw, 
Attributes attr)

Modified: 
cocoon/trunk/src/java/org/apache/cocoon/transformation/JPathTransformer.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/transformation/JPathTransformer.java?rev=168368&r1=168367&r2=168368&view=diff
==============================================================================
--- 
cocoon/trunk/src/java/org/apache/cocoon/transformation/JPathTransformer.java 
(original)
+++ 
cocoon/trunk/src/java/org/apache/cocoon/transformation/JPathTransformer.java 
Thu May  5 11:28:46 2005
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-2005 The Apache Software Foundation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -54,10 +54,10 @@
  * </p>
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Marcus Crafter</a>
- * @version CVS $Id$
+ * @version $Id$
  */
-public class JPathTransformer
-extends AbstractSAXTransformer implements Initializable {
+public class JPathTransformer extends AbstractSAXTransformer
+                              implements Initializable {
 
     /** namespace constant */
     public static final String JPATH_NAMESPACE_URI  = 
"http://apache.org/xsp/jpath/1.0";;
@@ -366,10 +366,10 @@
      * Release all held resources.
      */
     public void recycle() {
-        super.recycle();
-
         m_cache.clear();
         m_kont = null;
         m_jxpathContext = null;
+
+        super.recycle();
     }
 }

Modified: 
cocoon/trunk/src/java/org/apache/cocoon/transformation/SimpleFormTransformer.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/transformation/SimpleFormTransformer.java?rev=168368&r1=168367&r2=168368&view=diff
==============================================================================
--- 
cocoon/trunk/src/java/org/apache/cocoon/transformation/SimpleFormTransformer.java
 (original)
+++ 
cocoon/trunk/src/java/org/apache/cocoon/transformation/SimpleFormTransformer.java
 Thu May  5 11:28:46 2005
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-2005 The Apache Software Foundation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -145,7 +145,7 @@
  * </pre></p>
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Christian Haul</a>
- * @version CVS $Id$
+ * @version $Id$
  */
 public class SimpleFormTransformer extends AbstractSAXTransformer implements 
Recyclable {
 
@@ -235,46 +235,46 @@
     }
 
     /** current element's request parameter values */
-    protected Object[] values = null;
+    protected Object[] values;
 
     /** current request's validation results (all validated elements) */
-    protected Map validationResults = null;
+    protected Map validationResults;
 
     /** Should we skip inserting values? */
-    private boolean fixed = false;
+    private boolean fixed;
     /** Is the complete document protected? */
-    private boolean documentFixed = false;
+    private boolean documentFixed;
 
     private String fixedName = "fixed";
-    private String prefix = null;
-    private String suffix = null;
-    private String defaultPrefix = null;
-    private String defaultSuffix = null;
-    private String separator = null;
-    private String formName = null;
-    private boolean useFormName = false;
-    private boolean useFormNameTwice = false;
-    private boolean ignoreValidation = false;
+    private String prefix;
+    private String suffix;
+    private String defaultPrefix;
+    private String defaultSuffix;
+    private String separator;
+    private String formName;
+    private boolean useFormName;
+    private boolean useFormNameTwice;
+    private boolean ignoreValidation;
     private int decorationSize = 1;
 
     private String defaultInput = "request-param";
-    private Configuration defaultInputConf = null;
-    private Configuration inputConf = null;
-    private InputModule input = null;
-    private ServiceSelector inputSelector = null;
-    private String inputName = null;
+    private Configuration defaultInputConf;
+    private Configuration inputConf;
+    private InputModule input;
+    private ServiceSelector inputSelector;
+    private String inputName;
 
     /** Skip element's content only. Otherwise skip also surrounding element. 
*/
-    protected boolean skipChildrenOnly = false;
+    protected boolean skipChildrenOnly;
 
     /** Count nested repeat elements. */
-    protected int recordingCount = 0;
+    protected int recordingCount;
 
     /** List of [EMAIL PROTECTED] RepeaterStatus} elements keeping track of 
nested repeat blocks. */
-    protected List repeater = null;
+    protected List repeater;
 
     /** Map of [EMAIL PROTECTED] ValueList} to track multiple parameters. */
-    protected Map formValues = null;
+    protected Map formValues;
 
 
     /**
@@ -466,8 +466,8 @@
      *  Recycle this component.
      */
     public void recycle() {
+        reset();
         super.recycle();
-        this.reset();
     }
 
     /**

Modified: 
cocoon/trunk/src/java/org/apache/cocoon/transformation/SourceWritingTransformer.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/transformation/SourceWritingTransformer.java?rev=168368&r1=168367&r2=168368&view=diff
==============================================================================
--- 
cocoon/trunk/src/java/org/apache/cocoon/transformation/SourceWritingTransformer.java
 (original)
+++ 
cocoon/trunk/src/java/org/apache/cocoon/transformation/SourceWritingTransformer.java
 Thu May  5 11:28:46 2005
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-2005 The Apache Software Foundation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -229,11 +229,10 @@
  * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  * @author <a href="mailto:[EMAIL PROTECTED]">Jeremy Quinn</a>
  * @author <a href="mailto:[EMAIL PROTECTED]">Gianugo Rabellino</a>
- * @version CVS $Id$
+ * @version $Id$
  */
-public class SourceWritingTransformer
-    extends AbstractSAXTransformer
-    implements Disposable {
+public class SourceWritingTransformer extends AbstractSAXTransformer
+                                      implements Disposable {
 
     public static final String SWT_URI = "http://apache.org/cocoon/source/1.0";;
     public static final String DEFAULT_SERIALIZER = "xml";
@@ -816,5 +815,6 @@
             this.manager.release(this.xpathProcessor);
             this.xpathProcessor = null;
         }
+        super.dispose();
     }
 }


Reply via email to