[
https://issues.apache.org/jira/browse/WW-3924?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13534786#comment-13534786
]
Rene Gielen commented on WW-3924:
---------------------------------
Uhm - sorry guys, but so far this looks not like what we discussed in the list.
AFACIS we talked about providing non breaking API extensions to support
multipart handler plugins a plugin. It was explicitely not about changing core
to use some new library, even not if it is marked optional.
Some more concrete stuff regarding the patch
- Please provide a pure patch. Roughly two third of this patch is reformatted
original code. Please keep your IDE from automatic reformatting. A patch /
commit is either functional or reformatting the code, but not both
- please tidy up your code. Things like IDEA standard file template comments or
commented out code should not go into a patch. Best example is
FastUploadMultiPartHandler, which includes a wrong JavaDoc-comment and code in
comments.
- Again FastUploadMultiPartHandler: Please use one file for one class, as long
you are not creating inner classes. This java-File contains two toplevel classes
- Please be sure to review your code for general quality. As I understood, you
are using IntelliJ IDEA. Reviewing warnings would easily have revealed that in
NgFileUploadInterceptor:182 there is a senseless null check due to NPE about to
happen before in line 176ff. Also you might want to review
Dispatcher#cleanUpRequest, just to name another one
- DispatcherTest#testConfigurationManager - what is this URL, split into two
lines, one now marking a Java label?
That was just a quick first review. A cleaner patch helps reviewing by far...
Now regarding the API changes
- NG as naming component is a bit unfortunate. What comes in two years, when we
have even better ideas? NNG? :)
- As I see it, a new API for MultiPart should either be extending the old or
providing a full new implementation if you flip the switch. Full means full
alternative, that is: it should provide an implementation of the former
functionality. Only then it is possible to deprecate the old API and declare
the new stuff as API to use. What I see here is having just two APIs, one for
commons-fu etc and one for fastupload.
An API change proposal should
- check wether the old API can be reused, starting with factoring out more
general interfaces and more abstract classes in the hierarchy. Did that happen?
- if extending the old doesn't work, provide a complete implemetation for the
former functionality. That is, implement a commons-fu Provider
For the integration of fastupload itself:
This library and related implementations will not make it into core any time
soon, as it would not for other "new" libs. You are providing an implementation
alternative. Fine. That's what plugis are for. So if a new MultiPart API makes
it into the distribution, feel free to provide a plugin, maybe as part of your
library distribution.
A small tip: even if we would want to include the lib into our distro, we
couldn't. You don't provide any license. To make it into any Apache related
distro, a library must be released under a APL compatible license. To get
adoption at all, your lib should generally be released under an accepted OSS
license.
> refactor file upload framework
> ------------------------------
>
> Key: WW-3924
> URL: https://issues.apache.org/jira/browse/WW-3924
> Project: Struts 2
> Issue Type: Improvement
> Components: "New" API, Integration
> Affects Versions: 2.3.7
> Environment: HTTP, RFC 1867, form-based upload.
> Reporter: Link Qian
> Labels: features, patch
> Fix For: 2.3.9
>
> Attachments: fileupload-patch.txt
>
> Original Estimate: 504h
> Remaining Estimate: 504h
>
> refactor current file upload framework in Struts2, the goals are:
> 1, compatible with current file upload API in Struts2.
> 2, enable file upload framework to integration with form-based upload
> components easily.
> 3, enable user to use stream/memory parsing model beyond temporary file
> parsing model.
> 4, testing
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira