You are viewing a plain text version of this content. The canonical link for it is here.
Posted to adffaces-issues@incubator.apache.org by "Matthias Weßendorf (JIRA)" <ad...@incubator.apache.org> on 2007/03/16 08:41:14 UTC

[jira] Updated: (ADFFACES-313) Improve Upload behaviour

     [ https://issues.apache.org/jira/browse/ADFFACES-313?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matthias Weßendorf updated ADFFACES-313:
----------------------------------------

    Affects Version/s: 1.0.1-incubating-core-SNAPSHOT

> Improve Upload behaviour
> ------------------------
>
>                 Key: ADFFACES-313
>                 URL: https://issues.apache.org/jira/browse/ADFFACES-313
>             Project: MyFaces ADF-Faces
>          Issue Type: Improvement
>    Affects Versions: 1.0.1-incubating-core-SNAPSHOT
>         Environment: All, commons-upload
>            Reporter: Patrick Huber
>
> Trinidad/commons-upload assume some memory and space limits for uploads which can be configured in /WEB-INF/web.xml:
> -----------
> <context-param>
>     <param-name>org.apache.myfaces.trinidad.UPLOAD_MAX_MEMORY</param-name>
>     <param-value>512000</param-value>
> </context-param>
>     
> <context-param>
>     <param-name>org.apache.myfaces.trinidad.UPLOAD_MAX_DISK_SPACE</param-name>
>     <param-value>5120000</param-value>
> </context-param>
> -----------
> When the larger of these two values is exceeded, trinidad just trows an EOFException. What the user sees in the browser is this:
> ----------
> HTTP ERROR: 500
> Per-request disk space limits exceeded.
> RequestURI=/apache_trinidad/upload.faces
> Caused by:
> java.io.EOFException: Per-request disk space limits exceeded.
> 	at org.apache.myfaces.trinidadinternal.webapp.UploadedFileImpl.loadFile(UploadedFileImpl.java:236)
> 	at org.apache.myfaces.trinidadinternal.webapp.UploadedFileProcessorImpl.processFile(UploadedFileProcessorImpl.java:106)
> 	at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doUploadFile(TrinidadFilterImpl.java:342)
> 	at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:254)
> 	at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:90)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1040)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:352)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:230)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> 	at org.mortbay.jetty.Server.handle(Server.java:286)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:444)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:715)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:627)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:203)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:340)
> 	at org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> Powered by Jetty://
> ----------
> It is possible to add a "validator" attribute to a tr:inputFile component. However, that validator is only invoked when the upload size is smaller than the limits and the upload succeeds. I believe these limits really do make sense but a 500 plus stacktrace is not very cool. I propose that trinidad writes a FacesMessage to the FacesContext for the inputFile component and re-renders the same page, so the user sees the normal page again with a meaningful error message. The error message should be configurable/localizable.
> I don't know much about uploading things. Maybe it's also possible to determine the upload size before having received any data and then invoke the validator before receiving the data, so the developer could for example apply different size limits based on the mime-type of the upload. The inputFile component had to be extended to contain the same information as the valueChangeListener of the inputFile component received on its invocation.
> regards
> Patrick

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.