wjhk.jupload2.upload
Class FileUploadThreadHTTP

java.lang.Object
  extended by java.lang.Thread
      extended by wjhk.jupload2.upload.DefaultFileUploadThread
          extended by wjhk.jupload2.upload.FileUploadThreadHTTP
All Implemented Interfaces:
Runnable, FileUploadThread

public class FileUploadThreadHTTP
extends DefaultFileUploadThread

This class implements the file upload via HTTP POST request.

Version:
$Revision: 950 $
Author:
etienne_sf

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
 
Fields inherited from class wjhk.jupload2.upload.DefaultFileUploadThread
fileUploadManagerThread, packetQueue, responseBody, responseMsg, uploadPolicy
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
FileUploadThreadHTTP(UploadPolicy uploadPolicy, BlockingQueue<UploadFilePacket> packetQueue, FileUploadManagerThread fileUploadManagerThread)
          Creates a new instance.
 
Method Summary
(package private)  void afterFile(UploadFileData uploadFileData)
          Idem as DefaultFileUploadThread.beforeFile(UploadFilePacket, UploadFileData), but is called after each file (and each chunks for each file).
(package private)  void beforeFile(UploadFilePacket uploadFilePacket, UploadFileData uploadFileData)
          This method is called before sending the bytes corresponding to the file whose index is given in argument.
(package private)  void beforeRequest(UploadFilePacket packet)
          This method is called before starting of each request.
(package private)  void cleanAll()
          Clean any used resource, like a 'permanent' connection.
(package private)  void cleanRequest()
          Clean any used resource of the last executed request.
(package private)  int finishRequest()
          This method is called at the end of each request.
(package private)  long getAdditionnalBytesForUpload(UploadFileData uploadFileData)
          This method is called before the upload.
(package private)  OutputStream getOutputStream()
          Get the output stream where the files should be written for upload.
(package private)  void interruptionReceived()
          When interrupted, we close all network connection.
(package private)  void startRequest(long contentLength, boolean bChunkEnabled, int chunkPart, boolean bLastChunk)
          This method is called for each upload request to the server.
 
Methods inherited from class wjhk.jupload2.upload.DefaultFileUploadThread
close, getPacketQueue, getResponseBody, getResponseMsg, normalizeCRLF, quoteCRLF, run, setFileUploadThreadManager, setResponseBody, setResponseMsg
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface wjhk.jupload2.upload.FileUploadThread
getState, interrupt, isAlive, join, join, start
 

Constructor Detail

FileUploadThreadHTTP

public FileUploadThreadHTTP(UploadPolicy uploadPolicy,
                            BlockingQueue<UploadFilePacket> packetQueue,
                            FileUploadManagerThread fileUploadManagerThread)
Creates a new instance.

Parameters:
uploadPolicy - The policy to be applied.
packetQueue - The queue from wich packets to upload are available.
fileUploadManagerThread -
Method Detail

beforeRequest

void beforeRequest(UploadFilePacket packet)
             throws JUploadException
Description copied from class: DefaultFileUploadThread
This method is called before starting of each request. It can be used to prepare any work, before starting the request. For instance, in HTTP, the tail must be properly calculated, as the last one must be different from the others.
The packets to send are available through the DefaultFileUploadThread.packetQueue queue.

Specified by:
beforeRequest in class DefaultFileUploadThread
Throws:
JUploadException
See Also:
DefaultFileUploadThread.beforeRequest(UploadFilePacket)

getAdditionnalBytesForUpload

long getAdditionnalBytesForUpload(UploadFileData uploadFileData)
                            throws JUploadIOException
