Author: mrdon Date: Fri Nov 2 18:18:14 2007 New Revision: 591531 URL: http://svn.apache.org/viewvc?rev=591531&view=rev Log: Adding retrieval of result parameters from stack for stream result WW-1281
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/StreamResultTest.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java?rev=591531&r1=591530&r2=591531&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java Fri Nov 2 18:18:14 2007 @@ -28,6 +28,7 @@ import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; +import com.opensymphony.xwork2.util.ValueStack; /** * <!-- START SNIPPET: description --> @@ -61,6 +62,9 @@ * * </ul> * + * <p>These parameters can also be set by exposing a similarly named getter method on your Action. For example, you can + * provide <code>getContentType()</code> to override that parameter for the current action.</p>N + * * <!-- END SNIPPET: params --> * * <b>Example:</b> @@ -173,6 +177,9 @@ */ protected void doExecute(String finalLocation, ActionInvocation invocation) throws Exception { + // Override any parameters using values on the stack + resolveParamsFromStack(invocation.getStack()); + OutputStream oOutput = null; try { @@ -237,6 +244,38 @@ finally { if (inputStream != null) inputStream.close(); if (oOutput != null) oOutput.close(); + } + } + + /** + * Tries to lookup the parameters on the stack. Will override any existing parameters + * + * @param stack The current value stack + */ + protected void resolveParamsFromStack(ValueStack stack) { + String disposition = stack.findString("contentDisposition"); + if (disposition != null) { + setContentDisposition(disposition); + } + + String contentType = stack.findString("contentType"); + if (contentType != null) { + setContentLength(contentType); + } + + String inputName = stack.findString("inputName"); + if (inputName != null) { + setInputName(inputName); + } + + String contentLength = stack.findString("contentLength"); + if (contentLength != null) { + setContentLength(contentLength); + } + + Integer bufferSize = (Integer) stack.findValue("bufferSize", Integer.class); + if (bufferSize != null) { + setBufferSize(bufferSize.intValue()); } } Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/StreamResultTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/StreamResultTest.java?rev=591531&r1=591530&r2=591531&view=diff ============================================================================== --- struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/StreamResultTest.java (original) +++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/StreamResultTest.java Fri Nov 2 18:18:14 2007 @@ -81,14 +81,14 @@ result.doExecute("helloworld", mai); - assertEquals(null, result.getContentLength()); + assertEquals("1185", result.getContentLength()); assertEquals("text/plain", result.getContentType()); assertEquals("streamForImage", result.getInputName()); assertEquals(1024, result.getBufferSize()); // 1024 is default assertEquals("inline", result.getContentDisposition()); assertEquals("text/plain", response.getContentType()); - assertEquals(0, response.getContentLength()); + assertEquals(1185, response.getContentLength()); assertEquals("inline", response.getHeader("Content-disposition")); }