You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Bruno P. Kinoshita (JIRA)" <ji...@apache.org> on 2017/06/11 03:53:19 UTC
[jira] [Updated] (FILEUPLOAD-142) ProgressListener and Streaming
API improvement
[ https://issues.apache.org/jira/browse/FILEUPLOAD-142?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bruno P. Kinoshita updated FILEUPLOAD-142:
------------------------------------------
Description:
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.
was:
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:
interface Item {
String getContentType()
String getFieldName()
String getName()
boolean isFormField()
}
---------------------------------------------------------
2. Change (or and new) 'update' method:
void update(long pBytesRead, long pContentLength, int pItems, Item item) ;
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:
interface FileItemStream extends Item{
java.io.InputStream openStream();
}
... and change FileItemStreamImpl implementation (if needed)
----------------------------------------------------------
4. Change ProgressNotifier as follows:
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);
}
}
}
--------------------------------------------------------------
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.
> 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)