Michal,

Unfortunately, I have a lot on my plate right now. I'm going to have to do
some research to look into your proposals below and so I won't be able to
give you my opinion for a few days. But I don't want you to think I am
ignoring this.

Ralph


ĻURDINA Michal said:
> Hi,
> I got finally into PageLabels that are implemented in portal block in
> cocoon 2.1.6 and documented at
> http://wiki.apache.org/cocoon/PortalPageLabels.
>
> Ralf Goers wrote on
> http://marc.theaimsgroup.com/?l=xml-cocoon-dev&m=110191154925434&w=2:
>> >Main issue I see in implementing CachingPortletAdapter is
>> "link translation".
>> > 1.) links that are sent to browser are valid only for the
>> next request
>> > 2.) translated links are part of generated content
>> > 3.) portlet content cannot be cached since its links will
>> not be valid after next request
>> >
>> >
>> If you use PageLabels the above is not true.  Events are valid until
>> they are regenerated on the next request to that page label.
>
> It is not exactly so. Lifecycle of links when using PageLabels is very
> simmilar to that in the original DefaultEventConverter. They are
> genereated and stored to ENCODE hashmap in the coplet generation phase and
> live until the portal tab page is generated again. Links are preserved
> ONLY when switching form one tagged page to another tagged page.
>
> Therefore I refine my statements of issues for implementing
> CachingPortletAdapter (using PageLabels):
> 1.) links that are sent to browser are valid only for the next request
> (unless the tagged page is switched)
> 2.) translated links are part of generated content
> 3.) portlet content cannot be cached since its links will not be valid
> after next request to the same tagged page
>
> I have CachingPortletAdapter finished, but I must solve the problem with
> links to make it working.
>
> I see these possibilities:
> A.) invert the responsibility and let the coplets to maintain lifecycle of
> their events/links
>
>  - coplet will add the event to store (EventConverter) on content
> generation
>  - coplet will remember its own list of its events
>  - coplet will remove its remembered old events from the store when
> regenerating or removing (logout)
>  - EventConverter will not remove events
>
> B.) enhance PageLabelEventConverter and add name of coplet instance to key
> for events store
>
>  - currently only page tab name is used for pageLabel parameter i.e.
> portal?pageLabel=Gallery&cocoon-portal-event=3
>  - after adding coplet instance name the link would look like this
> portal?pageLabel=Gallery.Gallery-Viewer&cocoon-portal-event=3
>  - new events for one coplet now don't replace old events for another
> coplet on the same page
>
> C.) add compare method to event interface
>  - before new event is stored to events store compare new event with old
> events whether "same" event not already present in the store
>  - if same event is found between old events it will be returned instead
> of new on and the link will stay the same (index to store does not
> change)
>  - gradually all links from portal are stored in the events store but
> there is no duplicate and the indexes to events are preserved between
> requests
>
> D.) name one :)
>
> I find the
> case A.) is little bit harder to implement but it was my first thought :-)
> case B.) is nice and clean way how to prevent that events for cached
> portlet without focus will not be overriden by currently focused coplet
> case C.) is only one that also allows the browser back button to work
> properly because repeated http requests will invoke same action as the
> event will be still alive in the store. Of course, internal coplet states
> are not taken into account. This simplified view solves only situation
> when coplet state is maintained exclusivelly through request parameters.
>
> I would like to know, if anyone has any preference to one or other
> solution. Also all cases can have some issues that am not aware of and I
> would be happy if you could also point them out.
>
> Thank you,
> Michal
>

Reply via email to