Re: How does serialization work?

2008-11-04 Thread Adriano dos Santos Fernandes
I had a serialization problem (when redeploying the application in 
Tomcat) that I can't understand... Basically, I had this on my 
Page.onBeforeRender:

---
   visitChildren(TextField.class, new VisitorTextField?() {
   private static final long serialVersionUID = 1L;

   public Object component(TextField? textField)
   {
   textField.add(new AjaxEventBehavior(onchange) {
   private static final long serialVersionUID = 1L;

   @Override
   protected void onEvent(AjaxRequestTarget target)
   {
   if (mode == Mode.NAVIGATE)
   {
   mode = Mode.EDIT;
   setupMode();
   target.addComponent(buttonPanel);
   }
   }
   });

   setupValidators(textField);
   return IVisitor.CONTINUE_TRAVERSAL;
   }
   });
---

The non-serializable class was the one created by new 
VisitorTextField? () { ... }. Creating MyVisitor and replacing this 
call solved the problem:

---
   private abstract class MyVisitorX extends Component
   implements IVisitorX, Serializable
   {
   private static final long serialVersionUID = 1L;
   }
---

Why should a non-serializable Visitor could case this problem? Does 
(why?) it get cached on the page?



Adriano


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How does serialization work?

2008-11-04 Thread Johan Compagner
thats simple

what you there create is an inner class in an inner class...

so your textfield has a ajax behavior that is an inner class fo the Visitor
inner class so that behavior has a parent reference to the visitor..
make that ajax behavior his own class and your problem is solved

johan


On Tue, Nov 4, 2008 at 4:26 PM, Adriano dos Santos Fernandes 
[EMAIL PROTECTED] wrote:

 I had a serialization problem (when redeploying the application in Tomcat)
 that I can't understand... Basically, I had this on my Page.onBeforeRender:
 ---
   visitChildren(TextField.class, new VisitorTextField?() {
   private static final long serialVersionUID = 1L;

   public Object component(TextField? textField)
   {
   textField.add(new AjaxEventBehavior(onchange) {
   private static final long serialVersionUID = 1L;

   @Override
   protected void onEvent(AjaxRequestTarget target)
   {
   if (mode == Mode.NAVIGATE)
   {
   mode = Mode.EDIT;
   setupMode();
   target.addComponent(buttonPanel);
   }
   }
   });

   setupValidators(textField);
   return IVisitor.CONTINUE_TRAVERSAL;
   }
   });
 ---

 The non-serializable class was the one created by new
 VisitorTextField? () { ... }. Creating MyVisitor and replacing this
 call solved the problem:
 ---
   private abstract class MyVisitorX extends Component
   implements IVisitorX, Serializable
   {
   private static final long serialVersionUID = 1L;
   }
 ---

 Why should a non-serializable Visitor could case this problem? Does (why?)
 it get cached on the page?


 Adriano



 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]




Re: How does serialization work?

2008-11-04 Thread Adriano dos Santos Fernandes

Johan Compagner escreveu:

thats simple

what you there create is an inner class in an inner class...

so your textfield has a ajax behavior that is an inner class fo the Visitor
inner class so that behavior has a parent reference to the visitor..
make that ajax behavior his own class and your problem is solved

Very good catch. :-) Unfortunately the exception was not helpful.

Thanks,


Adriano


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How does serialization work?

2008-11-04 Thread Johan Compagner
we still have a last x pages stored on disk.
it is just not a number of pages but it is how many pages fit in the default
window size of the file on disk (1 file per pagemap)

by default it is 10MB per pagemap and 100MB per total session.
so by default you can hold 10 pagemaps of 10MB after that least used
pagemaps are cleared.

johan


