Author: hlship
Date: Tue Aug  9 01:06:20 2011
New Revision: 1155180

URL: http://svn.apache.org/viewvc?rev=1155180&view=rev
Log:
TAP5-1598: CLoak/decloak the Environment using a try…finally block when partial 
page rendering

Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java?rev=1155180&r1=1155179&r2=1155180&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
 Tue Aug  9 01:06:20 2011
@@ -70,28 +70,32 @@ public class AjaxPartialResponseRenderer
     {
         environment.cloak();
 
-        // This is a complex area as we are trying to keep public and private 
services properly
-        // separated, and trying to keep stateless and stateful (i.e., 
perthread scope) services
-        // separated. So we inform the stateful queue service what it needs to 
do here ...
+        try
+        {
+            // This is a complex area as we are trying to keep public and 
private services properly
+            // separated, and trying to keep stateless and stateful (i.e., 
perthread scope) services
+            // separated. So we inform the stateful queue service what it 
needs to do here ...
 
-        ContentType pageContentType = (ContentType) 
request.getAttribute(InternalConstants.CONTENT_TYPE_ATTRIBUTE_NAME);
+            ContentType pageContentType = (ContentType) 
request.getAttribute(InternalConstants.CONTENT_TYPE_ATTRIBUTE_NAME);
 
-        ContentType contentType = new 
ContentType(InternalConstants.JSON_MIME_TYPE, outputEncoding);
+            ContentType contentType = new 
ContentType(InternalConstants.JSON_MIME_TYPE, outputEncoding);
 
-        MarkupWriter writer = factory.newPartialMarkupWriter(pageContentType);
+            MarkupWriter writer = 
factory.newPartialMarkupWriter(pageContentType);
 
-        JSONObject reply = new JSONObject();
+            JSONObject reply = new JSONObject();
 
-        // ... and here, the pipeline eventually reaches the PRQ to let it 
render the root render command.
+            // ... and here, the pipeline eventually reaches the PRQ to let it 
render the root render command.
 
-        partialMarkupRenderer.renderMarkup(writer, reply);
+            partialMarkupRenderer.renderMarkup(writer, reply);
 
-        PrintWriter pw = response.getPrintWriter(contentType.toString());
+            PrintWriter pw = response.getPrintWriter(contentType.toString());
 
-        reply.print(pw, compactJSON);
+            reply.print(pw, compactJSON);
 
-        pw.close();
-
-        environment.decloak();
+            pw.close();
+        } finally
+        {
+            environment.decloak();
+        }
     }
 }


Reply via email to