OK, looking at the rest of the JIRA issues:

https://issues.apache.org/jira/browse/TRINIDAD-664


Is a request for a component to add partial trigger functionality to non-Trinidad components. The supplied code is uncommented, so some of the proposed functionality is unclear, however this raises the general issue of whether there is additional Trinidad functionality that we would like to add to an adapter component. On the implementation side, now that we have FlattenedComponents, all behavior-only components should be implemented as flattened components.

https://issues.apache.org/jira/browse/TRINIDAD-663


As noted in the JIRA, this is actually three different issues:

   It is not currently possible out of the box to control when in the
   JSF lifecycle a Trinidad component triggers its partial notification
   outside of actually changing the phase ID of the events, which is
   not always possible.

   Also, it is very difficult to have a component listen to many
   components. For example, someone may want to say, re-render
   component x when any child of y is triggered.

   There is also no functionality for a push type of PPR. Meaning that
   right now components specify that they want to be triggered, but
   there is no way to say for a component to target other components
   (for example, specify on a button to re-render a text box, instead
   of specifying on a text-box to re-render on that button).

Of these, Adam clearly doubted whether the first was necessary or desirable:

   On 8/28/07, Andrew Robinson <[EMAIL PROTECTED]
   <http://www.nabble.com/user/SendEmail.jtp?type=post&post=12378593&i=0>>
   wrote:

    > I got it to work with a custom component. I created a component that
    > doesn't render, that simply houses children. In the queueEvent
   method
    > of that component, if the type of the event is ActionEvent, I
   then use
    > it to add components as partial targets.
    >
    > It just would be nice to have this supported by Trinidad out of the
    > box. A4J creates AjaxEvents that have their phase ID set to ANY, so
    > they fire almost immediately, and thus work regardless of what
   phases
    > are run.
    >
    > I'm just wondering if there would be any harm to moving the code
   from
    > the broadcast method to the queue method.
   «  [hide part of quote
   
<http://www.nabble.com/-Trinidad--ppr:-partialTriggers-doesn%27t-work-if-there-are-validation-messages--td12357146.html#>]

   Yes, there would be!  It'd break the semantics of partialTriggers.

   If you want your action event to fire in the "ANY" phase, just set
   immediate="true".

   -- Adam

The second of these--PPRing a container when children fire a PPR-triggering event, is interesting but one of those cases where it would be nice to collect up the possible use cases (is it any descendant or only children, would we need additional filtering controls--for example by type of component or type of triggering event, etc.) but the bigger issue is that if we were to add this functionality to Trinidad itself, wouldn't it be more natural to do so by adding a real partial trigger object and then allowing page authors who need a more specialized trigger to use an <af:partialTrigger> tag to add it declaratively (if we do need the functionality from the first item, this behavior could also be specified on the PartialTrigger object)

The third of these, adding support for partialTargets in addition to partialTriggers is interesting. When I originally implemented PPR for UIX, the forerunner of ADF Faces and Trindad, the components had a partialTargets attribute that specified the components to PPR when the component in question fired an event. I did this because: 1) It mapped directly to the implementation, which only cares about which components need to be PPRed on a particular request 2) I just didn't think to hard about the fact that I had done things backwards and that partialTriggers was the right way to do this if we were only going to have one way, so it was a good thing Adam changed this when he converted the UIX code to the ADF Faces code.

Anyway, if we really do need to declaratively support both schemes, the main question is what is the best way of exposing the functionality. We have a continuum of page author convenience and discoverability that looks like this:

1) Collection attribute on component exposed as an attribute on the component tag (partialTargets="foo bar") 2) Collection attribute on component exposed as an attribute tag (<af:partialTarget target="foo"/><af:partialTarget target="bar"/>) 3) Declarative event listener on component (<af:partialTarget targets="foo bar"/>)(The tricky part here is that components don't fire a PPR event to listen to)
4) Wrapper component

I think that 3) is actually the most architecturally pleasing, but requires the most change to the component and PPR infrastructure (though not in any interesting way). 1) and 2) are closest to how partialTriggers are exposed. 4) requires the least work from the rest of the system, but is the most different. Which of these we prefer, if we want to go here at all right now, also depends on how often we think page authors would use this feature.

