[
https://issues.apache.org/jira/browse/CLK-598?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Adrian A. closed CLK-598.
-------------------------
closing issue fixed a long time ago
> Add Page Interceptor facility
> -----------------------------
>
> Key: CLK-598
> URL: https://issues.apache.org/jira/browse/CLK-598
> Project: Click
> Issue Type: New Feature
> Components: core
> Reporter: Malcolm Edgar
> Assignee: Malcolm Edgar
> Fix For: 2.2.0
>
>
> Provide an application page interceptor / listener facility into Click. The
> concept is to provide an extension point for code which can listener to key
> page events and also interrupt normal page processing flow.
> Using this code which tends to be incorporated into Page superclasses can be
> refactored into listener classes which can be reused in applications. This
> approach supports Page design by composition, rather than through inheritance.
> Page listeners could be used for:
> * enforcing an application wide security polity, rather than using the
> Page#onSecurityCheck() method
> * dependency injection, see CLK-581
> * support page performance profiling and logging
> The listener interface would be:
> public interface PageInterceptor {
> boolean pageCreate(Class<? extends Page> pageClass, Context context);
> boolean postCreate(Page page);
> boolean preResponse(Page page);
> void postDestroy(Page page);
> }
>
> Application page interceptor classes would be defined in the click.xml
> configuration file. Applications could defined multiple interceptor which
> would be executed sequentially in the order in which there are defined.
> Lnterceptor could have a scope / lifecycle of request (where by new
> instances are created for each page request, and are threadsafe), or
> application (where by a single instance is created and used for all page
> requests). interceptor can also be configured to have properties which are
> set after creation. This scope rules equates to Spring prototype and
> singleton scopes.
> An example configuration is provided below:
> <page-interceptor classname="com.mycorp.listener.ProfilingInterceptor"/>
> <page-interceptor classname="com.mycorp.listener.SecurityInterceptor"
> scope="application">
> <property name="notAthenticatedPath" value="/login.htm"/>
> <property name="notAuthorizedPath" value="/not-authorized.htm"/>
> </page-interceptor >
>
--
This message was sent by Atlassian JIRA
(v6.1#6144)