Do you mean when you construct the page you do something like
MyPage page = (MyPage) wrapInProxy(new MyPage(..));
and wrapInProxy does create the Proxy and does all the injection?
On Mon, 7 Nov 2005 11:56:23 -0800, Igor Vaynberg
<[EMAIL PROTECTED]>
wrote:
> yeah, i was thinking cglib and extract at runtime
> never used cglib before though
>
> that way you just wrap the page with the proxy after you create it and
> there
> is no need to worry about serialization/deserialiation garbage
>
> -Igor
>
>
> On 11/7/05, Christian Essl <[EMAIL PROTECTED]> wrote:
>>
>> The interface of the setter parameter or of the field type. Of
course a
>> restriction. If you want more you could use cglib (or spring aop).
Don't
>> know.
>>
>>
>>
>> On Mon, 7 Nov 2005 11:27:28 -0800, Igor Vaynberg
>> <[EMAIL PROTECTED]>
>> wrote:
>>
>> > what interface would you use for the proxy though?
>> > -Igor
>> >
>> >
>> > On 11/7/05, Christian Essl <[EMAIL PROTECTED]> wrote:
>> >>
>> >> Thanks for the clarification and sorry for the confusion. So
>> >> readObject()
>> >> as you have it in your code is fine.
>> >>
>> >> > To get the bean context i simply make my applicationbean
implement
>> >> > applicationcontextaware and then i use
>> >> > ((MyApplication)Application.get()).getBeanContext() static
lookup
>> >> which
>> >> > works because application object is always present.
>> >>
>> >> Still one question. The threadlocal used in Application.get() is
set
>> at
>> >> the beginning of a request - on the request thread. I do not know
but
>> >> maybe the deserialization of the session could happen outside of a
>> >> request
>> >> - even in a totally different thread?
>> >>
>> >> Maybe in readObject() a dynamic proxy could be injected which
>> triggers
>> >> on
>> >> first access the onInject() method.
>> >>
>> >> Christian
>> >>
>> >> >
>> >> > -Igor
>> >> >
>> >> >
>> >> > On 11/7/05, Christian Essl <[EMAIL PROTECTED]> wrote:
>> >> >>
>> >> >> On Mon, 7 Nov 2005 15:25:29 +0100, Johan Compagner
>> >> >> <[EMAIL PROTECTED]>
>> >> >> wrote:
>> >> >>
>> >> >> > And there is also a thing like XML Serialization
>> >> >> > Which also doesn't use the java read/write object at all.
>> >> >> >
>> >> >>
>> >> >> Does this mean that the readObject is guaranteed to be called
on
>> Page
>> >> >> because it is serialized through the PageMap and is not a
direct
>> >> session
>> >> >> attribute?
>> >> >>
>> >> >> I don't get realy clear with 'Serializable closure' in the
spec:
>> >> >>
>> >> >> "Developers are not guaranteed that containers will call
>> readObject
>> >> and
>> >> >> writeObject methods on
>> >> >> session attributes if they implement them, but are guaranteed
that
>> >> the
>> >> >> Serializable closure of their attributes will be preserved."
>> >> >>
>> >> >> And if readObject() gets called on Pages can I than acess
somehow
>> the
>> >> >> ApplicationContext to get to the BeanContext?
>> >> >>
>> >> >> Please help.
>> >> >>
>> >> >> Thanks,
>> >> >> Christian
>> >> >>
>> >> >> >
>> >> >> > On 11/7/05, Christian Essl <[EMAIL PROTECTED]> wrote:
>> >> >> >>
>> >> >> >> Hi Igor,
>> >> >> >>
>> >> >> >> I looked through your code. Thanks for implementing it. I am
>> not
>> >> sure
>> >> >> >> wheter readObject() is the right place to do the
(re)injection.
>> >> >> >> According
>> >> >> >> to the servlet-spec in SVR 7.7.2 readObject() is not
guaranteed
>> to
>> >> be
>> >> >> >> called on session-attributes. (Instead session attributes
which
>> >> >> >> implement
>> >> >> >> HttpSessionActiviationListeners are informed on
>> deserialization).
>> >> >> Even
>> >> >> >> if
>> >> >> >> readObject is called I am not sure wheter there is an
>> >> >> ApplicationContext
>> >> >> >> to get to the BeanContext.
>> >> >> >>
>> >> >> >> I don't know wheter wicket has a mean to propogate these
>> >> >> >> HttpSessionEvents
>> >> >> >> on deserialization or a similar callback? If so I guess you
>> could
>> >> do
>> >> >> the
>> >> >> >> (re)injection there.
>> >> >> >>
>> >> >> >> Christian
>> >> >> >>
>> >> >> >> On Mon, 7 Nov 2005 01:13:31 -0800, Igor Vaynberg
>> >> >> >> <[EMAIL PROTECTED]>
>> >> >> >> wrote:
>> >> >> >>
>> >> >> >> > here is something i threw together that solves the
>> >> deserialization
>> >> >> and
>> >> >> >> > ability to use the new operator to create pages. atleast i
>> think
>> >> it
>> >> >> >> > does....its really late here and all i really know so far
is
>> >> that
>> >> >> it
>> >> >> >> > compiles :)
>> >> >> >> >
>> >> >> >> > the idea is pretty simple, do the injection in the default
>> >> >> >> constructor,
>> >> >> >> > and
>> >> >> >> > then do it anytime the object is deserialized. you use a
>> >> >> @SpringBean
>> >> >> >> > annotation to denote the dependency. it can either be used
>> on a
>> >> >> field
>> >> >> >> or
>> >> >> >> > on
>> >> >> >> > a setter. If you specify the bean name it will be used to
>> find
>> >> the
>> >> >> >> bean,
>> >> >> >> > if
>> >> >> >> > you dont then the field's type or the setters argument
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.
>> >> >> >> >> > > DI should be done by the IoC container, creating the
>> pages
>> >> can
>> >> >> >> >> better
>> >> >> >> >> > > be done 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.
>> >> >> >> >> > > And NO, I don't use autowiring:
>> applyBeanPropertyValues()
>> >> does
>> >> >> >> not
>> >> >> >> >> > > autowire although 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
>> >> >> >> >> > > >> [email protected]
>> >> >> >> >> > > >>
>> 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
>> >> >> >> >> > > [email protected]
>> >> >> >> >> > >
https://lists.sourceforge.net/lists/listinfo/wicket-user
>> >> >> >> >> > >
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> --
>> >> >> >> Christian Essl
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> ___________________________________________________________
>> >> >> >> Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos
-
>> Hier
>> >> >> >> anmelden: http://mail.yahoo.de
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> -------------------------------------------------------
>> >> >> >> 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
>> >> >> >> [email protected]
>> >> >> >> https://lists.sourceforge.net/lists/listinfo/wicket-user
>> >> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Christian Essl
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >> ___________________________________________________________
>> >> >> Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos -
Hier
>> >> >> anmelden: http://mail.yahoo.de
>> >> >>
>> >> >>
>> >> >>
>> >> >> -------------------------------------------------------
>> >> >> 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
>> >> >> [email protected]
>> >> >> https://lists.sourceforge.net/lists/listinfo/wicket-user
>> >> >>
>> >>
>> >>
>> >>
>> >> --
>> >> Christian Essl
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> ___________________________________________________________
>> >> Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier
>> >> anmelden: http://mail.yahoo.de
>> >>
>> >>
>> >>
>> >> -------------------------------------------------------
>> >> 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
>> >> [email protected]
>> >> https://lists.sourceforge.net/lists/listinfo/wicket-user
>> >>
>>
>>
>>
>> --
>> Christian Essl
>>
>>
>>
>>
>>
>> ___________________________________________________________
>> Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier
>> anmelden: http://mail.yahoo.de
>>
>>
>>
>> -------------------------------------------------------
>> 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
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/wicket-user
>>
--
Christian Essl
___________________________________________________________
Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier
anmelden: http://mail.yahoo.de
-------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user