/* Copyright 2005-2006 Tim Fennell
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.sourceforge.stripes.controller;
/**
* <p>Describes the major stages that form the Stripes request processing lifecycle. These stages
* are enumerated here primarily because they are the points around which execution can be
* intercepted using the Stripes {@link Interceptor} system.</p>
*
* @author Tim Fennell
* @since Stripes 1.3
*/
public enum LifecycleStage {
/**
* Executed before any processing occurs on the request. No Stripes processing is
* associated with this stage. It is simply provided as a hook for interceptors.
*/
RequestInit,
/**
* First major lifecycle stage. Involves the location of the ActionBean class that
* is bound to the URL being requested, and usually also the creation of a new instance
* of that class.
*/
ActionBeanResolution,
/**
* Second major lifecycle stage. Involves the determination of the event name in the
* request (if there is one), and the location of the Method which handles the even.
*/
HandlerResolution,
/**
* Third major lifecycle stage. Involves the processing of all validations specified through
* {@literal} @Validate annotations as well as the type conversion of request parameters
* and their binding to the ActionBean.
*/
BindingAndValidation,
/**
* Fourth major lifecycle stage. Involves the execution of any custom validation logic
* exposed by the ActionBean.
*/
CustomValidation,
/**
* Fifth major lifecycle stage. The actual execution of the event handler method. Only
* occurs when the prior stages have produced no persistent validation errors.
*/
EventHandling,
/**
* Sixth major lifecycle stage. Is executed any time a Resolution is executed, either
* as the outcome of an event handler, or because some other mechanism short circuits
* processing by returning a Resolution.
*/
ResolutionExecution,
/**
* Final lifecycle stage. Executes in the finally block of the request so it will
* always be called when a request terminates regardless of any other conditions.
* This is only useful for cleaning up because Resolution execution has already
* occurred.
*/
RequestComplete
}