Moving ActionFilter turned out to be much harder than I thought. If
nobody cries out, I'll move the other two today.


Thanks,
Alex

On 08/25/2010 11:58 PM, Sergiu Dumitriu wrote:
> On 08/24/2010 01:17 AM, Alex Busenius wrote:
>> Hi devs,
>>
>>
>> I propose to move servlet filters out of the old core to
>> xwiki-container-servlet.
>>
>>
>> There are 3 filters,
>>
>> com.xpn.xwiki.web.SetCharacterEncodingFilter
>> com.xpn.xwiki.web.SavedRequestRestorerFilter
>> com.xpn.xwiki.web.ActionFilter
>>
>> They are almost self-contained (except for ActionFilter, see a note
>> later) and are easy to move. Moreover, SavedRequestRestorerFilter offers
>> functionality to save the request, that might also be useful in other
>> places (like csrf-token). There is (currently) no need for portlet
>> filters, so moving filters into a separate module doesn't seem to be
>> worth it.
>>
>> Since the filters are not used directly, I'd move them into
>> org.xwiki.container.servlet.filters.internal and public methods used
>> elsewhere into org.xwiki.container.servlet.filters.
>>
>> Note that xwiki-core would become dependent on xwiki-container-servlet
>> (it currently depends on container-api), but it shouldn't be a problem.
> 
> +1 for moving SCEF and SRRF, but not AF.
> 
>> In more detail,
>>
>> * SetCharacterEncodingFilter would be moved as is to filters.internal.
>>
>> * SavedRequestRestorerFilter would be split into the actual filter and
>>    SavedRequestManager that would contain the static methods
>>      String getOriginalUrl(HttpServletRequest)
>>      String saveRequest(HttpServletRequest)
>>      String getRequestIdentifier()
>>    SavedRequestManager could also be a component, but it would make it
>>    more complicated to use from the filter.
>>
>> * ActionFilter should be moved to filters.internal too, but it uses
>>    XWiki.stripSegmentFromPath(String, String) to parse the URL and
>>    replace the action part by the stored value.
>>
>>
>> There are 2 other copies of the URL parsing code that uses
>> stripSegmentFromPath(...), in XWiki.getDocumentReference(...) and
>> XWiki.getXWiki(...), I can think of 3 alternatives:
>> 1. Leave ActionFilter in the core
>> 2. Move URL parsing code into xwiki-url, i.e. add/implement missing
>>     methods to create XWikiURL from string representation and extract
>>     host, action, document reference and parameters from it.
>> 3. Move stripSegmentFromPath(...) to xwiki-container-servlet too
>>
>>
>> I'm +1 for 2, since it's the cleanest option.
> 
> +1 for 1, for the moment.
> 
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to