com.vaadin.terminal
Interface StreamVariable

All Superinterfaces:
Serializable

public interface StreamVariable
extends Serializable

StreamVariable is a special kind of variable whose value is streamed to an OutputStream provided by the getOutputStream() method. E.g. in web terminals StreamVariable can be used to send large files from browsers to the server without consuming large amounts of memory.

Note, writing to the OutputStream is not synchronized by the terminal (to avoid stalls in other operations when eg. streaming to a slow network service or file system). If UI is changed as a side effect of writing to the output stream, developer must handle synchronization manually.

Since:
6.5
Version:
7.0.0.alpha3
Author:
Vaadin Ltd.
See Also:
PaintTarget.addVariable(VariableOwner, String, StreamVariable)

Nested Class Summary
static interface StreamVariable.StreamingEndEvent
          Event passed to #uploadFinished(StreamingEndEvent) method the contents have been streamed to StreamVariable successfully.
static interface StreamVariable.StreamingErrorEvent
          Event passed to #uploadFailed(StreamingErrorEvent) method when the streaming ended before the end of the input.
static interface StreamVariable.StreamingEvent
           
static interface StreamVariable.StreamingProgressEvent
          Event passed to onProgress(StreamingProgressEvent) method during the streaming progresses.
static interface StreamVariable.StreamingStartEvent
          Event passed to #uploadStarted(StreamingStartEvent) method before the streaming of the content to StreamVariable starts.
 
Method Summary
 OutputStream getOutputStream()
          Invoked by the terminal when a new upload arrives, after streamingStarted(StreamingStartEvent) method has been called.
 boolean isInterrupted()
          If this method returns true while the content is being streamed the Terminal to stop receiving current upload.
 boolean listenProgress()
          Whether the #onProgress(long, long) method should be called during the upload.
 void onProgress(StreamVariable.StreamingProgressEvent event)
          This method is called by the terminal if listenProgress() returns true when the streaming starts.
 void streamingFailed(StreamVariable.StreamingErrorEvent event)
           
 void streamingFinished(StreamVariable.StreamingEndEvent event)
           
 void streamingStarted(StreamVariable.StreamingStartEvent event)
           
 

Method Detail

getOutputStream

OutputStream getOutputStream()
Invoked by the terminal when a new upload arrives, after streamingStarted(StreamingStartEvent) method has been called. The terminal implementation will write the streamed variable to the returned output stream.

Returns:
Stream to which the uploaded file should be written.

listenProgress

boolean listenProgress()
Whether the #onProgress(long, long) method should be called during the upload.

#onProgress(long, long) is called in a synchronized block when the content is being received. This is potentially bit slow, so we are calling that method only if requested. The value is requested after the #uploadStarted(StreamingStartEvent) event, but not after reading each buffer.

Returns:
true if this StreamVariable wants to by notified during the upload of the progress of streaming.
See Also:
onProgress(StreamingProgressEvent)

onProgress

void onProgress(StreamVariable.StreamingProgressEvent event)
This method is called by the terminal if listenProgress() returns true when the streaming starts.


streamingStarted

void streamingStarted(StreamVariable.StreamingStartEvent event)

streamingFinished

void streamingFinished(StreamVariable.StreamingEndEvent event)

streamingFailed

void streamingFailed(StreamVariable.StreamingErrorEvent event)

isInterrupted

boolean isInterrupted()
If this method returns true while the content is being streamed the Terminal to stop receiving current upload.

Note, the usage of this method is not synchronized over the Application instance by the terminal like other methods. The implementation should only return a boolean field and especially not modify UI or implement a synchronization by itself.

Returns:
true if the streaming should be interrupted as soon as possible.


Copyright © 2000-2011 Vaadin Ltd. All Rights Reserved.