Originally I looked into ways of having the form component be set submitted, buthave only the inputFile decode, and not any other components in the form. There were problems with that though, since it would only work with an <ice:form> and not an <h:form>. As well, since each process[Decodes|Validators|Updates] method can override its iteration, in ways that the ice:form can not predict or replicate, that wasn't going to be viable if the inputFile was within certain container components.
Instead, the FileUploadPhaseListener queues the events for the inputFile itself. This may still cause problems with UIData of (pseudo) different inputFiles, but that wasn't supported by the previous incarnation of inputFile, so it wouldn't be a regression either. The form is NOT set submitted, so neither it, nor anything within it will decode, so there shouldn't be a problem with the empty RequestParameterMap. And more so, nothing can fail to validate, and so interfere with the inputFile's processes.
Subversion 18196
icefaces\component\src\com\icesoft\faces\component\inputfile\InputFile.java
icefaces\component\src\com\icesoft\faces\component\inputfile\InputFileRenderer.java
icefaces\core\src\com\icesoft\faces\component\inputfile\FileUploadPhaseListener.java
icefaces\core\src\com\icesoft\faces\component\inputfile\InputFileProgressEvent.java
icefaces\core\src\com\icesoft\faces\component\inputfile\InputFileSetFileEvent.java
icefaces\component\src\com\icesoft\faces\component\inputfile\InputFileProgressEvent.java
icefaces\component\src\com\icesoft\faces\component\inputfile\InputFileSetFileEvent.java
Test application available in qa repository 'repo\qa\trunk\Regression\
ICE-3916'