You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gc...@apache.org on 2008/03/21 19:40:40 UTC
svn commit: r639754 - in /myfaces/trinidad/trunk_1.2.x:
trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/
trinidad-examples/trinidad-demo/src/main/webapp/demos/tags/
trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/taglib/...
Author: gcrawford
Date: Fri Mar 21 11:40:38 2008
New Revision: 639754
URL: http://svn.apache.org/viewvc?rev=639754&view=rev
Log:
TRINIDAD-1023 filedownloadActionListener does not tell user when there are errors
Catch exceptions, reset the response, add an error message to the faces context and call renderResponse.
Modified:
myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/MessageBundle.xrts
myfaces/trinidad/trunk_1.2.x/trinidad-examples/trinidad-demo/src/main/webapp/demos/tags/fileDownloadActionListener.jspx
myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/taglib/listener/FileDownloadActionListener.java
Modified: myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/MessageBundle.xrts
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/MessageBundle.xrts?rev=639754&r1=639753&r2=639754&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/MessageBundle.xrts (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/MessageBundle.xrts Fri Mar 21 11:40:38 2008
@@ -442,5 +442,9 @@
<!-- {1} = full formatted error message detail -->
<resource key="org.apache.myfaces.trinidad.convert.ALERT_FORMAT">{0} - {1}</resource>
<resource key="org.apache.myfaces.trinidad.convert.ALERT_FORMAT_detail">{0} - {1}</resource>
+
+ <!-- message for error while downloading a file -->
+ <resource key="org.apache.myfaces.trinidad.event.FileDownloadActionListener.DOWNLOAD_ERROR">Download Error</resource>
+ <resource key="org.apache.myfaces.trinidad.event.FileDownloadActionListener.DOWNLOAD_ERROR_detail">An error was encountered while downloading.</resource>
</resources>
Modified: myfaces/trinidad/trunk_1.2.x/trinidad-examples/trinidad-demo/src/main/webapp/demos/tags/fileDownloadActionListener.jspx
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-examples/trinidad-demo/src/main/webapp/demos/tags/fileDownloadActionListener.jspx?rev=639754&r1=639753&r2=639754&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-examples/trinidad-demo/src/main/webapp/demos/tags/fileDownloadActionListener.jspx (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-examples/trinidad-demo/src/main/webapp/demos/tags/fileDownloadActionListener.jspx Fri Mar 21 11:40:38 2008
@@ -34,6 +34,7 @@
<tr:goLink destination="http://myfaces.apache.org/trinidad/trinidad-api/tagdoc/tr_fileDownloadActionListener.html"
text="Tag Documentation"/>
</tr:panelGroupLayout>
+ <tr:messages/>
<tr:outputFormatted styleUsage="instruction"
value="<b>fileDownloadActionListener</b>"/>
<tr:outputText value="Click any command component to download a file"/>
Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/taglib/listener/FileDownloadActionListener.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/taglib/listener/FileDownloadActionListener.java?rev=639754&r1=639753&r2=639754&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/taglib/listener/FileDownloadActionListener.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/taglib/listener/FileDownloadActionListener.java Fri Mar 21 11:40:38 2008
@@ -19,12 +19,11 @@
package org.apache.myfaces.trinidadinternal.taglib.listener;
import java.io.BufferedOutputStream;
-import java.io.IOException;
import java.io.OutputStream;
import javax.el.MethodExpression;
-import javax.el.ValueExpression;
+import javax.faces.application.FacesMessage;
import javax.faces.component.StateHolder;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
@@ -37,6 +36,8 @@
import org.apache.myfaces.trinidad.bean.PropertyKey;
import org.apache.myfaces.trinidad.logging.TrinidadLogger;
import org.apache.myfaces.trinidad.util.ComponentUtils;
+import org.apache.myfaces.trinidad.util.MessageFactory;
+
/**
* @todo Look at moving to org.apache.myfaces.trinidad.event
@@ -58,6 +59,14 @@
TYPE.registerKey("method",
MethodExpression.class,
PropertyKey.CAP_NOT_BOUND);
+
+
+ /**
+ * <p>The message identifier of the {@link FacesMessage} to be created when
+ * there is a download error.</p>
+ */
+ public static final String DOWNLOAD_MESSAGE_ID =
+ "org.apache.myfaces.trinidad.event.FileDownloadActionListener.DOWNLOAD_ERROR";
static
{
@@ -81,9 +90,9 @@
}
else
{
+ HttpServletResponse hsr = (HttpServletResponse) response;
try
{
- HttpServletResponse hsr = (HttpServletResponse) response;
if (contentType != null)
// TODO: encoding?
hsr.setContentType(contentType);
@@ -91,21 +100,21 @@
// TODO: what about non-ASCII characters in the filename?
hsr.setHeader("Content-Disposition",
"attachment; filename=" + filename);
+
MethodExpression method = getMethod();
OutputStream out = new BufferedOutputStream(hsr.getOutputStream());
- try
- {
- method.invoke(context.getELContext(), new Object[]{context, out});
- }
- finally
- {
- out.close();
- }
+ method.invoke(context.getELContext(), new Object[]{context, out});
+ out.close();
}
- catch (IOException ioe)
+ catch (Exception e)
{
- _LOG.warning(ioe);
+ hsr.reset();
+ _LOG.warning(e);
+ FacesMessage message = MessageFactory.getMessage(context, DOWNLOAD_MESSAGE_ID);
+ context.addMessage(null, message);
+ context.renderResponse();
+ return;
}
}