Package org.apache.wicket.request.cycle
Class RequestCycle
- java.lang.Object
-
- org.apache.wicket.request.cycle.RequestCycle
-
- All Implemented Interfaces:
IEventSink
,IMetadataContext<Object,RequestCycle>
,IRequestCycle
public class RequestCycle extends Object implements IRequestCycle, IEventSink, IMetadataContext<Object,RequestCycle>
RequestCycle
consists of two steps:- Resolve request handler
- Execute request handler
IRequestHandler
execution the handler can schedule anotherIRequestHandler
to run after it is done, or replace allIRequestHandler
s on stack with anotherIRequestHandler
.- Author:
- Matej Knopp, igor.vaynberg
- See Also:
scheduleRequestHandlerAfterCurrent(IRequestHandler)
,replaceAllRequestHandlers(IRequestHandler)
-
-
Constructor Summary
Constructors Constructor Description RequestCycle(RequestCycleContext context)
Construct.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
detach()
DetachesRequestCycle
state.<T extends IRequestHandler>
Optional<T>find(Class<T> type)
Finds a IRequestHandler which is either the currently executing handler or is scheduled to be executed.static RequestCycle
get()
Returns request cycle associated with current thread.IRequestHandler
getActiveRequestHandler()
protected int
getExceptionRetryCount()
RequestCycleListenerCollection
getListeners()
<T> T
getMetaData(MetaDataKey<T> key)
Gets metadata for this request cycle using the given key.Response
getOriginalResponse()
Get the original response the request was created with.Request
getRequest()
IRequestHandler
getRequestHandlerScheduledAfterCurrent()
Response
getResponse()
Get the active response at the request cycle.long
getStartTime()
UrlRenderer
getUrlRenderer()
ReturnsUrlRenderer
for thisRequestCycle
.protected IRequestHandler
handleException(Exception e)
ReturnIRequestHandler
for the given exception.<C extends Page>
UrlmapUrlFor(Class<C> pageClass, PageParameters parameters)
Returns a bookmarkable URL that references a given page class using a given set of page parameters.Url
mapUrlFor(IRequestHandler handler)
Returns URL for the request handler ornull
if the handler couldn't have been encoded.Url
mapUrlFor(ResourceReference reference, PageParameters params)
Returns aUrl
for the resource referenceprotected UrlRenderer
newUrlRenderer()
protected void
onBeginRequest()
Called when the request cycle object is beginning its responsevoid
onDetach()
Called after request processing is complete, usually takes care of detaching stateprotected void
onEndRequest()
Called when the request cycle object has finished its responsevoid
onEvent(IEvent<?> event)
Called when an event is sent to this sinkboolean
processRequest()
Processes the request.boolean
processRequestAndDetach()
Convenience method that processes the request and detaches theRequestCycle
.void
replaceAllRequestHandlers(IRequestHandler handler)
protected IRequestHandler
resolveRequestHandler()
Resolves current request to aIRequestHandler
.void
scheduleRequestHandlerAfterCurrent(IRequestHandler handler)
Schedule the request handler to be executed after the current one.<T> RequestCycle
setMetaData(MetaDataKey<T> key, T object)
Sets the metadata for this request cycle using the given key.void
setRequest(Request request)
INTERNAL This method is for internal Wicket use.Response
setResponse(Response response)
void
setResponsePage(Class<? extends IRequestablePage> pageClass)
Convenience method for setting next page to be rendered.void
setResponsePage(Class<? extends IRequestablePage> pageClass, RenderPageRequestHandler.RedirectPolicy redirectPolicy)
Convenience method for setting next page to be rendered.void
setResponsePage(Class<? extends IRequestablePage> pageClass, PageParameters parameters)
Convenience method for setting next page to be rendered.void
setResponsePage(Class<? extends IRequestablePage> pageClass, PageParameters parameters, RenderPageRequestHandler.RedirectPolicy redirectPolicy)
Convenience method for setting next page to be rendered.void
setResponsePage(IRequestablePage page)
Convenience method for setting next page to be rendered.<C extends Page>
CharSequenceurlFor(Class<C> pageClass, PageParameters parameters)
Returns a rendered bookmarkable URL that references a given page class using a given set of page parameters.CharSequence
urlFor(IRequestHandler handler)
Returns the rendered URL for the request handler ornull
if the handler couldn't have been rendered.CharSequence
urlFor(ResourceReference reference, PageParameters params)
Returns a renderedUrl
for the resource reference
-
-
-
Constructor Detail
-
RequestCycle
public RequestCycle(RequestCycleContext context)
Construct.- Parameters:
context
-
-
-
Method Detail
-
get
public static RequestCycle get()
Returns request cycle associated with current thread.- Returns:
- request cycle instance or
null
if no request cycle is associated with current thread.
-
newUrlRenderer
protected UrlRenderer newUrlRenderer()
- Returns:
- a new url renderer
-
getOriginalResponse
public Response getOriginalResponse()
Get the original response the request was created with. Access to the original response may be necessary if the response has been temporarily replaced but the components require methods from original response (i.e. cookie methods of WebResponse, etc).- Returns:
- The original response object.
-
getUrlRenderer
public final UrlRenderer getUrlRenderer()
ReturnsUrlRenderer
for thisRequestCycle
.- Specified by:
getUrlRenderer
in interfaceIRequestCycle
- Returns:
- UrlRenderer instance.
-
resolveRequestHandler
protected IRequestHandler resolveRequestHandler()
Resolves current request to aIRequestHandler
.- Returns:
- RequestHandler instance
-
getExceptionRetryCount
protected int getExceptionRetryCount()
- Returns:
- How many times will Wicket attempt to render the exception request handler before giving up.
-
processRequestAndDetach
public boolean processRequestAndDetach()
Convenience method that processes the request and detaches theRequestCycle
.- Returns:
true
if the request resolved to a Wicket request,false
otherwise.
-
processRequest
public boolean processRequest()
Processes the request.- Returns:
true
if the request resolved to a Wicket request,false
otherwise.
-
handleException
protected IRequestHandler handleException(Exception e)
ReturnIRequestHandler
for the given exception.- Parameters:
e
- exception to handle- Returns:
- RequestHandler instance
- See Also:
IRequestCycleListener.onException(RequestCycle, Exception)
,IExceptionMapper.map(Exception)
-
getRequest
public Request getRequest()
- Specified by:
getRequest
in interfaceIRequestCycle
- Returns:
- current request
-
setRequest
public void setRequest(Request request)
INTERNAL This method is for internal Wicket use. Do not call it yourself unless you know what you are doing.- Parameters:
request
-
-
setMetaData
public final <T> RequestCycle setMetaData(MetaDataKey<T> key, T object)
Sets the metadata for this request cycle using the given key. If the metadata object is not of the correct type for the metadata key, an IllegalArgumentException will be thrown. For information on creating MetaDataKeys, seeMetaDataKey
.- Specified by:
setMetaData
in interfaceIMetadataContext<Object,RequestCycle>
- Type Parameters:
T
-- Parameters:
key
- The singleton key for the metadataobject
- The metadata object- Throws:
IllegalArgumentException
- See Also:
MetaDataKey
-
getMetaData
public final <T> T getMetaData(MetaDataKey<T> key)
Gets metadata for this request cycle using the given key.- Specified by:
getMetaData
in interfaceIMetadataContext<Object,RequestCycle>
- Type Parameters:
T
- The type of the metadata- Parameters:
key
- The key for the data- Returns:
- The metadata or null if no metadata was found for the given key
- See Also:
MetaDataKey
-
mapUrlFor
public Url mapUrlFor(IRequestHandler handler)
Returns URL for the request handler ornull
if the handler couldn't have been encoded.Note: The produced URL is relative to the filter path. Application code most probably need URL relative to the currently used page, for this use urlFor(org.apache.wicket.request.IRequestHandler)
- Parameters:
handler
- therequest handler
for which to create a callback url- Returns:
- Url instance or
null
-
mapUrlFor
public Url mapUrlFor(ResourceReference reference, PageParameters params)
Returns aUrl
for the resource referenceNote: The produced URL is relative to the filter path. Application code most probably need URL relative to the currently used page, for this use urlFor(org.apache.wicket.request.resource.ResourceReference, org.apache.wicket.request.mapper.parameter.PageParameters)
- Parameters:
reference
- resource referenceparams
- parameters for the resource ornull
if none- Returns:
Url
for the reference
-
mapUrlFor
public final <C extends Page> Url mapUrlFor(Class<C> pageClass, PageParameters parameters)
Returns a bookmarkable URL that references a given page class using a given set of page parameters. Since the URL which is returned contains all information necessary to instantiate and render the page, it can be stored in a user's browser as a stable bookmark.Note: The produced URL is relative to the filter path. Application code most probably need URL relative to the currently used page, for this use urlFor(Class, org.apache.wicket.request.mapper.parameter.PageParameters)
- Type Parameters:
C
- The type of the page- Parameters:
pageClass
- Class of pageparameters
- Parameters to page ornull
if none- Returns:
- Bookmarkable URL to page
-
urlFor
public final CharSequence urlFor(ResourceReference reference, PageParameters params)
Returns a renderedUrl
for the resource reference- Parameters:
reference
- resource referenceparams
- parameters for the resource ornull
if none- Returns:
Url
for the reference
-
urlFor
public final <C extends Page> CharSequence urlFor(Class<C> pageClass, PageParameters parameters)
Returns a rendered bookmarkable URL that references a given page class using a given set of page parameters. Since the URL which is returned contains all information necessary to instantiate and render the page, it can be stored in a user's browser as a stable bookmark.- Type Parameters:
C
-- Parameters:
pageClass
- Class of pageparameters
- Parameters to page ornull
if none- Returns:
- Bookmarkable URL to page
-
urlFor
public CharSequence urlFor(IRequestHandler handler)
Returns the rendered URL for the request handler ornull
if the handler couldn't have been rendered.The resulting URL will be relative to current page.
- Parameters:
handler
-- Returns:
- Url String or
null
-
detach
public final void detach()
DetachesRequestCycle
state. Called after request processing is complete
-
onDetach
public void onDetach()
Called after request processing is complete, usually takes care of detaching state
-
setResponsePage
public void setResponsePage(IRequestablePage page)
Convenience method for setting next page to be rendered.- Parameters:
page
-
-
setResponsePage
public void setResponsePage(Class<? extends IRequestablePage> pageClass)
Convenience method for setting next page to be rendered.- Parameters:
pageClass
- The class of the page to render
-
setResponsePage
public void setResponsePage(Class<? extends IRequestablePage> pageClass, RenderPageRequestHandler.RedirectPolicy redirectPolicy)
Convenience method for setting next page to be rendered.- Parameters:
pageClass
- The class of the page to renderredirectPolicy
- The policy to use when deciding whether to redirect or not
-
setResponsePage
public void setResponsePage(Class<? extends IRequestablePage> pageClass, PageParameters parameters)
Convenience method for setting next page to be rendered.- Parameters:
pageClass
- The class of the page to renderparameters
- The query parameters for the page to be rendered
-
setResponsePage
public void setResponsePage(Class<? extends IRequestablePage> pageClass, PageParameters parameters, RenderPageRequestHandler.RedirectPolicy redirectPolicy)
Convenience method for setting next page to be rendered.- Parameters:
pageClass
- The class of the page to renderparameters
- The query parameters for the page to be renderedredirectPolicy
- The policy to use when deciding whether to redirect or not
-
getStartTime
public final long getStartTime()
- Returns:
- The start time for this request
-
onEvent
public void onEvent(IEvent<?> event)
Called when an event is sent to this sink- Specified by:
onEvent
in interfaceIEventSink
-
onBeginRequest
protected void onBeginRequest()
Called when the request cycle object is beginning its response
-
onEndRequest
protected void onEndRequest()
Called when the request cycle object has finished its response
-
getListeners
public RequestCycleListenerCollection getListeners()
- Returns:
- listeners
-
getResponse
public Response getResponse()
Get the active response at the request cycle.- Specified by:
getResponse
in interfaceIRequestCycle
- Returns:
- response
-
setResponse
public Response setResponse(Response response)
Replaces the currentResponse
with newResponse
instance. The original response is always restored after theIRequestHandler.respond(IRequestCycle)
method is finished.- Specified by:
setResponse
in interfaceIRequestCycle
- Returns:
- Response being replaced.
-
scheduleRequestHandlerAfterCurrent
public void scheduleRequestHandlerAfterCurrent(IRequestHandler handler)
Schedule the request handler to be executed after the current one.- Specified by:
scheduleRequestHandlerAfterCurrent
in interfaceIRequestCycle
-
getActiveRequestHandler
public IRequestHandler getActiveRequestHandler()
- Returns:
- active handler on executor
- See Also:
RequestHandlerExecutor.getActive()
-
getRequestHandlerScheduledAfterCurrent
public IRequestHandler getRequestHandlerScheduledAfterCurrent()
- Returns:
- the handler scheduled to be executed after current by the executor
- See Also:
RequestHandlerExecutor.next()
-
replaceAllRequestHandlers
public void replaceAllRequestHandlers(IRequestHandler handler)
- Parameters:
handler
-- See Also:
RequestHandlerExecutor.replaceAll(IRequestHandler)
-
find
public <T extends IRequestHandler> Optional<T> find(Class<T> type)
Finds a IRequestHandler which is either the currently executing handler or is scheduled to be executed.- Returns:
- the found IRequestHandler or
Optional.empty()
-
-