Hi,

- Fine, lets go for namespace myfaces.

- I think I have to clarify on the parameters render, execute and (optional) myfaces.submit:

render, I think we are d'accord on this, will affect the components triggered for rendering during render response on the Java side and it will determine the HTML elements to replace on the Javascript side (this is PPR).

execute will determine, which links or buttons action and actionsListeners will be triggered. It add the buttons or links name=value to the POST params on the Javascript side and influences the invoke application phase on the Java side (this is neither PPR nor PPS, it's a JSF specificum).

myfaces.submit influences the way POST parameters are collected on the Javascript side. Instead of merely piling up all the parameters of a form it recurses through the DOM tree and adds only those branches that are designated in the myfaces.submit parameter through their parent element. On the Java side this reduce apply request values and update model to the branches of the component tree that where submitted before (this is PPS).

- Where do I find the extensions package? I think this would be a great place for the view params disable, loadingbar and postJSFuntion to go.

Best Regards,
Ganesh

Werner Punz schrieb:
Ganesh schrieb:
Hi Werner,

95% ack.

1. Having an adapter class would also give all of our dojo, jQuery and trinidad friends a chance to plugin concurrent implementations and provide performance tests or other advantages their implemetations mights have.

Yes definitely... I think the core implementation parts should be pluggable...

2. The listeners are definitely a huge plus against the current spec. They remove the need for most of the additional attributes described in MYFACES-2174. Here are the ones that would still be needed: queuesize, errorlevel and submit. Having them in a subarray myfaces:{queuesize: (int), errorlevel (warning/error/fatal), submit (componentIds)}

Ok errorlevel can be kept submit definitely not, this is covered in the standard option parameter execute (which covers a list of component ids to be executed) and also the render paramter covers the list of component ids to be processed by the response drawing.

 will
clarify on that this is beyond the specs. We'll need to extend the adapter interface to pass the options array.
Actually what I would propose is to use my jsf.js which is basically the outer core, doing al the execute and render preprocessing and hook yourself into their with your own adapter... That way we can cover the standard stuff (like how the render and execute ids have to be collected and converted)
and then on your side you can do additonal processing.
What I would say, for non standard staff we can follow the jsf way
but adding our own myfaces submap to the options which allow to add additional parameters which are implementation dependend..


 I'll update MYFACES.2174 on
this. For the other options it would be nice to provide a wrapper function that accepts disable, loadingbar and postcallback parameters. Which would be the correct place for this wrapper to go? Provide it together with the MyFaces core? Put it into tomahawk? Create a separate project, maybe even within J4Fry that releases a jar containing only this wrapper, so it can be used inside RI too?

Actually I probably would add simply a set of listener function classes instances of them then can be added to the listener queue on the fly... The implementation specifics then are just a matter of implementing the interface needed to call the listeners. The place could be in the impl package somewhere, or our extension project.



3. Translantion of the comments must done.

I'll go for 1., 2. and 3. during the next few days.

Here's the 5%:

Why these namespace concerns? Isn't org.apache.myfaces the natural choice? How could this lead to namespace collisions? Actually myfaces.* is shorter, so it would be ok, too. Please clarify.

It is myfaces for now, we can rechange that simply by using a regexp...
It used to be org.apache.myfaces but it was too long for my taste.
Especiall also since org is a generic root so using that as root
via openajax cannot be reserved to apache or myfaces, hence myfaces and nothing else!


Currently I'm working on fixing the request queue, because in J4Fry we where only using a 1 element queue. Actually I'm missing a reasonable use case for a bigger AJAX request queue. Imagine a user typing letters in an input field with each letter queueing an AJAX request onKeyup. Now, the first request will submit immedately and the engine starts waiting for the callback. In the meantime the user types 5 more letters, each of them queueing another request. So, what whould happen, when the first request has returned? The 2nd request would now start collecting form values (cannot be done before, because state might have changed because of request 1), but the input field now already contains all 6 letters the user has typed. Consequently, all 5 queued requests would submit the same values, thus producing 5 identical xhrs. Do you have an idea which szenario could be targeted with a queue size > 1?

One thing instantly comes to mind, dynamic scrolling...
Or short inputs affecting two different forms, also
real time validation of input text comes to mind where this szenario definitely is better with a long queue and yet stil must perform asynchronously.



Best Regards,
Ganesh

Werner Punz schrieb:
Ok I have checked the j4fry code.
So far it looks pretty good to me, well documented and clean and has worked around a few pitfalls, however some things have to be changed.

I personally would recommend to move the connection between jsf2.js and
the j4fry code into an adapter class, like I did with my code.

The reason is, the adapter class is needed to isolate jsf2 specifics from the underlying implementation details. Stuff like progress displays or invalidation of controls and custom options,
should be handled within the adapters as long as they are not specified
explicitely.

The adapter also can isolate jsf2 from the underlying transport and ppr mechanisms to a certain degree and allows other frameworks to exchange the transports if the need arises! (which again would give us an advantage over the RI which has everything hardcoded into one big class)

So the calling hierarchy is jsf2 api <-> framework adapter with a clear well defined interface <-> implementation

This also allows us to exchange the underlying frameworks with a simple switch (like I did for Trinidad and my own implementation)
The implementation can call back into jsf2 (it should not if possible
the adapter should) but jsf2 should not call directly into the implementation it should call the adapter!

Also not found in the public specs but in the latest ri is a listener
mechanism which notifies the listeners in various stages of the lifecycle, I assume since the RI has them as public APIs that those are in later non public specs. I implemented those for exactly this reason, you basically can copy paste it from me.

Also for the J4Fry specific additonal options, can anyone check in the latest specs if frameworks are allowed to offer additional functionality via custom options?

Those should be moved into one single submap under the myfaces namespace to avoid namespace collissions with public options set by the user!
Those can be processed and mapped on adapter level, I guess!

So far my first comments on the j4fry code :-)

And last but not least: Namespaces they should be moved over to the myfaces umbrella, and the comments have to be translated to english.


And please don“t get me wrong, the code quality is excellent! I really like what I have seen so far...



Reply via email to