If the previous Invocation is null, then a new transaction is created; otherwise, this Invocation will use the same transaction as the previous Invocation.
The status of this Invocation MUST be INIT. If there is a previous Invocation, that Invocation MUST have a status of ACTIVE and this Invocation MUST require a response.
Candidate content handlers are found as described in {@link #findHandler findHandler}. If any handlers are found, one is selected for this Invocation. The choice of content handler is implementation dependent.
A copy of the Invocation is made, the status is set to ACTIVE and then queued to the target content handler. If the invoked content handler is not running, it MUST be started as described in Invoking a Content Handler.
The status of this Invocation is set to WAITING. If there is a non-null previous Invocation, its status is set to HOLD. The previous Invocation is saved in the waiting Invocation. It can be retrieved by the getPrevious method.
The calling thread blocks while the content handler is being determined. If a network access is needed, there may be an associated delay.
@param invocation the Invocation containing the target ID, type, URL,actions, arguments, and responseRequired parameters; MUST NOT be null
@param previous a previous Invocation for this Invocation;may be null
@return true if the application MUSTvoluntarily exit to allow the target content handler to be started; false otherwise
@exception IllegalArgumentException is thrown if:
null,null references, or invocation.getResponseRequired method returns false and previous is non-nullNO_REGISTERED_HANDLER if there is no registered content handler that matches the requested ID, type, URL, and action
@exception IllegalStateException is thrown if the status of thisInvocation is not INIT or if the status of the previous Invocation, if any, is not ACTIVE
@exception NullPointerException is thrown if theinvocation is null
@exception SecurityException if access to the content is not permitted
| |