You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2008/04/15 11:12:48 UTC

svn commit: r648189 - /incubator/sling/trunk/scripting/resolver/src/main/java/org/apache/sling/scripting/resolver/impl/DefaultSlingScript.java

Author: fmeschbe
Date: Tue Apr 15 02:12:47 2008
New Revision: 648189

URL: http://svn.apache.org/viewvc?rev=648189&view=rev
Log:
SLING-380 Ensure script reader is closed after evaluating the script

Modified:
    incubator/sling/trunk/scripting/resolver/src/main/java/org/apache/sling/scripting/resolver/impl/DefaultSlingScript.java

Modified: incubator/sling/trunk/scripting/resolver/src/main/java/org/apache/sling/scripting/resolver/impl/DefaultSlingScript.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting/resolver/src/main/java/org/apache/sling/scripting/resolver/impl/DefaultSlingScript.java?rev=648189&r1=648188&r2=648189&view=diff
==============================================================================
--- incubator/sling/trunk/scripting/resolver/src/main/java/org/apache/sling/scripting/resolver/impl/DefaultSlingScript.java (original)
+++ incubator/sling/trunk/scripting/resolver/src/main/java/org/apache/sling/scripting/resolver/impl/DefaultSlingScript.java Tue Apr 15 02:12:47 2008
@@ -116,6 +116,7 @@
         final String scriptName = getScriptResource().getPath();
 
         Bindings bindings = null;
+        Reader reader = null;
         try {
             bindings = verifySlingBindings(scriptName, props);
 
@@ -125,7 +126,7 @@
             ctx.setWriter((Writer) bindings.get(OUT));
             ctx.setErrorWriter(new LogWriter((Logger) bindings.get(LOG)));
 
-            Reader reader = getScriptReader();
+            reader = getScriptReader();
             if ( method != null && !(this.scriptEngine instanceof Invocable)) {
                 reader = getWrapperReader(reader, method, args);
             }
@@ -151,6 +152,7 @@
             ctx.getErrorWriter().flush();
 
             return result;
+            
         } catch (IOException ioe) {
             throw new ScriptEvaluationException(scriptName, ioe.getMessage(),
                 ioe);
@@ -159,11 +161,22 @@
             Throwable cause = (se.getCause() == null) ? se : se.getCause();
             throw new ScriptEvaluationException(scriptName, se.getMessage(),
                 cause);
+            
         } finally {
+            // dispose of the SlingScriptHelper
             if ( bindings != null ) {
                 final SlingScriptHelper helper = (SlingScriptHelper) bindings.get(SLING);
                 if ( helper != null ) {
                     helper.dispose();
+                }
+            }
+            
+            // close the script reader (SLING-380)
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException ignore) {
+                    // don't care
                 }
             }
         }