Package org.edg.security.voms.request

Provides request handling in the VOMS service.

See:
          Description

Class Summary
AllowEvent An event for allowing requests.
AutomaticRequest A class implementing requests which are automatically accepted and processed immediately after their entry.
AutomaticRequestTest Unit test cases for the AutomaticRequest request type.
CheckedRequest A class implementing requests which are explicitly allowed or denied by administrators.
CheckedRequestTest Unit test cases for the CheckedRequest request type.
ConfirmedRequest A class implementing requests which have to be confirmed before they are submitted to the administrators.
ConfirmedRequestTest Unit test cases for the CheckedRequest request type.
ConfirmEvent An event for confirming email addresses.
DeleteEvent An event for deleting requests.
DenyEvent An event for denying requests.
Event An abstract class representing outside events that could happen to a request.
ExpireCompleteRequestsAction An action for deleting complete requests from the database.
IncompleteRequestTimeoutAction An action for timing out incomplete requests that are not touched for a predefined amount of time.
PurgeDeletedRequestsAction An action for purging deleted requests from the database.
Request An abstract class representing a request submitted by a user.
Request.ChronicleEntry A simple class describing entries in the chronicle.
RequestScheduler Scheduler of request background processes.
RequestScheduler.ActionTask  
TimeoutEvent An event for timeouts.
 

Exception Summary
UnexpectedEvent An exception for signalling unexpected events.
 

Package org.edg.security.voms.request Description

Provides request handling in the VOMS service.

Requests are entities requesting a certain action in the database. They are submitted by clients who do not have the necessary rights to do the operation themselves. Typically, each new request needs the approval of a VO administrator before the operation is executed. Clients submitting requests may or may not be members of the VO: indeed, requests for VO membership are expected to be the most important request type.

The action that the submitter requests to be performed is represented by an instance of the Action interface. Each request has such an instance. If the request is accepted, it executes the action by calling its Action.perform() method. An action normally has its own set of parameters that are stored as attributes of the action object. See the org.edg.security.voms.operation package for more details.

Each request has a request type that defines the exact workflow of the request. Request types are classes derived from Request. The attributes of a concrete request class define the parameters of the request. (Typical request parameters are the id of the client who submitted the request, the action that is requested by the client, etc.) Requests in VOMS are basically state machines -- the request type defines the available states and the behaviour of the machine with respect to incoming events.

The states of these state machines are instances of special inner classes of the request type class, derived from Request.State. The set of possible states of a request type define its behaviour with respect to incoming events. If needed, states can access the request parameters inside the enclosing request instance by means of lexical closure. A state is either complete or incomplete; a request is said to be complete if it is in a complete state. Incomplete requests are still waiting for events; complete requests have finished their job and are not expecting any more events.

Requests maintain a chronicle of things that happened to them. The chronicle is a list of timestamps, client identifications and HTML event descriptions that can be retrieved by calling Request.getChronicle(). The chronicle is intended to be presented to the user when she is handling (accepting, denying, etc.) the request.

Requests are stored in the database as serialized Java objects. To speed up request handling, some of the request information is extracted to database-native, indexable columns.

Events are instances of classes derived from the abstract Event class. These objects describe the various outside events that may happen to a request (e.g., an administrator accepts the request, or a timeout happens). If a request is given a new event, it forwards it to its current state, which decides what to do with the event. The processing of an event normally involves the transition to a new state.

Complete requests are subject to deletion by a periodically running expiry process. Incomplete requests time out (and move to Request.TimedOutState, which is complete), if they receive no events for a predefined amount of time.

Version:
$Name: v0_7_0 $
Author:
Karoly Lorentey
See Also:
Action, org.edg.security.voms.operation