commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bruno P. Kinoshita (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FILEUPLOAD-142) ProgressListener and Streaming API improvement
Date Sun, 11 Jun 2017 03:53:19 GMT

    [ https://issues.apache.org/jira/browse/FILEUPLOAD-142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16045795#comment-16045795
] 

Bruno P. Kinoshita commented on FILEUPLOAD-142:
-----------------------------------------------

Reformatted description and comment for readability.

> ProgressListener  and Streaming API improvement
> -----------------------------------------------
>
>                 Key: FILEUPLOAD-142
>                 URL: https://issues.apache.org/jira/browse/FILEUPLOAD-142
>             Project: Commons FileUpload
>          Issue Type: Improvement
>    Affects Versions: 1.2.2
>         Environment: ANY
>            Reporter: Bohdan Bobylak
>            Priority: Minor
>         Attachments: fileupload-142.patch
>
>
> This relates to the "Watching progress"  section of the FileUpload "User Guide".
> As we know the ProgressListener has the only method:  void update(long pBytesRead, long
pContentLength, int pItems) ;
> And it passes only:
>     pBytesRead - The total number of bytes, which have been read so far.
>     pContentLength - The total number of bytes, which are being read.
>     pItems - The number of the field, which is currently being read.
> It would be great to have access to some basic info about item currently uploaded from
the 'update' method.
> For example: in some cases (ex.: multipart/replace response) it is needed to skip field
items and output progress info only about file(s) being uploaded.
> I think the following changes will help:
> ==========================================
> ----------------------------------------------------------
> 1. Introduce new interface:
> {code:java}
> interface Item {
>    String 	getContentType()
>    String 	getFieldName()
>    String 	getName()
>   boolean   isFormField() 
> }
> {code}
> ---------------------------------------------------------
> 2. Change (or and new) 'update' method:
> {code:java}
> void update(long pBytesRead, long pContentLength, int pItems, Item item) ;
> {code}
> Here we pass Item - not the FileItemSteam referense becase we should not be able to access
openStream() method of the FileItemStream.
> ---------------------------------------------------------
> 3. Change FileItemStream interface as follows:
> {code:java}
> interface FileItemStream extends Item{
>    java.io.InputStream 	openStream();
> }
> {code}
> ... and change FileItemStreamImpl implementation (if needed)
> ----------------------------------------------------------
> 4. Change ProgressNotifier as follows:
> {code:java}
> static class ProgressNotifier {
>     .....
>     // Add this field
>     private Item curItem;
>     .....
>     // Change the noteItem() method as follows
>      void noteItem(Item item) {
>               ++items;
>               curItem = item;    
>      }
>      // Change the notifyListener() method
>     private void notifyListener() {
>         if (listener != null) {
>             listener.update(bytesRead, contentLength, items, curItem);
>         }
>     }
> }
> {code}
> --------------------------------------------------------------
> 5. Change calls from 'notifier.noteItem()' to 'notifier.noteItem(currentItem)' in the
>     FileItemIteratorImpl.findNextItem() method of the  FileUploadBase file.
> ====================================
> Hope my explanation of the improvement is clear.
> Thank you.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message