Hi Lars,

Sounds simple and usefull.

Just one question: What is the difference betwen the Request filter and
the Response filter ?

And a clarification the script must/may wrap the request and response
objects to inject new data, or do you think that only parameters would
be "overwritten" ?

Regards
Felix

Am Freitag, den 21.12.2007, 14:49 +0100 schrieb Lars Trieloff:
> Here is my proposal for scriptable filtering:
> 
> == Goal ==
> We want to allow users with limited knowledge and interest in OSGi,  
> Maven and Java to create filters in a similar fashion to creating  
> scripts for request handling.
> 
> == Current Situation ==
> Filters are OSGI components, implementing the Filter interface and  
> having a defined scope of either request, response or resource  
> (although I have only found examples of filter.scope=request).
> 
> == Solution ==
> We implement a RequestScriptFilter, ResponseScriptFilter and  
> ResourceScriptFilter class that in their doFilter method resolve a  
> filter script, execute this filter script and continue in the filter  
> chain. For each stage, only a single script is executed, script  
> authors that need more than one filter script per stage have following  
> options
> - implementing a dispatcher script that will delegate to other filter  
> scripts
> - subclassing the *ScriptFilter class and overriding the getSelector()  
> method, which is used in script resolution
> - implementing a full-Sling filter using OSGi mechanisms
> The *ScriptFilter have a default order of 0, authors who would like to  
> change this order have two options:
> - implementing a dispatcher script that will delegate to other filter  
> scripts
> - subclassing the *ScriptFilter class and overriding filter.order  
> property definition
> Scripts are resolved in the following way:
> 
> request filter scripts:
> /filters/request[.selector].{extension} - the selector is optional if  
> the getSelector() method return null (which is the default), the  
> extension is determined by the ScriptFactory, eg. js for Javascript  
> or .rb for Ruby
> 
> response filter scripts:
> /filters/request[.selector].{extension} - as above
> 
> resource filter scripts:
> /filters/{sling/nodetype}/filter[.selector].{extension} - selector and  
> extension as above, sling/nodetype is the resolved path to the  
> matching resource type or node type.
> 
> == Open Questions ==
> Does it make sense to include the HTTP method in script resolution? If  
> so, how to express default filters that apply to all methods?
> 
> regards,
> 
> Lars
> 
> --
> Lars Trieloff
> [EMAIL PROTECTED]
> http://weblogs.goshaky.com/weblogs/lars
> 

Reply via email to