Description copied from class: DefaultFileUploadThread
This method is called before the upload. It calls the FileData.beforeUpload() method for all files to upload, and prepares the progressBar bar (if any), with total number of bytes to upload. final private void beforeUpload() throws JUploadException { for (int i = 0; i < this.filesToUpload.length && !this.fileUploadManager.isUploadStopped(); i++) { this.filesToUpload[i].beforeUpload(); } } /** This methods upload overhead for the file number indexFile in the filesDataParam given to the constructor. For instance, in HTTP, the upload contains a head and a tail for each files.

Specified by:
getAdditionnalBytesForUpload in class DefaultFileUploadThread
Parameters:
uploadFileData - The file whose additional length is asked.
Returns:
The additional number of bytes for this file.
Throws:
JUploadIOException
See Also:
DefaultFileUploadThread.getAdditionnalBytesForUpload(UploadFileData)

afterFile

void afterFile(UploadFileData uploadFileData)
         throws JUploadIOException
Description copied from class: DefaultFileUploadThread
Idem as DefaultFileUploadThread.beforeFile(UploadFilePacket, UploadFileData), but is called after each file (and each chunks for each file).

Specified by:
afterFile in class DefaultFileUploadThread
Parameters:
uploadFileData - The file that was just sent.
Throws:
JUploadIOException
See Also:
DefaultFileUploadThread.afterFile(UploadFileData)

beforeFile

void beforeFile(UploadFilePacket uploadFilePacket,
                UploadFileData uploadFileData)
          throws JUploadException
Description copied from class: DefaultFileUploadThread
This method is called before sending the bytes corresponding to the file whose index is given in argument. If the file is splitted in chunks (see the maxChunkSize applet parameter), this method is called before each chunk for this file.

Specified by:
beforeFile in class DefaultFileUploadThread
Parameters:
uploadFilePacket - The bunch of files in the current request
uploadFileData - The next file that will be sent
Throws:
JUploadException
See Also:
DefaultFileUploadThread.beforeFile(UploadFilePacket, UploadFileData)

cleanAll

void cleanAll()
        throws JUploadException
Description copied from class: DefaultFileUploadThread
Clean any used resource, like a 'permanent' connection. This method is called after the end of the last request (see on the top of this page for details).

Specified by:
cleanAll in class DefaultFileUploadThread
Throws:
JUploadException
See Also:
DefaultFileUploadThread.cleanAll()

cleanRequest

void cleanRequest()
            throws JUploadException
Description copied from class: DefaultFileUploadThread
Clean any used resource of the last executed request. In HTTP mode, the output stream, input stream and the socket should be cleaned here.

Specified by:
cleanRequest in class DefaultFileUploadThread
Throws:
JUploadException
See Also:
DefaultFileUploadThread.cleanRequest()

finishRequest

int finishRequest()
            throws JUploadException
Description copied from class: DefaultFileUploadThread
This method is called at the end of each request.

Specified by:
finishRequest in class DefaultFileUploadThread
Returns:
The response status code from the server (200 == OK)
Throws:
JUploadException
See Also:
DefaultFileUploadThread.startRequest(long, boolean, int, boolean)

interruptionReceived

void interruptionReceived()
When interrupted, we close all network connection.

Specified by:
interruptionReceived in class DefaultFileUploadThread

getOutputStream

OutputStream getOutputStream()
                       throws JUploadException
Description copied from class: DefaultFileUploadThread
Get the output stream where the files should be written for upload.

Specified by:
getOutputStream in class DefaultFileUploadThread
Returns:
The target output stream for upload.
Throws:
JUploadException
See Also:
DefaultFileUploadThread.getOutputStream()

startRequest

void startRequest(long contentLength,
                  boolean bChunkEnabled,
                  int chunkPart,
                  boolean bLastChunk)
            throws JUploadException
Description copied from class: DefaultFileUploadThread
This method is called for each upload request to the server. The number of request to the server depends on:
  • The total number of files to upload.
  • The value of the nbFilesPerRequest applet parameter.
  • The value of the maxChunkSize applet parameter.
  • The main objective of this method is to open the connection to the server, where the files to upload will be written. It should also send any header necessary for this upload request. The DefaultFileUploadThread.getOutputStream() methods is then called to know where the uploaded files should be written.
    Note: it's up to the class containing this method to internally manage the connection.

    Specified by:
    startRequest in class DefaultFileUploadThread
    Parameters:
    contentLength - The total number of bytes for the files (or the chunk) to upload in this query.
    bChunkEnabled - True if this upload is part of a file (can occurs only if the maxChunkSize applet parameter is set). False otherwise.
    chunkPart - The chunk number. Should be ignored if bChunkEnabled is false.
    bLastChunk - True if in chunk mode, and this upload is the last one. Should be ignored if bChunkEnabled is false.
    Throws:
    JUploadException
    See Also:
    DefaultFileUploadThread.startRequest(long, boolean, int, boolean)