I'm fine with any changes on the short term if that makes it better for people to use. For the longer term (1.2.), we should re-think more about generalizing it. It's probably not difficult either, just a lot of thinking before implementing.
Eelco On 10/28/05, Johan Compagner <[EMAIL PROTECTED]> wrote: > Would be very nice to give it some though > But i was not talking about url generation > Just handling the component listeners (After the parsing of the url) > So pure the java side (so really the method where the talk is for now: > > I was talking pure for this method: > > private void invokeInterface(final Component component, final Method > method, final Page page) > > If it was me that method can be pushed to RequestCycle and made protected. > > then you don't have to do this: > > if (page instanceof WebPage) > { > ((WebPage)page).beforeCallComponent(component, > method); > } > > but just this: > > page.beforeCallComponent(component, method); > > so page could have that method. > > I agree the parsing right before that methods is somethign for > WebRequestCycle > But the handling of it can go to RequestCycle itself. > > I think that in every request cycle impl you will get that component > interface handling > (that doesn't have anything to do with web/http) > > > > > > > > On 10/28/05, Eelco Hillenius <[EMAIL PROTECTED]> wrote: > > > > Yeah, we have done some ofline discussing on this topic too. For 1.2. > > we could start thinking about a better model for handling urls. > > > > Something like: > > > > A. The creation of urls (e.g. for a link). Instead of letting urlFor > > doing the whole url construction, we could have a strategy for this > > (Igor wondered why we didn't have this in the first place). Now the > > trick is (imo) that we should combine idea of reachability with the > > idea of state management. That would mean letting components > > contribute to that url constructing. Like: strategy implements the > > 'url stub' and collects the component's contribitions to this url. > > What a url would look like however would be strategy dependend, so the > > strategy has to know how to collect specific info. Strategy 1 could > > result in a url like we have now, strategy 2 could result in something > > like > http://myhost/myapp/admin?path=3,form1=12341,form2=some > other > > key. I'm just thinking out loud, but the plan is to have something > > that enables us to be really smart with state handling; the above > > example has form1 that has a detachable model with an object key > > 12341... that's the only thing needed for that form to be > > reconstructed, as the rest (in my example the form has only components > > with compound property models nested) can be derived. Oh, and this has > > been about urls so far, but I really mean something a little bit more > > abstract, so that a strategy can decide whether to end up with an > > actual url, or something like a set of hidden form fields. Maybe. > > > > B. The parsing of a request. Again this would be done by strategies. > > The idea would be to 'mount' strategies to url patterns (akin to > > mounting servlets and I think Tapestry's application services work > > like that?). Steps would be like: > > 1. request comes in, Wicket looks for the mounted strategy for this > > specific request. > > 2. strategy parses the request and tries to get/ rebuild the component > > tree. Two concrete case are: a strategy that just needs the page id, > > and gets it out of the session, and a strategy for bookmarkable pages > > that needs the class name to create a page instance and then passes in > > the url parameters. But if we think this through well, we could end up > > having the ability to work with pages that doesn't have to be stored > > in the session, but that can be reacreated on a request. > > 3. now that the component tree is available, optionally execute a > > listener method. Again the strategy decides when/ how this is done. > > > > It's easier to talk about this than write it down in a short time. > > Anyway, I think something like above is the direction we need to go > > for the ultra scalability. > > > > Eelco > > > > > > > > On 10/28/05, Johan Compagner < [EMAIL PROTECTED]> wrote: > > > My question about this is can anybody name a Page that isn't a webpage? > > > And that would also have a own requestcycle? that doesn't use a > > > componentListener? > > > > > > Why i ask this. Could componentListener handling not pushed to > > > RequestCycle? > > > What is so WEB about it? > > > > > > > > > > > > On 10/28/05, Juergen Donnerstag < [EMAIL PROTECTED]> wrote: > > > > On 10/28/05, [EMAIL PROTECTED] <[EMAIL PROTECTED] > wrote: > > > > > Regarding the newly added 'around functionality' of WebRequestCycle > and > > > WebPage. > > > > > > > > > > I certainly welcome this addition in the background of Spring > > > integration and AOP, but I see some problems with this implementation. > > > > > > > > > > First of all we now have a new dependency to HTML markup in > > > WebRequestCycle.java: > > > > > > > > > > > > > WebPage are meant for HTML markup, which is why they have the prefix > > > > "Web". The base clase Page is meant to be independent. > > > > > > > > > import wicket.markup.html.WebPage ; > > > > > .... > > > > > if (page instanceof WebPage) > > > > > { > > > > > ((WebPage)page).beforeCallComponent(component, > method); > > > > > } > > > > > ...... > > > > > if (page instanceof WebPage) > > > > > { > > > > > ((WebPage)page).afterCallComponent(component, > method); > > > > > } > > > > > > > > > > Secondly WebPage.java has a new dependency on java.lang.reflect : > > > > > > > > > > > > > Is that realy a problem? It is not a dependency to another jar, isn't > it? > > > > > > > > > import java.lang.reflect.Method; > > > > > .... > > > > > public void beforeCallComponent(final Component component, final > Method > > > method) > > > > > public void afterCallComponent(final Component component, final > Method > > > method) > > > > > > > > > > IMHO this lifecycle notification would be solved more elegant, if > the > > > latter two methods were moved into WebRequestCycle instead, serving as > > > hooks: > > > > > > > > > > > > > So your WebRequestCyle implementations will than look like > > > > if (component is MyPageA) > > > > ... > > > > else if (component is MyPageB) > > > > .. > > > > else > > > > else > > > > else > > > > > > > > Not sure, this is the better approach. Turning your argumentation > > > > around, one could say: create a common base BasePage which implements > > > > before/afterXXX and invoke an appropriate implementation in > > > > MyWebRequestCycle if you realy want to do that. Actually, I like the > > > > current implementation a little bit better. > > > > > > > > > /** Unchanged javadoc **/ > > > > > protected void beforeCallComponent(final Component component, final > > > Method method) {} > > > > > /** Unchanged javadoc **/ > > > > > protected void afterCallComponent(final Component component, final > > > Method method) {} > > > > > > > > > > I see the following benefits: > > > > > - no new dependencies as described above > > > > > - the reflection stuff is isolated in WebRequestCycle, were it's > already > > > used > > > > > - more flexible since project specific subclasses of WebRequestCycle > > > could easily > > > > > ... apply their aspects (e.g. inject dependencies with Spring) from > > > *outside* of their pages > > > > > ... forward these lifecyle notifications into their pages (as the > > > current implementation) if they really need to. > > > > > > > > > > Please reread the javadoc of beforeCallComponent() and > > > afterCallComponent() as if they were already located in WebRequestCycle, > > > IMHO they make much more sense there. > > > > > > > > > > Thanks > > > > > > > > > > Sven > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > > > This SF.Net email is sponsored by the JBoss Inc. > > > > > Get Certified Today * Register for a JBoss Training Course > > > > > Free Certification Exam for All Training Attendees Through End of > 2005 > > > > > Visit http://www.jboss.com/services/certification > for > > > more information > > > > > _______________________________________________ > > > > > Wicket-user mailing list > > > > > Wicket-user@lists.sourceforge.net > > > > > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > > This SF.Net email is sponsored by the JBoss Inc. > > > > Get Certified Today * Register for a JBoss Training Course > > > > Free Certification Exam for All Training Attendees Through End of 2005 > > > > Visit http://www.jboss.com/services/certification for > > > more information > > > > _______________________________________________ > > > > Wicket-user mailing list > > > > Wicket-user@lists.sourceforge.net > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > > > > > > > > > > > > > ------------------------------------------------------- > > This SF.Net email is sponsored by the JBoss Inc. > > Get Certified Today * Register for a JBoss Training Course > > Free Certification Exam for All Training Attendees Through End of 2005 > > Visit http://www.jboss.com/services/certification for > more information > > _______________________________________________ > > Wicket-user mailing list > > Wicket-user@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today * Register for a JBoss Training Course Free Certification Exam for All Training Attendees Through End of 2005 Visit http://www.jboss.com/services/certification for more information _______________________________________________ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user