Hi,

the bug in [1] is pretty annoying.

Currently UploadedFileImpl.loadFile(....) throws an EOFException when
we hit the limits of the upload facility.
(like file is larger than allowed).

You won't see a FacesMessage for the not happened upload,
but a error page (default or a configured custom one)
To fix this, we may perhaps do the following.

add a try/catch block around the UploadedFileImpl.loadFile(....),
which happens inside UploadedFileProcessorImpl.processFile().
like
...
    try
    {
      file.loadFile(tempFile,
                    _maxMemory - info.totalBytesInMemory,
                    _maxDiskSpace - info.totalBytesOnDisk,
                    _tempDir);
    }
    catch(EOFException ioe)
    {
      //LOG THE EXCEPTION.....
      return new ErrorFile();
    }
...

The ErrorFile class is a very simple implementation of the
UploadedFile interface and it's getLength() returns -1.
That way we ensure the lifecycle continues.... (currently not the case).

Inside the renderer (SimpleInputFileRenderer.getConvertedValue()) we
could throw a ConverterException when the
length is -1, to signal that there was an issue when doing that upload...

That way we avoid the nasty error page and we can show a FacesMessage
for the inputFile in question.

Any feedback?

[1] http://issues.apache.org/jira/browse/TRINIDAD-607

-- 
Matthias Wessendorf

further stuff:
blog: http://matthiaswessendorf.wordpress.com/
sessions: http://www.slideshare.net/mwessendorf
mail: matzew-at-apache-dot-org

Reply via email to