com.primix.tapestry
Interface IRequestCycle

All Known Implementing Classes:
RequestCycle

public interface IRequestCycle

Controller object that manages a single request cycle. A request cycle is one 'hit' on the web server. In the case of a Tapestry application, this will involve:

Mixed in with this is:

A request cycle is broken up into two phases. The rewind phase is optional, as it tied to Action or Form components. In the rewind phase, a previous page render is redone (discarding output) until a specific component of the page is reached. This rewinding ensures that the page is restored to the exact state it had when the URL for the request cycle was generated, taking into account the dynamic nature of the page (Foreach, Conditional, etc.). Once this component is reached, it can notify its IActionListener. The listener has the ability to update the state of any pages and select a new result page.

Following the rewind phase is the render phase. During the render phase, a page is actually rendered and output sent to the client web browser.

Version:
$Id: IRequestCycle.java,v 1.10 2001/06/19 20:32:30 hship Exp $
Author:
Howard Ship

Method Summary
 void cleanup()
          Invoked after the request cycle is no longer needed, to release any resources it may have.
 void commitPageChanges()
          Invoked just before rendering the response page to get all page recorders touched in this request cycle to commit their changes (save them to persistant storage).
 java.lang.String encodeURL(java.lang.String URL)
          Passes the String through HttpServletResponse.encodeURL(), which ensures that the session id is encoded in the URL (if necessary).
 java.lang.Object getAttribute(java.lang.String name)
          Retrieves a previously stored attribute, returning null if not found.
 IEngine getEngine()
          Returns the engine which is processing this request cycle.
 IMonitor getMonitor()
           
 java.lang.String getNextActionId()
          Returns the next action id.
 IPage getPage()
          Identifies the page being rendered.
 IPage getPage(java.lang.String name)
          Returns the page with the given name.
 RequestContext getRequestContext()
           
 IEngineService getService()
          Returns the service which initiated this request cycle.
 boolean isRewinding()
          Returns true if the context is being used to rewind a prior state of the page.
 boolean isRewound(IComponent component)
          Checks to see if the current action id matches the target action id.
 void removeAttribute(java.lang.String name)
          Removes a previously stored attribute, if one with the given name exists.
 void renderPage(IResponseWriter writer)
          Renders the given page.
 void rewindForm(IForm form, java.lang.String targetActionId)
          Used by forms to perform a partial rewind and respond to the form submission.
 void rewindPage(java.lang.String targetActionId, IComponent targetComponent)
          Rewinds a page and executes some form of action when the component with the specified action id is reached.
 void setAttribute(java.lang.String name, java.lang.Object value)
          Allows a temporary object to be stored in the request cycle, which allows otherwise unrelated objects to communicate.
 void setPage(IPage page)
          Sets the page to be rendered.
 void setPage(java.lang.String name)
          Sets the page to be rendered.
 

Method Detail

cleanup

public void cleanup()
Invoked after the request cycle is no longer needed, to release any resources it may have. This includes releasing any loaded pages back to the page source.

encodeURL

public java.lang.String encodeURL(java.lang.String URL)
Passes the String through HttpServletResponse.encodeURL(), which ensures that the session id is encoded in the URL (if necessary).

getEngine

public IEngine getEngine()
Returns the engine which is processing this request cycle.

getAttribute

public java.lang.Object getAttribute(java.lang.String name)
Retrieves a previously stored attribute, returning null if not found. Attributes allow components to locate each other; primarily they allow a wrapped component to locate a component which wraps it.

getMonitor

public IMonitor getMonitor()

getNextActionId

public java.lang.String getNextActionId()
Returns the next action id. Action ids are used to identify different actions on a page (URLs that are related to dynamic page state).

getPage

public IPage getPage()
Identifies the page being rendered.

getPage

public IPage getPage(java.lang.String name)
Returns the page with the given name. If the page has been previously loaded in the current request cycle, that page is returned. Otherwise, the engine's page loader is used to load the page.
See Also:
IEngine.getPageSource()

getRequestContext

public RequestContext getRequestContext()

isRewinding

public boolean isRewinding()
Returns true if the context is being used to rewind a prior state of the page. This is only true when there is a target action id.

isRewound

public boolean isRewound(IComponent component)
                  throws StaleLinkException
Checks to see if the current action id matches the target action id. Returns true only if they match. Returns false if there is no target action id (that is, during page rendering).

If theres a match on action id, then the component is compared against the target component. If there's a mismatch then a StaleLinkException is thrown.


removeAttribute

public void removeAttribute(java.lang.String name)
Removes a previously stored attribute, if one with the given name exists.

renderPage

public void renderPage(IResponseWriter writer)
                throws RequestCycleException
Renders the given page. Applications should always use this method to render the page, rather than directly invoking IRender.render(IResponseWriter, IRequestCycle) since the request cycle must perform some setup before rendering.

rewindPage

public void rewindPage(java.lang.String targetActionId,
                       IComponent targetComponent)
                throws RequestCycleException
Rewinds a page and executes some form of action when the component with the specified action id is reached.
See Also:
IAction

setAttribute

public void setAttribute(java.lang.String name,
                         java.lang.Object value)
Allows a temporary object to be stored in the request cycle, which allows otherwise unrelated objects to communicate. This is similar to HttpServletRequest.setAttribute(), except that values can be changed and removed as well.

This is used by components to locate each other. A component, such as Body, will write itself under a well-known name into the request cycle, and components it wraps can locate it by that name.


setPage

public void setPage(IPage page)
Sets the page to be rendered. This is called by a component during the rewind phase to specify an alternate page to render during the response phase.

setPage

public void setPage(java.lang.String name)
Sets the page to be rendered. This is called by a component during the rewind phase to specify an alternate page to render during the response phase.

commitPageChanges

public void commitPageChanges()
                       throws PageRecorderCommitException
Invoked just before rendering the response page to get all page recorders touched in this request cycle to commit their changes (save them to persistant storage).
See Also:
IPageRecorder.commit()

getService

public IEngineService getService()
Returns the service which initiated this request cycle. This may return null (very early during the request cycle) if the service has not yet been determined.
Since:
1.0.1

rewindForm

public void rewindForm(IForm form,
                       java.lang.String targetActionId)
                throws RequestCycleException
Used by forms to perform a partial rewind and respond to the form submission.
Since:
1.0.2