org.directwebremoting.dwrp
Class PlainScriptConduit

java.lang.Object
  extended by org.directwebremoting.extend.ScriptConduit
      extended by org.directwebremoting.dwrp.BaseScriptConduit
          extended by org.directwebremoting.dwrp.PlainScriptConduit
All Implemented Interfaces:
java.lang.Comparable<ScriptConduit>, Alarm

public class PlainScriptConduit
extends BaseScriptConduit

A ScriptConduit for use with plain Javascript output.

Scripts are plain Javascript without 'execute-in-parent-context' wrapping, but with script-start and script-end markers.

If this conduit is used the client should direct the output to an iframe and then poll, looking for new data into the iframe. The html tags should be removed and script between script-start and script-end tags eval()ed.

This conduit is useful for Firefox. It will not work as it stands with IE 6/6 because they don't allow the browser to see data entering an iframe until it overflows a 4k buffer. See the Html4kScriptConduit for a version that works around this problem.

Author:
Joe Walker [joe at getahead dot ltd dot uk]

Field Summary
 
Fields inherited from class org.directwebremoting.extend.ScriptConduit
RANK_FAST, RANK_PROCEDURAL, RANK_SLOW
 
Constructor Summary
PlainScriptConduit(Sleeper sleeper, javax.servlet.http.HttpServletResponse response, java.lang.String batchId, ConverterManager converterManager, boolean jsonOutput)
          Simple ctor
 
Method Summary
 boolean addScript(ScriptBuffer scriptBuffer)
          Add a script to the list bound for remote execution.
 void beginStream()
          Called when we are initially setting up the stream.
 void endStream()
          Called when we are shutting the stream down.
 
Methods inherited from class org.directwebremoting.dwrp.BaseScriptConduit
cancel, close, setAccessLogLevel, setDebug, setDebugScriptOutput
 
Methods inherited from class org.directwebremoting.extend.ScriptConduit
compareTo, equals, getRank, hashCode, isHoldingConnectionToBrowser, toString
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PlainScriptConduit

public PlainScriptConduit(Sleeper sleeper,
                          javax.servlet.http.HttpServletResponse response,
                          java.lang.String batchId,
                          ConverterManager converterManager,
                          boolean jsonOutput)
                   throws java.io.IOException
Simple ctor

Parameters:
response - Used to flush output
batchId - The id of the batch that we are responding to
converterManager - How we convert objects to script
Throws:
java.io.IOException - If stream actions fail
Method Detail

beginStream

public void beginStream()
Description copied from class: BaseScriptConduit
Called when we are initially setting up the stream. This does not send any data to the client, just sets it up for data.

This method is always called exactly once in the lifetime of a conduit.


endStream

public void endStream()
Description copied from class: BaseScriptConduit
Called when we are shutting the stream down.

This method is always called exactly once in the lifetime of a conduit, just before the stream is closed.


addScript

public boolean addScript(ScriptBuffer scriptBuffer)
                  throws java.io.IOException,
                         ConversionException
Description copied from class: ScriptConduit
Add a script to the list bound for remote execution.

It is not an error to refuse to handle the script and return false, it just indicates that this ScriptConduit did not accept the script. If the ScriptConduit can no longer function then it should throw an exception and it will be assumed to be no longer useful. If you want to implement this method then you will probably be doing something like calling ServletOutputStream.print(String) and passing in the results of calling ScriptBufferUtil.createOutput().

Specified by:
addScript in class ScriptConduit
Parameters:
scriptBuffer - The script to execute
Returns:
true if this ScriptConduit handled the script.
Throws:
java.io.IOException - If this conduit is broken and should not be used
ConversionException - If objects in the script can not be marshalled

Copyright 2008