-- Blake Sullivan

Andrew Robinson said the following On 5/15/2008 2:02 PM PT:
I would like to get back on track to the original subject and not let
the messaging subject hijack the thread.

Original topic:
Is there enough interest from the developer community in supporting
non-HTML PPR based components oriented for making PPR more declarative
and extend PPR support for non-Trinidad components.

I can write such components, but to be any use to the community there
needs to be more than one developer supporting such a set of
components so that the are adequately maintained.

@Blake - feel free to start a new thread on TRINIDAD-697 if you wish
or if you feel so inclined, provide a patch for the framework fix.

Thanks,
Andrew



On Thu, May 15, 2008 at 2:52 PM, Blake Sullivan
<[EMAIL PROTECTED]> wrote:
Andrew Robinson said the following On 5/15/2008 12:08 PM PT:
Taking one use case and putting it at the framework level will not
address all possible use cases. The desire to have something always
rendered does not have to be limited to messages. Furthermore, this
assumes that messages are always shown using the Trinidad framework,
which is a bad assumption. For example, the Tomahawk message component
is much better for customizability than the Trinidad one.

Are you saying that Adam's proposal does completely solve the issue raised
in

but you have further goals mentioned in Trinidad-663 and Trinidad-664 or not
mentioned in any Jira that you would also like to address.  However, even if
Adam's proposal doesn't address all of your issues, it sounds like we would
want to use it to solve Trinidad-697 because it can solve this case without
any page hacking on the part of the page author.

-- Blake Sullivan

Adding a new components gives users the flexibility to choose the way
they want to implement it and be able to work with non-Trinidad
libraries. IMO this is a much better solution than a small enhancement
for Trinidad messaging and JavaScript.

-Andrew

On Thu, May 15, 2008 at 12:24 PM, Blake Sullivan
<[EMAIL PROTECTED]> wrote:

Why doesn't Adam's proposal:

This all seems like enormous overkill *just* to get messages
sent down.  We have Javascript that can insert messages
on the client.  All we need to do is lean slightly on that code
to reuse it for inserting server-side messages, and this'll work fine
without any architectural changes at all.

-- Adam

Solve

https://issues.apache.org/jira/browse/TRINIDAD-697

at the framework level?

-- Blake Sullivan


Andrew Robinson said the following On 5/15/2008 11:03 AM PT:

He mentioned ways to do it using backing beans and non-declarative
ways. He also didn't like my "always render" functionality of one of
the components.

Here are the links for just the 2 components that I already did and
bugs and discussions surrounding them (but I think there is room for
more along these lines):

https://issues.apache.org/jira/browse/TRINIDAD-697
https://issues.apache.org/jira/browse/TRINIDAD-663
https://issues.apache.org/jira/browse/TRINIDAD-664



https://svn.apache.org/repos/asf/myfaces/trinidad/branches/arobinson-ppr-components

Related discussions:

http://tinyurl.com/5vdb57
http://tinyurl.com/5mrm8k
http://tinyurl.com/56zk8f

-Andrew

On Thu, May 15, 2008 at 11:25 AM, Blake Sullivan
<[EMAIL PROTECTED]> wrote:


Andrew Robinson said the following On 5/14/2008 6:40 PM PT:


In the past, I created 2 new components to make PPR easier from a
declarative stand point. At the time, Adam Winer disagreed with their
inclusion. Now, I wanted to see if there would be any objections to
such
components.


Adam is pretty reasonable about these kinds of things.  What were his
objections?

-- Blake Sullivan



I was thinking that that they would go in the sandbox first, then if
they
seem to be acceptible, move them into a new tag namespace (like tra:
for
AJAX or trp: for ppr).

I won't be working on this right away probably as I am still working
on
the new demo when I have the time and energy, but I wanted to get a
feel
for
what people think.

An example component is one that can trigger a PPR re-rendering if any
children components either (1) queue an event (immedate) or (2)
broadcast an
event.

-Andrew

Sent from my iPod



Reply via email to