Save This Page
Home » cocoon-2.1.11-src » org.apache » cocoon » components » flow » [javadoc | source]
org.apache.cocoon.components.flow
public interface: Interpreter [javadoc | source]

All Known Implementing Classes:
    AbstractInterpreter, CompilingInterpreter, SchemeInterpreter, JavaScriptInterpreter, FOM_JavaScriptInterpreter, ApplesProcessor, JavaInterpreter

The interface to the flow scripting languages. This interface is for a component, which implements the appropriate language to be used for describing the flow. A system could have multiple components that implement this interface, each of them for a different scripting language.

A flow script defines what is the page flow in an interactive Web application. Usually the flow is defined in a high level programming language which provides the notion of continuations, which allows for the flow of the application to be described as a simple procedural program, without having to think about the application as a finite state machine which changes its internal state on each HTTP request from the client browser.

However an implementation may choose to use its own representation of an application, which may include XML representations of finite state machines. Note: this API has no provision for such implementations.

The component represented by this interface is called in three situations:

Nested Class Summary:
public static class  Interpreter.Argument   
Field Summary
public static final  String ROLE     
Method from org.apache.cocoon.components.flow.Interpreter Summary:
callFunction,   forwardTo,   getInterpreterID,   handleContinuation,   setInterpreterID
Method from org.apache.cocoon.components.flow.Interpreter Detail:
 public  void callFunction(String funName,
    List params,
    Redirector redirector) throws Exception
    This method is called from the sitemap, using the syntax
    <map:call function="..."/>
    
    The method will execute the named function, which must be defined in the given language. There is no assumption made on how various arguments are passed to the function.

    The params argument is a List object that contains Interpreter.Argument instances, representing the parameters to be passed to the called function. An Argument instance is a key-value pair, where the key is the name of the parameter, and the value is its desired value. Most languages will ignore the name value and simply pass to the function, in a positional order, the values of the argument. Some languages however can pass the arguments in a different order than the original prototype of the function. For these languages the ability to associate the actual argument with a formal parameter using its name is essential.

    A particular language implementation may decide to put the environment, request, response etc. objects in the dynamic scope available to the function at the time of the call. Other implementations may decide to pass these as arguments to the called function.

    The current implementation assumes the sitemap implementation is TreeProcessor.

 public  void forwardTo(String uri,
    Object bizData,
    WebContinuation continuation,
    Redirector redirector) throws Exception
    Forward the request to a Cocoon pipeline.
 public String getInterpreterID()
 public  void handleContinuation(String continuationId,
    List params,
    Redirector redirector) throws Exception
    Continues a previously started processing. The continuation object where the processing should start from is indicated by the continuationId string.
 public  void setInterpreterID(String interpreterID)
    Set the unique ID for this interpreter.