Class RequestEvaluator

java.lang.Object
helma.framework.core.RequestEvaluator
All Implemented Interfaces:
Runnable

public final class RequestEvaluator extends Object implements 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 Details

    • EMPTY_ARGS

      public static final Object[] EMPTY_ARGS
    • app

      public final Application app
    • scriptingEngine

      protected ScriptingEngine scriptingEngine
    • skinDepth

      protected int skinDepth
  • Constructor Details

    • RequestEvaluator

      public RequestEvaluator(Application app)
      Create a new RequestEvaluator for this application.
      Parameters:
      app - the application
  • Method Details

    • initScriptingEngine

      protected void initScriptingEngine()
    • shutdown

      protected void shutdown()
    • run

      public void run()
      Specified by:
      run in interface Runnable
    • invokeHttp

      public ResponseTrans invokeHttp(RequestTrans req, Session session) throws 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:
      Exception - any exception thrown by the invocation
    • attachHttpRequest

      public ResponseTrans attachHttpRequest(RequestTrans req) throws 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:
      Exception
    • invokeXmlRpc

      public Object invokeXmlRpc(String functionName, Object[] args) throws 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:
      Exception - any exception thrown by the invocation
    • invokeExternal

      public Object invokeExternal(String functionName, Object[] args) throws 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:
      Exception - any exception thrown by the invocation
    • invokeDirectFunction

      public Object invokeDirectFunction(Object obj, Object function, Object[] args) throws 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:
      Exception - any exception thrown by the invocation
    • invokeInternal

      public Object invokeInternal(Object object, Object function, Object[] args) throws 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:
      Exception - any exception thrown by the invocation
    • invokeInternal

      public Object invokeInternal(Object object, Object function, Object[] args, long timeout) throws 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:
      Exception - any exception thrown by the invocation
    • getAction

      public String getAction(Object obj, 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 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