Maybe RequestCycle.onBegin/EndRequest is what you are looking for?

Juergen

On 11/7/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> Hi Igor,
>
> >here is something i threw together that solves the deserialization 
> >>andability to use the new operator to create pages.
>
> thanks for your work on this.
>
> Regretfully it's still a solution I wouldn't like to use:
> IMHO dependency injection should not be done by the object which has the 
> dependency. Yes, you've hidden the lookup in a base class, but nevertheless I 
> still think that this is the wrong way around.
>
> Regarding what Eelco has written:
> > And... for this whole discussion: if you like one approach... go
> > implement it now! Create your own component factory, annotations
> > processor, aop, and please contribute when you've got something nice
> > working. Or let us know when you need specific changes to Wicket to
> > support your needs. We'll most probably honor such requests if they
> > are reasonable as we've done in the past.
>
> This is exactly what I'm talking about. Wicket should provide enough hooks 
> for everybody to do *their* preferred approach - nothing more and nothing 
> less.
>
> It's just that I'm missing a required hook, but perhaps I've just missed it.
> beforeCallComponent() was a step in the right direction, but I'd prefer to 
> hook into such a notification outside of stateful code (i.e. a Page).
>
> If it is the Session, PageMap or RequestCycle, if it's on deserializing or 
> before calling a method doesn't matter to me - it just should happen outside 
> of the pages.
>
> Sven
>
>
> On 11/7/05, Igor Vaynberg <[EMAIL PROTECTED]> wrote:here is something i threw 
> together that solves the deserialization andability to use the new operator 
> to create pages. atleast i think itdoes....its really late here and all i 
> really know so far is that itcompiles :)
>
> the idea is pretty simple, do the injection in the default constructor,and 
> then do it anytime the object is deserialized. you use [EMAIL PROTECTED] 
> annotation to denote the dependency. it can either be usedon a field or on a 
> setter. If you specify the bean name it will be usedto find the bean, if you 
> dont then the field's type or the settersargument type will be used for the 
> lookup.
>
> -Igor
>
>
>
> On 11/7/05, Igor Vaynberg <[EMAIL PROTECTED]> wrote:and you have to have the 
> pages defined as beans in the application context? with their properties 
> specified?
>
> -Igor
>
>
>
>
> On 11/7/05, Igor Vaynberg <[EMAIL PROTECTED]> wrote:but how does the above 
> handle deserealization of pages? there is nothing to reinject the 
> dependencies.
>
> -Igor
>
>
>
>
> On 11/7/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:IMHO pages are 
> standing on the borderline between a stateful GUI and the rest of the 
> application in form of stateless services.
> DIshould be done by the IoC container, creating the pages can better bedone 
> the standard Wicket way (e.g. with PageParameters).
>
> As described before I'm using a custom page factory that cooperates with a 
> wrapped page factory and the containing bean factory:
>
> public class SpringInjectingPageFactory implements IPageFactory, 
> BeanFactoryAware {
>
>  private AutowireCapableBeanFactory beanFactory;
>  private IPageFactory pageFactory;
>
>  public void setPageFactory(IPageFactory pageFactory) {
>  this.pageFactory = pageFactory;
>  }
>
>  public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
>  this.beanFactory = (AutowireCapableBeanFactory)beanFactory;
>  }
>
>  public Page newPage(Class pageClass) {
>  Page page = this.pageFactory.newPage(pageClass);
>
>  injectDependencies(page, pageClass.getName());
>
>  return page;
>  }
>
>  public Page newPage(Class pageClass, PageParameters parameters) {
>  Page page = this.pageFactory.newPage(pageClass, parameters);
>
>  injectDependencies(page, pageClass.getName());
>
>  return page;
>  }
>
>  private void injectDependencies(Page page, String beanName) {
>  if (this.beanFactory.containsBean(beanName)) {
>    this.beanFactory.applyBeanPropertyValues(page, beanName);
>  }
>  }
> }
>
> Note that if you don't specify a name or id attribute for beans, they will be 
> registered under their classname in Spring.
> AndNO, I don't use autowiring: applyBeanPropertyValues() does not 
> autowirealthough it is located in AutowireCapableBeanFactory.
>
> Sven
>
> >you are right, this is not ioc. but are pages/components managed by an ioc
> >container?
> >-Igor
> >
> >
> >On 11/6/05, Alexandru Popescu <[EMAIL PROTECTED]> wrote:
> >>
> >> #: Igor Vaynberg changed the world a bit at a time by saying on 11/6/2005
> >> 7:06 PM :#
> >> > Or how about a simple solution:
> >> >
> >> > public MyApplication extends WebApplication {
> >> > public Object lookup(String name) {
> >> > Object=...do a lookup from somewhere like spring context or app
> >> object...;
> >> > return object;
> >> > }
> >> > }
> >> >
> >> > public MyPage extends Page {
> >> > public transient SomeService service;
> >> >
> >> > public SomeService getService() {
> >> > if (service==null) {
> >> > service=getApplication().lookup(SomeService.class.getName());
> >> > }
> >> > return service;
> >> > }
> >> >
> >> > I know its not quiete as elegant as ioc but it has none of the
> >> performance
> >> > hits an automatic injection would cause if it would be done on
> >> > deserialization of every component. Also its a lazy lookup so you dont
> >> do it
> >> > until its needed, and its only done once per page (until it gets
> >> > deserialized).
> >> >
> >> > -Igor
> >> >
> >>
> >> But this was exactly what I was suggesting to avoid ;-). Lookups and
> >> factories are not ioc/di.
> >>
> >> ./alex
> >> --
> >> .w( the_mindstorm )p.
> >>
> >>
> >>
> >> -------------------------------------------------------
> >> SF.Net email is sponsored by:
> >> Tame your development challenges with Apache's Geronimo App Server.
> >> Download
> >> it for free - -and be entered to win a 42" plasma tv or your very own
> >> Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
> >> _______________________________________________
> >> Wicket-user mailing list
> >> Wicket-user@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/wicket-user
> >>
>
>
> -------------------------------------------------------
> SF.Net email is sponsored by:
> Tame your development challenges with Apache's Geronimo App Server. Download
> it for free - -and be entered to win a 42" plasma tv or your very own
> Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
> _______________________________________________
> Wicket-user mailing list
> Wicket-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>
>
> -------------------------------------------------------
> SF.Net email is sponsored by:
> Tame your development challenges with Apache's Geronimo App Server. Download
> it for free - -and be entered to win a 42" plasma tv or your very own
> Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
> _______________________________________________
> Wicket-user mailing list
> Wicket-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>


-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to