On Tue, Nov 4, 2008 at 12:48 AM, Igor Vaynberg [EMAIL PROTECTED]wrote:

 it is cleaned up when the session expires. it used to be that we only
 kept X last pages in the store, but now that we use disc that seems to
 be redundant.

 -igor

 On Mon, Nov 3, 2008 at 4:08 PM, Graeme Knight [EMAIL PROTECTED]
 wrote:
 
  Hi.
 
  I wondered another thing - how and when are the serialized objects
 cleaned
  up? Is there a mechanism for making sure large amounts of memory or disk
 are
  not soaked up by long running sessions and lots of user interactions?
 
  Thanks again, Graeme.
 
 
  Graeme Knight wrote:
 
  Timo!
 
  Thanks for your answers - so you think its better NOT to have the
  components as private member variables? I may misunderstand...
 
  'Tapestry' in Action LOL! Sorry! I'm moving over from that world
 into
  the Wicket world...
 
  Wicket in Action - VERY readable and well written, but perhaps I didn't
  get far enough along to get to the serialization parts (I'm just
 beginning
  Part 2).
 
  Cheers, Graeme.
 
  Timo Rantalaiho wrote:
 
  On Mon, 03 Nov 2008, GK1971 wrote:
  through the forum but couldn't find the answer. Couldn't find the
  answers
  from Tapestry in Action (I'm sure they are there if anyone can point
 me
  at a
  page).
 
  You might want to have a look at Wicket in Action :--)
 
  1) Exactly WHAT is getting serialized and where and when?
 
  The page, which includes its whole Component tree.
 
  2) What are the main classes in the framework responsible for
  serialization
  that I can look at (I have the source)? I guess I am after
 understanding
  the
  flow of logic.
 
  I find it easiest to start from Session.requestDetached().
  There you have
 
page.getPageMap().put(page);
 
=
 
SecondLevelCacheSessionStore.put(Page)
 
=
 
DiskPageStore.storePage(String sessionId, Page page)
 
  and there's already stuff about serialisation.
 
  I'm sure that someone can give you a more scientific answer :)
 
  3) What happens if I make userIdField and passwordField scoped to the
  constructor only? Is it common not to have them as member objects and
  why?
  (I've not tried this yet, just wondered).
 
  In here
 
  add( userIdField );
  add( passwordField );
 
  you add them as children of the constructed component.
  You can always access them for example with a visitor, if
  needed, and holding references to them makes it harder to
  replace them if needed (though it shouldn't be a problem if
  they won't be replaced).
 
  Best wishes,
  Timo
 
  --
  Timo Rantalaiho
  Reaktor Innovations OyURL: http://www.ri.fi/ 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 
 
 
  --
  View this message in context:
 http://www.nabble.com/How-does-serialization-work--tp20311180p20312968.html
  Sent from the Wicket - User mailing list archive at Nabble.com.
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]




Re: How does serialization work?

2008-11-03 Thread Timo Rantalaiho
On Mon, 03 Nov 2008, GK1971 wrote:
 through the forum but couldn't find the answer. Couldn't find the answers
 from Tapestry in Action (I'm sure they are there if anyone can point me at a
 page).

You might want to have a look at Wicket in Action :--)

 1) Exactly WHAT is getting serialized and where and when?

The page, which includes its whole Component tree.

 2) What are the main classes in the framework responsible for serialization
 that I can look at (I have the source)? I guess I am after understanding the
 flow of logic.

I find it easiest to start from Session.requestDetached().
There you have

  page.getPageMap().put(page);

  =

  SecondLevelCacheSessionStore.put(Page)

  =

  DiskPageStore.storePage(String sessionId, Page page)

and there's already stuff about serialisation.

