commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Priest <Robert.Pri...@bentley.com>
Subject RE: FileUpload, bug?
Date Fri, 02 May 2003 19:34:41 GMT
thanks. 

Would you like me to file an "Official" bug, or is that not necessary?



-----Original Message-----
From: Martin Cooper [mailto:martinc@apache.org]
Sent: Friday, May 02, 2003 3:30 PM
To: Jakarta Commons Developers List
Subject: Re: FileUpload, bug?


Yes, this is definitely a bug. The contract for thresholdReached() is
intended to be that it will only ever be called once, at the point the
configured threshold is actually reached. I'll fix this, and add a unit
test for it, tonight, so it should be in the next nightly build.

--
Martin Cooper


On Fri, 2 May 2003, Robert Priest wrote:

> hello,
>
> I am recent cvs repository build of  commons-fileupload-1.0-dev.jar
> with
> tomcat 4.1.7
>  jdk 1.4.1_01
>
> I think this is a bug, what do you think:
>
> in DeferredFileOutputStream.thresholdReache   (used when the file is
stored
> in memory), I keep getting a null pointer exception:
>
> java.lang.NullPointerException
> 	at
>
org.apache.commons.fileupload.DeferredFileOutputStream.thresholdReached(Defe
> rredFileOutputStream.java:163)
> 	at
>
org.apache.commons.fileupload.ThresholdingOutputStream.checkThreshold(Thresh
> oldingOutputStream.java:260)
> 	at
>
org.apache.commons.fileupload.ThresholdingOutputStream.write(ThresholdingOut
> putStream.java:167)
> 	at
>
org.apache.commons.fileupload.MultipartStream.readBodyData(MultipartStream.j
> ava:513)
>
>
> The method is as follows:
>
>  protected void thresholdReached() throws IOException
>     {
>         byte[] data = memoryOutputStream.toByteArray();       <==
OFFENDING
> LINE; 163
>         FileOutputStream fos = new FileOutputStream(outputFile);
>         fos.write(data);
>         diskOutputStream = fos;
>         currentOutputStream = fos;
>         memoryOutputStream = null;
>     }
>
> Here is what is happening:
> - I have my threshold set to: 4096.
> - I attempt to "upload" a file or say 10 k or so
> - thresholdReached gets calls and the output stream is switched from
> "memory" to "file".
>
> This is fine, the first time "thresholdReached()" is called. But if
> thresholdReached() is called again (in this case it is),  the null pointer
> exception occurs. This is because the previous call to thresholdReached()
> set  "memoryOutputStream = null;", which makes sense, but the first line
of
> the method is now a call to that NULL output stream.
>
> We should be using the "currentOutputStream" member on line 163, correct?
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-dev-help@jakarta.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message