[
https://issues.apache.org/jira/browse/WW-4749?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16004835#comment-16004835
]
Hudson commented on WW-4749:
----------------------------
SUCCESS: Integrated in Jenkins build Struts-JDK7-master #627 (See
[https://builds.apache.org/job/Struts-JDK7-master/627/])
WW-4749 Implements buffered write (lukaszlenart: rev
d739be34bccebbde2972c9e2c6225b94bad68d27)
* (edit)
core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
WW-4749 Defines setter to allow specify useBufferedWriter (lukaszlenart: rev
f5125bcd1bb97a75ab54e266399c2bf96987c1dc)
* (edit)
core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
WW-4749 Drops writeIfCompleted and uses Boolean instead String (lukaszlenart:
rev 1df89792f93fa71f374eef8a2b1a72b43cc28eab)
* (edit)
core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
WW-4749 Uses ordinary boolean instead of Boolean (lukaszlenart: rev
bbcd9dc2514b286065a16657d58418aa9ef4be75)
* (edit)
core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
WW-4749 Fixes test (lukaszlenart: rev 6dad53c5e316b3be2551a1bab47ee71b64ac3542)
* (edit)
core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java
WW-4749 Uses Boolean to allow define behaviour per result (lukaszlenart: rev
3034b3a97050bcb24e34f39b203a960a0ddca93e)
* (edit)
core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
WW-4749 Uses writeIfCompleted to keep backward compatibility (lukaszlenart: rev
38a2ebb72abd90c74bd52d6a81e3a0d967965c7b)
* (edit)
core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java
* (edit)
core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
WW-4749 Renames local variable to better express its meaning (lukaszlenart: rev
b842a4c779e45e1193e6319970c2dc6f52ec6bf1)
* (edit)
core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
> Buffer/Flush behaviour in FreemarkerResult
> ------------------------------------------
>
> Key: WW-4749
> URL: https://issues.apache.org/jira/browse/WW-4749
> Project: Struts 2
> Issue Type: Improvement
> Components: Core Results
> Affects Versions: 2.3.31, 2.5.1
> Reporter: Lorenzo Bernacchioni
> Assignee: Lukasz Lenart
> Priority: Minor
> Fix For: 2.5.next
>
>
> Scenario: the application use freemarker with a
> {{TemplateExceptionHandler.RETHROW_HANDLER}} policy, but occasionally needs
> to produce large XML (20~200Mb) and goes out of memory.
> In
> [FreemarkerResult|http://grepcode.com/file/repo1.maven.org/maven2/org.apache.struts/struts2-core/2.5-BETA1/org/apache/struts2/views/freemarker/FreemarkerResult.java#191]
> there are two possible behaviours (line 191):
> * *Buffer-behaviour*: the whole template is processed and if everything is
> OK it is flushed to the output, otherwise an exception is thrown and handled
> at higher level before any output has been sent. This is intended to be used
> when {{TemplateExceptionHandler.RETHROW_HANDLER}} is active
> * *Flush-behaviour*: template is processed and flushed according to
> freemarker library policies, used with any other {{TemplateExceptionHandler}}
> Since {{TemplateExceptionHandler}} cannot be switched for a given request (it
> is a global configuration embedded in {{FreemarkerManager}}) there is no way
> to force a Flush-behaviour. (you can only force a Buffer-behaviour using
> {{isWriteIfCompleted}})
> I implemented a more flexible solution that let you force the behaviour in
> both ways:
> {code:title=FreemarkerResult.java|borderStyle=solid}
> final boolean willUsebufferedWriter;
> if (useBufferedWriter != null){
> willUsebufferedWriter = useBufferedWriter;
> }else{
> willUsebufferedWriter = configuration.getTemplateExceptionHandler()
> == TemplateExceptionHandler.RETHROW_HANDLER;
> }
>
> if (willUsebufferedWriter){
> ...
> }else{
> ...
> }
> {code}
> where {{useBufferedWriter}} is a parameter that can be modified per request
> {code}
> <result type="freemarker">
> <param name="location">big_feed.ftl</param>
> <param name="contentType">text/xml</param>
> <param name="useBufferedWriter">false</param>
> </result>
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)