javax.faces.lifecycle.Lifecycle Maven / Gradle / Ivy
/*
* $Id: Lifecycle.java,v 1.31 2005/12/05 16:42:55 edburns Exp $
*/
/*
* The contents of this file are subject to the terms
* of the Common Development and Distribution License
* (the License). You may not use this file except in
* compliance with the License.
*
* You can obtain a copy of the License at
* https://javaserverfaces.dev.java.net/CDDL.html or
* legal/CDDLv1.0.txt.
* See the License for the specific language governing
* permission and limitations under the License.
*
* When distributing Covered Code, include this CDDL
* Header Notice in each file and include the License file
* at legal/CDDLv1.0.txt.
* If applicable, add the following below the CDDL Header,
* with the fields enclosed by brackets [] replaced by
* your own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
*
* [Name of File] [ver.__] [Date]
*
* Copyright 2005 Sun Microsystems Inc. All Rights Reserved
*/
package javax.faces.lifecycle;
import javax.faces.FacesException;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseListener;
/**
* Lifecycle manages the
* processing of the entire lifecycle of a particular JavaServer Faces
* request. It is responsible for executing all of the phases that have
* been defined by the JavaServer Faces Specification, in the specified
* order, unless otherwise directed by activities that occurred during
* the execution of each phase.
*
* An instance of Lifecycle
is created by calling the
* getLifecycle()
method of {@link LifecycleFactory}, for
* a specified lifecycle identifier. Because this instance is
* shared across multiple simultaneous requests, it must be implemented
* in a thread-safe manner.
*/
public abstract class Lifecycle {
// ---------------------------------------------------------- Public Methods
/**
* Register a new {@link PhaseListener} instance that is interested in
* being notified before and after the processing for standard phases of
* the request processing lifecycle.
*
* @param listener The {@link PhaseListener} to be registered
*
* @throws NullPointerException if listener
* is null
*/
public abstract void addPhaseListener(PhaseListener listener);
/**
* Execute all of the phases of the request processing lifecycle,
* up to but not including the Render Response phase,
* as described in the JavaServer Faces Specification, in the specified
* order. The processing flow can be affected (by the application,
* by components, or by event listeners) by calls to the
* renderResponse()
or responseComplete()
* methods of the {@link FacesContext} instance associated with
* the current request.
*
* @param context FacesContext for the request to be processed
*
* @throws FacesException if thrown during the execution of the
* request processing lifecycle
* @throws NullPointerException if context
* is null
*/
public abstract void execute(FacesContext context) throws FacesException;
/**
* Return the set of registered {@link PhaseListener}s for this
* {@link Lifecycle} instance. If there are no registered listeners,
* a zero-length array is returned.
*/
public abstract PhaseListener[] getPhaseListeners();
/**
* Deregister an existing {@link PhaseListener} instance that is no
* longer interested in being notified before and after the processing
* for standard phases of the request processing lifecycle. If no such
* listener instance has been registered, no action is taken.
*
* @param listener The {@link PhaseListener} to be deregistered
* @throws NullPointerException if listener
* is null
*/
public abstract void removePhaseListener(PhaseListener listener);
/**
* Execute the Render Response phase of the request
* processing lifecycle, unless the responseComplete()
* method has been called on the {@link FacesContext} instance
* associated with the current request.
*
* @param context FacesContext for the request being processed
*
* @throws FacesException if an exception is thrown during the execution
* of the request processing lifecycle
* @throws NullPointerException if context
* is null
*/
public abstract void render(FacesContext context) throws FacesException;
}