## helma.framework.core
Class RequestEvaluator

    java.lang.Object
      helma.framework.core.RequestEvaluator

All Implemented Interfaces:
  java.lang.Runnable

    public final class RequestEvaluator

extends java.lang.Object
implements java.lang.Runnable

This class does the work for incoming requests. It holds a transactor thread and an EcmaScript evaluator to get the work done. Incoming threads are blocked until the request has been serviced by the evaluator, or the timeout specified by the application has passed. In the latter case, the evaluator thread is killed and an error message is returned.

Field Summary
`Application` `app`
`static java.lang.Object[]` `EMPTY_ARGS`
`protected ScriptingEngine` `scriptingEngine`
`protected int` `skinDepth`

Constructor Summary
`RequestEvaluator(Application app)` Create a new RequestEvaluator for this application.

Method Summary
`ResponseTrans` `attachHttpRequest(RequestTrans req)` This checks if the Evaluator is already executing an equal request.
`java.lang.String` `getAction(java.lang.Object obj, java.lang.String action, RequestTrans req)` Check if an action with a given name is defined for a scripted object.
`RequestTrans` `getRequest()` Get the request object for the current request.
`ResponseTrans` `getResponse()` Get the response object for the current request.
`ScriptingEngine` `getScriptingEngine()` Returns this evaluator's scripting engine
`Session` `getSession()` Return the current session
`java.lang.Thread` `getThread()` Get the current transactor thread
`protected void` `initScriptingEngine()`
`java.lang.Object` `invokeDirectFunction(java.lang.Object obj, java.lang.Object function, java.lang.Object[] args)` Invoke a function internally and directly, using the thread we're running on.
`java.lang.Object` `invokeExternal(java.lang.String functionName, java.lang.Object[] args)` Invoke a function for an external request.
`ResponseTrans` `invokeHttp(RequestTrans req, Session session)` Invoke an action function for a HTTP request.
`java.lang.Object` `invokeInternal(java.lang.Object object, java.lang.Object function, java.lang.Object[] args)` Invoke a function internally.
`java.lang.Object` `invokeInternal(java.lang.Object object, java.lang.Object function, java.lang.Object[] args, long timeout)` Invoke a function internally.
`java.lang.Object` `invokeXmlRpc(java.lang.String functionName, java.lang.Object[] args)` Invoke a function for an XML-RPC request.
`void` `run()`
`protected void` `shutdown()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### EMPTY_ARGS

    public static final java.lang.Object[] EMPTY_ARGS

### app

    public final Application app

### scriptingEngine

    protected ScriptingEngine scriptingEngine

### skinDepth

    protected int skinDepth

Constructor Detail

### RequestEvaluator

    public RequestEvaluator(Application app)

  Create a new RequestEvaluator for this application.

  Parameters:
    `app` - the application

Method Detail

### initScriptingEngine

    protected void initScriptingEngine()

### shutdown

    protected void shutdown()

### run

    public void run()

  Specified by:
    `run` in interface `java.lang.Runnable`

### invokeHttp

    public ResponseTrans invokeHttp(RequestTrans req,
                                    Session session)
                             throws java.lang.Exception

  Invoke an action function for a HTTP request. The function is dispatched in a new thread and waits for it to finish.

  Parameters:
    `req` - the incoming HTTP request
    `session` - the client's session
  Returns:
    the result returned by the invocation
  Throws:
    `java.lang.Exception` - any exception thrown by the invocation

### attachHttpRequest

    public ResponseTrans attachHttpRequest(RequestTrans req)
                                    throws java.lang.Exception

  This checks if the Evaluator is already executing an equal request. If so, attach to it and wait for it to complete. Otherwise return null, so the application knows it has to run the request.

  Throws:
    `java.lang.Exception`

### invokeXmlRpc

    public java.lang.Object invokeXmlRpc(java.lang.String functionName,
                                         java.lang.Object[] args)
                                  throws java.lang.Exception

  Invoke a function for an XML-RPC request. The function is dispatched in a new thread and waits for it to finish.

  Parameters:
    `functionName` - the name of the function to invoke
    `args` - the arguments
  Returns:
    the result returned by the invocation
  Throws:
    `java.lang.Exception` - any exception thrown by the invocation

### invokeExternal

    public java.lang.Object invokeExternal(java.lang.String functionName,
                                           java.lang.Object[] args)
                                    throws java.lang.Exception

  Invoke a function for an external request. The function is dispatched in a new thread and waits for it to finish.

  Parameters:
    `functionName` - the name of the function to invoke
    `args` - the arguments
  Returns:
    the result returned by the invocation
  Throws:
    `java.lang.Exception` - any exception thrown by the invocation

### invokeDirectFunction

    public java.lang.Object invokeDirectFunction(java.lang.Object obj,
                                                 java.lang.Object function,
                                                 java.lang.Object[] args)
                                          throws java.lang.Exception

  Invoke a function internally and directly, using the thread we're running on.

  Parameters:
    `obj` - the object to invoke the function on
    `function` - the function or name of the function to invoke
    `args` - the arguments
  Returns:
    the result returned by the invocation
  Throws:
    `java.lang.Exception` - any exception thrown by the invocation

### invokeInternal

    public java.lang.Object invokeInternal(java.lang.Object object,
                                           java.lang.Object function,
                                           java.lang.Object[] args)
                                    throws java.lang.Exception

  Invoke a function internally. The function is dispatched in a new thread and waits for it to finish.

  Parameters:
    `object` - the object to invoke the function on
    `function` - the function or name of the function to invoke
    `args` - the arguments
  Returns:
    the result returned by the invocation
  Throws:
    `java.lang.Exception` - any exception thrown by the invocation

### invokeInternal

    public java.lang.Object invokeInternal(java.lang.Object object,
                                           java.lang.Object function,
                                           java.lang.Object[] args,
                                           long timeout)
                                    throws java.lang.Exception

  Invoke a function internally. The function is dispatched in a new thread and waits for it to finish.

  Parameters:
    `object` - the object to invoke the function on
    `function` - the function or name of the function to invoke
    `args` - the arguments
    `timeout` - the time in milliseconds to wait for the function to return, or -1 to wait indefinitely
  Returns:
    the result returned by the invocation
  Throws:
    `java.lang.Exception` - any exception thrown by the invocation

### getAction

    public java.lang.String getAction(java.lang.Object obj,
                                      java.lang.String action,
                                      RequestTrans req)

  Check if an action with a given name is defined for a scripted object. If it is, return the action's function name. Otherwise, return null.

### getScriptingEngine

    public ScriptingEngine getScriptingEngine()

  Returns this evaluator's scripting engine

### getRequest

    public RequestTrans getRequest()

  Get the request object for the current request.

  Returns:
    the request object

### getResponse

    public ResponseTrans getResponse()

  Get the response object for the current request.

  Returns:
    the response object

### getThread

    public java.lang.Thread getThread()

  Get the current transactor thread

  Returns:
    the current transactor thread

### getSession

    public Session getSession()

  Return the current session

  Returns:
    the session for the current request

Copyright © 1998-1998-${year} Helma.org. All Rights Reserved.