I'm sure that someone can give you a more scientific answer :)

 3) What happens if I make userIdField and passwordField scoped to the
 constructor only? Is it common not to have them as member objects and why?
 (I've not tried this yet, just wondered).

In here

 add( userIdField );
 add( passwordField );

you add them as children of the constructed component. 
You can always access them for example with a visitor, if 
needed, and holding references to them makes it harder to 
replace them if needed (though it shouldn't be a problem if 
they won't be replaced).

Best wishes,
Timo

-- 
Timo Rantalaiho   
Reaktor Innovations OyURL: http://www.ri.fi/ 

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How does serialization work?

2008-11-03 Thread GK1971

Timo!

Thanks for your answers - so you think its better NOT to have the components
as private member variables? I may misunderstand...

'Tapestry' in Action LOL! Sorry! I'm moving over from that world into
the Wicket world... 

Wicket in Action - VERY readable and well written, but perhaps I didn't get
far enough along to get to the serialization parts (I'm just beginning Part
2).

Cheers, Graeme.

Timo Rantalaiho wrote:
 
 On Mon, 03 Nov 2008, GK1971 wrote:
 through the forum but couldn't find the answer. Couldn't find the answers
 from Tapestry in Action (I'm sure they are there if anyone can point me
 at a
 page).
 
 You might want to have a look at Wicket in Action :--)
 
 1) Exactly WHAT is getting serialized and where and when?
 
 The page, which includes its whole Component tree.
 
 2) What are the main classes in the framework responsible for
 serialization
 that I can look at (I have the source)? I guess I am after understanding
 the
 flow of logic.
 
 I find it easiest to start from Session.requestDetached().
 There you have
 
   page.getPageMap().put(page);
 
   =
 
   SecondLevelCacheSessionStore.put(Page)
 
   =
 
   DiskPageStore.storePage(String sessionId, Page page)
 
 and there's already stuff about serialisation.
 
 I'm sure that someone can give you a more scientific answer :)
 
 3) What happens if I make userIdField and passwordField scoped to the
 constructor only? Is it common not to have them as member objects and
 why?
 (I've not tried this yet, just wondered).
 
 In here
 
 add( userIdField );
 add( passwordField );
 
 you add them as children of the constructed component. 
 You can always access them for example with a visitor, if 
 needed, and holding references to them makes it harder to 
 replace them if needed (though it shouldn't be a problem if 
 they won't be replaced).
 
 Best wishes,
 Timo
 
 -- 
 Timo Rantalaiho   
 Reaktor Innovations OyURL: http://www.ri.fi/ 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 

-- 
View this message in context: 
http://www.nabble.com/How-does-serialization-work--tp20311180p20312172.html
Sent from the Wicket - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How does serialization work?

2008-11-03 Thread Graeme Knight

Hi.

I wondered another thing - how and when are the serialized objects cleaned
up? Is there a mechanism for making sure large amounts of memory or disk are
not soaked up by long running sessions and lots of user interactions?

Thanks again, Graeme.


Graeme Knight wrote:
 
 Timo!
 
 Thanks for your answers - so you think its better NOT to have the
 components as private member variables? I may misunderstand...
 
 'Tapestry' in Action LOL! Sorry! I'm moving over from that world into
 the Wicket world... 
 
 Wicket in Action - VERY readable and well written, but perhaps I didn't
 get far enough along to get to the serialization parts (I'm just beginning
 Part 2).
 
 Cheers, Graeme.
 
 Timo Rantalaiho wrote:
 
 On Mon, 03 Nov 2008, GK1971 wrote:
 through the forum but couldn't find the answer. Couldn't find the
 answers
 from Tapestry in Action (I'm sure they are there if anyone can point me
 at a
 page).
 
 You might want to have a look at Wicket in Action :--)
 
 1) Exactly WHAT is getting serialized and where and when?
 
 The page, which includes its whole Component tree.
 
 2) What are the main classes in the framework responsible for
 serialization
 that I can look at (I have the source)? I guess I am after understanding
 the
 flow of logic.
 
 I find it easiest to start from Session.requestDetached().
 There you have
 
   page.getPageMap().put(page);
 
   =
 
   SecondLevelCacheSessionStore.put(Page)
 
   =
 
   DiskPageStore.storePage(String sessionId, Page page)
 
 and there's already stuff about serialisation.
 
 I'm sure that someone can give you a more scientific answer :)
 
 3) What happens if I make userIdField and passwordField scoped to the
 constructor only? Is it common not to have them as member objects and
 why?
 (I've not tried this yet, just wondered).
 
 In here
 
 add( userIdField );
 add( passwordField );
 
 you add them as children of the constructed component. 
 You can always access them for example with a visitor, if 
 needed, and holding references to them makes it harder to 
 replace them if needed (though it shouldn't be a problem if 
 they won't be replaced).
 
 Best wishes,
 Timo
 
 -- 
 Timo Rantalaiho   
 Reaktor Innovations OyURL: http://www.ri.fi/ 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 
 

-- 
View this message in context: 
http://www.nabble.com/How-does-serialization-work--tp20311180p20312968.html
Sent from the Wicket - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How does serialization work?

2008-11-03 Thread Igor Vaynberg
as far as serialization wicket uses default java serialization with a
few tweaks to optimize it.

 Thanks for your answers - so you think its better NOT to have the components
 as private member variables? I may misunderstand...

it doesnt matter if you do this. because the page object is serialized
and those components are fields of the page they are serialized only
once and further references are replaced with links, this is how
serialization works and it preserves proper references.

-igor


 'Tapestry' in Action LOL! Sorry! I'm moving over from that world into
 the Wicket world...

 Wicket in Action - VERY readable and well written, but perhaps I didn't get
 far enough along to get to the serialization parts (I'm just beginning Part
 2).

 Cheers, Graeme.

 Timo Rantalaiho wrote:

 On Mon, 03 Nov 2008, GK1971 wrote:
 through the forum but couldn't find the answer. Couldn't find the answers
 from Tapestry in Action (I'm sure they are there if anyone can point me
 at a
 page).

 You might want to have a look at Wicket in Action :--)

 1) Exactly WHAT is getting serialized and where and when?

 The page, which includes its whole Component tree.

 2) What are the main classes in the framework responsible for
 serialization
 that I can look at (I have the source)? I guess I am after understanding
 the
 flow of logic.

 I find it easiest to start from Session.requestDetached().
 There you have

   page.getPageMap().put(page);

   =

   SecondLevelCacheSessionStore.put(Page)

   =

   DiskPageStore.storePage(String sessionId, Page page)

 and there's already stuff about serialisation.

 I'm sure that someone can give you a more scientific answer :)

 3) What happens if I make userIdField and passwordField scoped to the
 constructor only? Is it common not to have them as member objects and
 why?
 (I've not tried this yet, just wondered).

 In here

 add( userIdField );
 add( passwordField );

 you add them as children of the constructed component.
 You can always access them for example with a visitor, if
 needed, and holding references to them makes it harder to
 replace them if needed (though it shouldn't be a problem if
 they won't be replaced).

 Best wishes,
 Timo

 --
 Timo Rantalaiho
 Reaktor Innovations OyURL: http://www.ri.fi/ 

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]




 --
 View this message in context: 
 http://www.nabble.com/How-does-serialization-work--tp20311180p20312172.html
 Sent from the Wicket - User mailing list archive at Nabble.com.


 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How does serialization work?

2008-11-03 Thread Igor Vaynberg
it is cleaned up when the session expires. it used to be that we only
kept X last pages in the store, but now that we use disc that seems to
be redundant.

-igor

On Mon, Nov 3, 2008 at 4:08 PM, Graeme Knight [EMAIL PROTECTED] wrote:

 Hi.

 I wondered another thing - how and when are the serialized objects cleaned
 up? Is there a mechanism for making sure large amounts of memory or disk are
 not soaked up by long running sessions and lots of user interactions?

 Thanks again, Graeme.


 Graeme Knight wrote:

 Timo!

 Thanks for your answers - so you think its better NOT to have the
 components as private member variables? I may misunderstand...

 'Tapestry' in Action LOL! Sorry! I'm moving over from that world into
 the Wicket world...

 Wicket in Action - VERY readable and well written, but perhaps I didn't
 get far enough along to get to the serialization parts (I'm just beginning
 Part 2).

 Cheers, Graeme.

 Timo Rantalaiho wrote:

 On Mon, 03 Nov 2008, GK1971 wrote:
 through the forum but couldn't find the answer. Couldn't find the
 answers
 from Tapestry in Action (I'm sure they are there if anyone can point me
 at a
 page).

 You might want to have a look at Wicket in Action :--)

 1) Exactly WHAT is getting serialized and where and when?

 The page, which includes its whole Component tree.

 2) What are the main classes in the framework responsible for
 serialization
 that I can look at (I have the source)? I guess I am after understanding
 the
 flow of logic.

 I find it easiest to start from Session.requestDetached().
 There you have

   page.getPageMap().put(page);

   =

   SecondLevelCacheSessionStore.put(Page)

   =

   DiskPageStore.storePage(String sessionId, Page page)

 and there's already stuff about serialisation.

 I'm sure that someone can give you a more scientific answer :)

 3) What happens if I make userIdField and passwordField scoped to the
 constructor only? Is it common not to have them as member objects and
 why?
 (I've not tried this yet, just wondered).

 In here

 add( userIdField );
 add( passwordField );

 you add them as children of the constructed component.
 You can always access them for example with a visitor, if
 needed, and holding references to them makes it harder to
 replace them if needed (though it shouldn't be a problem if
 they won't be replaced).

 Best wishes,
 Timo

 --
 Timo Rantalaiho
 Reaktor Innovations OyURL: http://www.ri.fi/ 

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]






 --
 View this message in context: 
 http://www.nabble.com/How-does-serialization-work--tp20311180p20312968.html
 Sent from the Wicket - User mailing list archive at Nabble.com.


 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How does serialization work?

2008-11-03 Thread Graeme Knight

Thanks Igor! A great help! 

Where on disk are these serialized pages? I remember reading you only cache
the current page in memory. Is that correct? This serializing on disk - what
is the strategy for keeping these files in sync in a clustered environment?

Appreciate the help very much! Graeme.


igor.vaynberg wrote:
 
 it is cleaned up when the session expires. it used to be that we only
 kept X last pages in the store, but now that we use disc that seems to
 be redundant.
 
 -igor
 
 On Mon, Nov 3, 2008 at 4:08 PM, Graeme Knight [EMAIL PROTECTED]
 wrote:

 Hi.

 I wondered another thing - how and when are the serialized objects
 cleaned
 up? Is there a mechanism for making sure large amounts of memory or disk
 are
 not soaked up by long running sessions and lots of user interactions?

 Thanks again, Graeme.


 Graeme Knight wrote:

 Timo!

 Thanks for your answers - so you think its better NOT to have the
 components as private member variables? I may misunderstand...

 'Tapestry' in Action LOL! Sorry! I'm moving over from that world
 into
 the Wicket world...

 Wicket in Action - VERY readable and well written, but perhaps I didn't
 get far enough along to get to the serialization parts (I'm just
 beginning
 Part 2).

 Cheers, Graeme.

 Timo Rantalaiho wrote:

 On Mon, 03 Nov 2008, GK1971 wrote:
 through the forum but couldn't find the answer. Couldn't find the
 answers
 from Tapestry in Action (I'm sure they are there if anyone can point
 me
 at a
 page).

 You might want to have a look at Wicket in Action :--)

 1) Exactly WHAT is getting serialized and where and when?

 The page, which includes its whole Component tree.

 2) What are the main classes in the framework responsible for
 serialization
 that I can look at (I have the source)? I guess I am after
 understanding
 the
 flow of logic.

 I find it easiest to start from Session.requestDetached().
 There you have

   page.getPageMap().put(page);

   =

   SecondLevelCacheSessionStore.put(Page)

   =

   DiskPageStore.storePage(String sessionId, Page page)

 and there's already stuff about serialisation.

 I'm sure that someone can give you a more scientific answer :)

 3) What happens if I make userIdField and passwordField scoped to the
 constructor only? Is it common not to have them as member objects and
 why?
 (I've not tried this yet, just wondered).

 In here

 add( userIdField );
 add( passwordField );

 you add them as children of the constructed component.
 You can always access them for example with a visitor, if
 needed, and holding references to them makes it harder to
 replace them if needed (though it shouldn't be a problem if
 they won't be replaced).

 Best wishes,
 Timo

 --
 Timo Rantalaiho
 Reaktor Innovations OyURL: http://www.ri.fi/ 

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]






 --
 View this message in context:
 http://www.nabble.com/How-does-serialization-work--tp20311180p20312968.html
 Sent from the Wicket - User mailing list archive at Nabble.com.


 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]


 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 

