Author: cziegeler
Date: Tue Nov 13 08:52:15 2012
New Revision: 1408640

URL: http://svn.apache.org/viewvc?rev=1408640&view=rev
Log:
SLING-2661 :  Components might not be disposed if exception is occuring 

Modified:
    
sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java

Modified: 
sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java?rev=1408640&r1=1408639&r2=1408640&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java
 (original)
+++ 
sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java
 Tue Nov 13 08:52:15 2012
@@ -181,39 +181,36 @@ public class PipelineImpl implements Pro
      * @see org.apache.sling.rewriter.Processor#finished(boolean)
      */
     public void finished(final boolean errorOccured) throws IOException {
-        IOException ioe = null;
-        // if an error occurred, we only clean up
-        if ( !errorOccured ) {
-            try {
-                this.generator.finished();
-            } catch (final IOException localIOE) {
-                ioe = localIOE;
-            } catch (final SAXException se) {
-                if ( se.getCause() != null && se.getCause() instanceof 
IOException ) {
-                    ioe = (IOException)se.getCause();
-                } else {
-                    ioe = new IOException("Pipeline exception: " + 
se.getMessage());
-                    ioe.initCause(se);
+        try {
+            // if an error occurred, we only clean up
+            if ( !errorOccured ) {
+                try {
+                    this.generator.finished();
+                } catch (final SAXException se) {
+                    if ( se.getCause() != null && se.getCause() instanceof 
IOException ) {
+                        throw (IOException)se.getCause();
+                    } else {
+                        final IOException ioe = new IOException("Pipeline 
exception: " + se.getMessage());
+                        ioe.initCause(se);
+                        throw ioe;
+                    }
                 }
             }
-        }
-        // now dispose components
-        if ( this.generator != null ) {
-            this.generator.dispose();
-        }
-        if ( this.transformers != null ) {
-            for(final Transformer transformer : this.transformers ) {
-                if ( transformer != null ) {
-                    transformer.dispose();
+        } finally {
+            // dispose components
+            if ( this.generator != null ) {
+                this.generator.dispose();
+            }
+            if ( this.transformers != null ) {
+                for(final Transformer transformer : this.transformers ) {
+                    if ( transformer != null ) {
+                        transformer.dispose();
+                    }
                 }
             }
-        }
-        if ( this.serializer != null ) {
-            this.serializer.dispose();
-        }
-        // throw exception
-        if ( ioe != null ) {
-            throw ioe;
+            if ( this.serializer != null ) {
+                this.serializer.dispose();
+            }
         }
     }
 


Reply via email to