struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bob Glamm (JIRA)" <j...@apache.org>
Subject [jira] Updated: (WW-3526) Augment JakartaMultiPartRequest to include optional progress listener
Date Wed, 03 Nov 2010 17:20:24 GMT

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

Bob Glamm updated WW-3526:
--------------------------

    Attachment: upload-listener.tar.gz

Sample patch for JakartaMultiPartRequest.java, example file upload listener, and instructions
for how to put it together to make it work.

> Augment JakartaMultiPartRequest to include optional progress listener
> ---------------------------------------------------------------------
>
>                 Key: WW-3526
>                 URL: https://issues.apache.org/jira/browse/WW-3526
>             Project: Struts 2
>          Issue Type: New Feature
>          Components: Dispatch Filter
>    Affects Versions: Future
>         Environment: N/A
>            Reporter: Bob Glamm
>            Priority: Minor
>             Fix For: Future
>
>         Attachments: upload-listener.tar.gz
>
>
> Original concept from David Casserly: see http://www.devedup.com/ajaxfileupload/
> The basic idea is to augment JakartaMultiPartRequest to allow users to specify a file
upload progress listener (see Commons FileUpload ServletFileUpload.setProgressListener()).
 The original concept by Casserly references a specific ProgressMonitor class that implements
FileUpload's ProgressListener interface.  I'd propose an alternate solution: allow the user
to configure the fully-qualified name of an optional listener class via @Inject("struts.multipart.monitor"),
then:
>   o  require the listener class to also implement an interface that specifies public
void abort(); as its only method;
>   o  in JakartaMultiPartRequest.parseRequest(), attempting to instantiate the specified
listener class via Class.forName().newInstance();
>   o  store the instantiated listener in the session, as per Casserly's example;
>   o  in JakartaMultiPartRequest.parse(), in the catch(FileUploadException) block, calling
the abort() method on the listener class if it is in the session.
> Users can then implement an action that retrieves the upload status (via AJAX or some
other mechanism) by retrieving their listener object from the session (as per Casserly's example.)
 AJAX retrieval allows implementation of file upload progress bars, a la GMail's attachment
upload mechanism.
> One possible issue I see with this is: what happens if multiple file upload requests
happen simultaneously for a user session?
> I have a partial implementation but I'm not familiar with the Struts development process
or philosophies, so I'm throwing this out there for review.  If there are better ways to do
this, let me know.  I can (eventually) provide a patch to 2.2.1 or HEAD with a little assistance,
I think.

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


Mime
View raw message