I would like to use ActionManager for implementing captchas.

I have a possible interface for actions:

Response execute(Response output) throws ActionException;

Response execute(Response output, Object additionalData) throws ActionException;

the Response parameter (output) will be the real Response however
the execute methods return a Response so they can chained as with 
FilterOutputStream

Sample use case:
1. ActionManager gets Response from container, calls GZIPAction with response.
2. GZIPAction takes OutputStream from Response, seeing gzip is acceptable in 
Request
which is gotten from container, GZIPAction sets encoding to gzip in the 
Response and
constructs a GZIPOutputStream and constructs new Response with it, This 
Response is returned.
3. ActionManager sees that returned Response is not null, calls next Action in 
hierarchy
which gets web page and puts it to the OutputStream. It passes through the 
GZIPOutputStream and
goes to the ServletOutputStream. This action returns null which signals 
ActionManager that
it is not a filter, and no more Actions need be called.

If the GZIPAction sees that gzip is not supported or the configuration 
disallows compression for
the given URL (image), it returns the same response which was given to it.

Getting this working will take some effort, but I would like to see the 
ActionManager running
even if chaining of actions is not yet supported and I think this interface 
will give us what we need
to get chaining of Actions working in the future.

What do you think?

Caleb James DeLisle



Caleb James DeLisle wrote:
> Everything is very much subject to change but as it stands:
> 
> Asiri Rathnayake wrote:
>> Hi Caleb,
>>
>> If I understand correctly, I would be able to add a new action by
>> implementing an "Action" component with this approach (hope I'm correct).
> Yes, and you can piggyback off of other actions (to be written) for caching
> gzip support and the like.
>> - How will I be able to bind my action to a particular URL pattern? (like
>> download, view, edit actions we have right now)
> As it stands yes, the component "hint" is part of the URL.
>> - Is there a way to resolve conflicts when resolving actions? (when two
>> action components have bindings to the same URL pattern).
> It will behave as with any other collision of components with the same hint.
>> I'm not sure if these questions are premature. But let's find out :P
>>
>> - Asiri
>>
>> On Tue, Jan 5, 2010 at 12:09 AM, Caleb James DeLisle <
>> [email protected]> wrote:
>>
>>> This has been discussed on IRC but I wanted to send out an email before
>>> creating a design proposal and JIRA issue.
>>>
>>> Summary:
>>> Actions need to be ported out of the old core into their own components.
>>> It is important that the new Action model be in place so that newly added
>>> actions do not have to be ported as well.
>>>
>>> Current Situation:
>>> There is an Action interface, an ActionManager, and an XWikiServlet which
>>> work but design is not finished.
>>>
>>> Use cases:
>>> 1. When a browser supports gzip compression, the response should be passed
>>> through a discrete gzip Action component. However if the requested material
>>> is already compressed (images), it should not be gzip'd.
>>>
>>> 2. If the user is not logged in and the action they are requesting does not
>>> alter the database (Registration) the request should be passed to a cache
>>> Action.
>>> If the cache contains the desired page then it is returned, otherwise it is
>>> passed
>>> on to the requested action and when returned it is added to the cache.
>>>
>>> 3. If desired, a filter Action may catch requests depending on user agent,
>>> ip
>>> address etc. And reroute the request. Banned!
>>>
>>> I'd love to hear more use cases, I'll post this to the design proposal page
>>> after I go for a walk.
>>>
>>> Caleb James DeLisle
>>>
>>> _______________________________________________
>>> devs mailing list
>>> [email protected]
>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>
>> _______________________________________________
>> devs mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/devs
>>
> 


_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to