-- 
View this message in context: 
http://www.nabble.com/How-does-serialization-work--tp20311180p20313794.html
Sent from the Wicket - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How does serialization work?

2008-11-03 Thread Igor Vaynberg
On Mon, Nov 3, 2008 at 5:09 PM, Graeme Knight [EMAIL PROTECTED] wrote:
 Where on disk are these serialized pages?

i would imagine in a tmp dir, i would have to look in code for the
exact location - you can do the same

 I remember reading you only cache
 the current page in memory. Is that correct?

yes, when using the diskstore only the current page is in httpsession.
the other pages are only needed if the user uses the back button.

 This serializing on disk - what
 is the strategy for keeping these files in sync in a clustered environment?

standard http session replication. when a node receives a page from
another node via session replication it adds it to its own local
diskstore.

-igor



 Appreciate the help very much! Graeme.


 igor.vaynberg wrote:

 it is cleaned up when the session expires. it used to be that we only
 kept X last pages in the store, but now that we use disc that seems to
 be redundant.

 -igor

 On Mon, Nov 3, 2008 at 4:08 PM, Graeme Knight [EMAIL PROTECTED]
 wrote:

 Hi.

 I wondered another thing - how and when are the serialized objects
 cleaned
 up? Is there a mechanism for making sure large amounts of memory or disk
 are
 not soaked up by long running sessions and lots of user interactions?

 Thanks again, Graeme.


 Graeme Knight wrote:

 Timo!

 Thanks for your answers - so you think its better NOT to have the
 components as private member variables? I may misunderstand...

 'Tapestry' in Action LOL! Sorry! I'm moving over from that world
 into
 the Wicket world...

 Wicket in Action - VERY readable and well written, but perhaps I didn't
 get far enough along to get to the serialization parts (I'm just
 beginning
 Part 2).

 Cheers, Graeme.

 Timo Rantalaiho wrote:

 On Mon, 03 Nov 2008, GK1971 wrote:
 through the forum but couldn't find the answer. Couldn't find the
 answers
 from Tapestry in Action (I'm sure they are there if anyone can point
 me
 at a
 page).

 You might want to have a look at Wicket in Action :--)

 1) Exactly WHAT is getting serialized and where and when?

 The page, which includes its whole Component tree.

 2) What are the main classes in the framework responsible for
 serialization
 that I can look at (I have the source)? I guess I am after
 understanding
 the
 flow of logic.

 I find it easiest to start from Session.requestDetached().
 There you have

   page.getPageMap().put(page);

   =

   SecondLevelCacheSessionStore.put(Page)

   =

   DiskPageStore.storePage(String sessionId, Page page)

 and there's already stuff about serialisation.

 I'm sure that someone can give you a more scientific answer :)

 3) What happens if I make userIdField and passwordField scoped to the
 constructor only? Is it common not to have them as member objects and
 why?
 (I've not tried this yet, just wondered).

 In here

 add( userIdField );
 add( passwordField );

 you add them as children of the constructed component.
 You can always access them for example with a visitor, if
 needed, and holding references to them makes it harder to
 replace them if needed (though it shouldn't be a problem if
 they won't be replaced).

 Best wishes,
 Timo

 --
 Timo Rantalaiho
 Reaktor Innovations OyURL: http://www.ri.fi/ 

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]






 --
 View this message in context:
 http://www.nabble.com/How-does-serialization-work--tp20311180p20312968.html
 Sent from the Wicket - User mailing list archive at Nabble.com.


 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]




 --
 View this message in context: 
 http://www.nabble.com/How-does-serialization-work--tp20311180p20313794.html
 Sent from the Wicket - User mailing list archive at Nabble.com.


 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How does serialization work?

2008-11-03 Thread Timo Rantalaiho
On Mon, 03 Nov 2008, Graeme Knight wrote:
 Where on disk are these serialized pages? 

Servlet context temporary directory, which can be something
like /tmp/ or %HOME%\Local Settings\Temp . It can be changed
in web.xml (and I suppose that whether it's the servlet 
context temp dir or some other place can be changed with 
some Wicket setting or by providing a custom pagestore).

I remember seeing a presentation by Johan on some of this
stuff on slideshare.net .

Best wishes,
Timo

-- 
Timo Rantalaiho   
Reaktor Innovations OyURL: http://www.ri.fi/ 

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How does serialization work?

2008-11-03 Thread Timo Rantalaiho
On Mon, 03 Nov 2008, Igor Vaynberg wrote:
 it doesnt matter if you do this. because the page object is serialized
 and those components are fields of the page they are serialized only
 once and further references are replaced with links, this is how
 serialization works and it preserves proper references.

Right, it doesn't matter from the serialisation point of 
view, but if you replace the component in the component 
hierarchy, you should make sure that you also update these
references to point to the new component instances. 

That's why I prefer accessing child components dynamically
whenever it can be easily done.

Best wishes,
Timo


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]